<!--{{{-->
<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]];}

.wizard .notChanged {background:transparent;}
.wizard .changedLocally {background:#80ff80;}
.wizard .changedServer {background:#8080ff;}
.wizard .changedBoth {background:#ff8080;}
.wizard .notFound {background:#ffff80;}
.wizard .putToServer {background:#ff80ff;}
.wizard .gotFromServer {background:#80ffff;}

#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 0 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0 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:0 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 0.3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

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

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

.tiddlerPopupButton {padding:0.2em;}
.popupTiddler {position: absolute; z-index:300; padding: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 0;}
.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 0 0 0.5em;}
.tab {margin:0 0 0 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 0 14em;}

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

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

.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:0 0.25em; padding:0 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 0; font-size:.9em;}
.editorFooter .button {padding-top:0px; padding-bottom:0px;}

.fieldsetFix {border:0; padding:0; margin: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;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0; right:0;}
#backstageButton a {padding:0.1em 0.4em; margin:0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; width:90%; margin-left:3em; padding:1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding: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;}
noscript {display:none;} /* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
}
/*}}}*/
<!--{{{-->
<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 [[ToolbarCommands::ViewToolbar]]'></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 [[ToolbarCommands::EditToolbar]]'></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 excludeLists'></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>>
[<img[http://lostcoastgaming.com/files/images/Pris_Field_Glasses.jpg]] ''Description:'' The Portable Radiation Image System (PRIS) can be set to observe images in the spectrum range from infrared to gamma rays. The front surface of the PRIS is transparent to all radiation; just behind it is a series of lenses tailored to different bands. 

Magnification strength is adjustable up to about 225X -- a built in flywheel for gyroscopic stabilization insures a steady field view at all magnifications, a gyrocompass provides direction, and a laser range finder is accurate up to about 25 km. 

''PRIS Field Glasses:'' //(Total: 45 Active Cost, 17 Real Cost) +15 versus Range Modifier for Sight Group (23 Active Points); OAF (Concentration, Must Concentrate throughout use of Constant Power (½ DCV; -½), Real Technology (¼) (Real Cost: 8) plus Infrared Perception (Sight Group) (5 Active Points); OAF (‑1), Real Technology (¼) (Real Cost: 2) plus Ultraviolet Perception (Sight Group) (5 Active Points); OAF (‑1), Real Technology (¼) (Real Cost: 2) plus Absolute Range Sense (3 Active Points); OAF (‑1), Real Technology (¼) (Real Cost: 1) plus Absolute Time Sense (3 Active Points); OAF (‑1), Real Technology (‑¼) (Real Cost: 1) plus Detect True North 14- (Unusual Group) (6 Active Points); OAF (‑1), Real Technology (¼) (Real Cost: 3). Total Cost: 17 points.//

''Cost:'' 12,000 Denarii
''Weight:'' 2 kg
----
|''Type:''|file|
|''URL:''|http://www.tiddlytools.com/#AliasPlugin|
|''Workspace:''|(default)|

This tiddler was automatically created to record the details of this server
A light hum was the first thing that penetrated Daniel's consciousness. It went on, then off; on, then off in a rhythmic pattern. This had been happening every morning now for the last seven or so years, but it still took a moment for his sleep hazed mind to realize that Zen was trying to wake him up as instructed.

With a reluctant groan he rolled over onto his back. "Yes Zen. Thank you." The delicious smell of hot coffee was helping his return to the waking world right along. There would be bear claw on that tray too, and his morning paper.

"You have slept seventeen minutes longer than you requested," Zen informed him in a modulated monotone. The voice was as pleasantly female as Daniel could make it, because he preferred it that way. It was not quite mechanical, but like most affordable domestic robots, Zen lacked the necessary programming to fully humanize its voice. The bulk of Zen's computing power was given over to reliably accomplishing the tasks for which it had been built in virtually any domestic or even light commercial environment.

One of the tasks it was expected to perform was to learn its owners predilections about a great many things. And one of Daniel's predilections was not to be overly bugged when waking up. So, with out another word, Zen left the room, its grav plates humming quietly. Breakfast was its next task. Somewhere in its mechanical brain Zen had stored the knowledge of its owner's morning routine, all twenty seven variations on that routine, and was capable of computing with decent reliability which variations led to which other variations of the usual schedule at this time of day for this time of year.

Daniel Brookman liked to think of himself as a renaissance man, even though he knew it wasn't entirely true. There was Zen, not exactly as romantic as a butler , but definitely cheaper and more efficient. There was his newspaper, delivered to his electronic book in electronic form each morning. Definitely not as personal as the feel of paper and the smell of ink, but again, considerably cheaper and faster than the old fashioned way. Especially on ~Deneb-Theta. Sol sector's financial capital, and known as "Wall Street West" by its mostly human financial traders (because Deneb is "west" of Sol on the Imperial star chart top down view); the truth was, since the collapse of Sol a century ago, Deneb now //was// Wall Street.

The venerable old Wall Street Journal that glowed out at him on his screen had gone through many changes since the old paper days of Wall Street, New York, New York. But it still served the same purpose: It talked business and economics. Only now, its range was measured in hundreds of light years rather than thousands of miles. A bit of irony for a man like Daniel whose only familiarity with space travel was visiting its mining operations here in the Deneb system. 

True, like every school boy he could point out a hundred different star systems on the Star Chart; he could recite the last 10 emperors of the Aureleous Imperium; he knew the exact coordinates that demarked the border between the Empire of Durakan and the Ackálian Empire along the main trade route; and he knew the names and locations of the main planets that bordered the Neutral Zone and Imperial controlled space. But it was all intellectual information. Or perhaps Imperial programming. Like most people, he'd never bothered to question the importance of the information, or even the rule of the Empire. They were simply things that were, like air and water. One didn't spend a lot of time thinking about them.

Just before .876 (9am) Daniel left his condo flat and headed for the transport station. He had a car and a bike (both grav, of course), but those modes of travel were for `outside' destinations -- places that didn't have `T-stations' either in the building or nearby. Inside Sippar City, as in most other modern cities in the Empire, personal transportation routes were almost non-existent.

The T-station on his floor comprised some twenty individual enclosed pads. "Axel Mining office building, main campus, 256th floor, section D," he murmured after placing his hand on the hand scanner. Seconds later the door to the transporter pad opened and he stepped in. Seconds after the door closed the view faded and a new view appeared. The door opened and he walked down the hall to his office at Axel Mining Inc.

The morning was spent in another day of boring meetings with engineers of all stripes. Most of them occurred holographically, as the engineers were in various places either around the planet or in orbital stations. Axel Mining owned virtually all the mining rights in the Deneb system. Rights the Empire guaranteed  the company even if it had to bring in the Navy and Legions for enforcement. Which meant Daniel was guaranteed a job for life, and a healthy pension upon retirement. All of which made the annoyance of dealing with engineers worth the trouble.

Daniel was a money man, not a mining expert. But in order to properly manage his company's assets he had to understand the problems and successes the company's `hard' money makers were facing. And the hard money makers were the engineers and operators that kept the machines and robots gainfully employed exploiting the wealth of the Deneb system.

By .0833 (2pm) Daniel was adjusting Axel Mining's financial position on the Imperial Market. Because he was on Deneb, his stated policy was to stick to companies whose securities traded on the Deneb //commutavi// (exchange). As the Deneb market covered nearly all mature companies on this side of the Neutral Zone and many up and coming Imperial corporations on the other side, it was never hard to find ways to secure his company's wealth -- and therefore the wealth of the employees -- which he considered his first order of business.

By .2083 (5pm) Daniel was finished. And dinner out sounded much better than dinner in. Deneb's middle class, like the middle class everywhere, had to settle for either fast food or family diners. Establishments where it was hard to find a living soul outside of the patrons. If you wanted a beating heart to wait on you, you had to move to chef run establishments that catered to the upper classes -- and the occasional middle class customer out for a special occasion.

Daniel was not middle class, though he pretty much lived like one. And as much as he liked Zen, he really didn't like having serving bots wait on him at dinner. Especially since he was hoping Shelly would join him. But if one didn't want a robot for a server, that pretty much left Myri. Either fortunately or unfortunately, Deneb had been originally settled by the Duranaki. And where you found Duranaki, you inevitably found Myri. And even though the Duranaki were now mostly gone (save for their inevitable roles in provincial government), the Myri, as history shows the Myri always do, stayed.

One of his favorite restaurants was Stavini's. It was still owned by the same family that had settled on Deneb directly from Earth. The current owner could trace his lineage clear back to the old family restaurant in Florence Italy. In deference to ancient Earth tradition, Giovanni Stavini employed Myris as cooks, rather than robots. The males cooked, their wives (or wives to be) waited tables. The entire staff lived in the upper floors of the building over the restaurant. Giovanni and his family lived in the penthouse suite.

Giovanni had once told Daniel his grandfather had tried paying his Myri staff a wage and letting them make their own decisions, but the complexities of modern life seemed to confuse them. So like the Duranaki, he ended up providing for them. Strangely (to the human mind), they seem quite happy -- despite his having to keep the females on strict birth control.

By .4166 (10pm) Daniel and Shelly had reappeared in the same T-station he'd left this morning. She would be spending the night. Variation complex 1,243 in Zen's library of its owner's habits and variations.
<<gradient vert #ffffff #ffdddd #ff8888>>
In the last story I wrote for the game I had a pirate ship refueling on a gas giant. I described the planet's surface as being like that of "a giant snow cone". This was based on some information I had obtained somewhere (old Traveller stuff, I think) that is now known to be incorrect. 

Not only that, but what we've learned about gas giants in the last fourteen or fifteen years from Voyagers I and II and from the Galileo probe, as well as from more sophisticated spectrographic analysis and radio telescopic studies has vastly increased our understanding of these planets. Some of the information we've learned is useful gaming fodder. Some is good just for color, and some actually adds to the detail and structure of the game.

The first point to keep in mind is: ''The closest gas station might //not// be the next gas giant on your course!''

[>img[Jupiter|http://rpg-fusion.com/files/ALDE/jupiter2.png]]Not all gas giants are created equal. Their primary chemical constituencies differ, making some ideal for refueling purposes while others are virtually useless. Fortunately,  gas giants come with a kind of "refueling sign" that can often tell a even the average observer what the largest part of a gas giant's chemical makeup is. A close spectrographic analysis using the ship's enhanced visual and IR sensors can, with the aid of computer modeling, usually tell whether a questionable gas giant (i.e. an "ice giant") has enough liquid hydrogen present to make refueling possible. But sometimes  even the instruments and computer models can be wrong. So... Just how desperate are you?

[>img[Saturn|http://rpg-fusion.com/files/ALDE/saturn2.png]]The pictures at right are of Jupiter and  Saturn. Jupiter and Saturn are examples of "sure bet" gas giants. (Note the colors in the pictures. Ruddy browns and whites.) Which also means planets like them are going to be a //very// popular -- perhaps even be guarded refueling planets. Samples tested by the Galileo probe indicated that 80 percent of the Jovian atmosphere is Hydrogen H~~2~~, with helium (He) constituting almost all of the remaining 20 percent. And Jupiter's interior must have essentially the same composition in order to yield the observed low density. Saturn is a bit heavier, meaning it probably has a "solid" core, but its main constituents are almost identical. As you move toward the surface of either planet the temperature and pressure continue to increase, reaching the values at which hydrogen first liquefies and then assumes a metallic, highly conducting state. 

It's the surface liquid H~~2~~ that must be found for fuel. Atmospheric hydrogen is not concentrated enough to be of any use in refueling. The ship would burn it faster than it could collect it. Metallic hydrogen too, is unsuitable, as it's gone through a "phase change", though it's only rarely found close enough to the surface to be a bother.

[<img[Neptune|http://rpg-fusion.com/files/ALDE/neptune1.png]]Then there are gas giants like Neptune and Uranus. Technically they're more "ice giants" than gas giants. Their mantles mostly composed of water, ammonia, and methane; and the atmosphere is mostly methane, which is what gives them their distinctive blue color.

Ships that stop on a gas giant like Neptune or Uranus for a speculative refueling stop could easily find themselves trapped "on the surface." If they're too low on fuel to escape the planet's gravity and they're unable to find enough liquid hydrogen H~~2~~ to refuel, Uranus might be their last stop.

''Big gas giants present some interesting challenges.''  Big gas giants are basically wanna be stars that are just too small to sustain a nuclear fusion reaction. Jupiter, for instance, would have to be almost 80 times larger to have enough mass to ignite a nuclear furnace. That said, it //does// radiate about twice as much energy as it receives from the sun. A fact that gives it some other interesting properties -- and it's hardly unique!. In fact, if a gas giant gets //too// big it becomes a "brown dwarf". A miniature  star.

But because it self radiates, the upper atmospheres of large gas giants are very //very// turbulent, with violent wind patterns changing almost at random and velocities exceeding 650 km/h. Lightening storms on these big giants might be ten times less frequent than on Earth, but when they start, they too are extremely violent, containing ten times more energy than a Terran lightening bolt. 

Clearly, hiding/refueling near the surface of a massive gas giant such as Jupiter (or The ~Twins-Epsilon, or any other big gas giant) might be necessary, but it's not exactly going to be a pleasure cruise.

And then there's the space around the planet. There's a reason gas giants have a tendency to collect moons. They're big, and so have equally big barycenters. Big gas giants like Jupiter are so big, in fact, they have their own set of trojan points that usually collect an inordinate amount of space junk: Dust, asteroids, and so on. Which is in part why most gas giants have some sort of ring. (In fact, all four of our gas giants have rings, not just Saturn. But the rings around the others are so faint they're either not visible from Earth, or require a powerful telescope to see.)

''But  the smaller gas giants aren't much better.'' Little Neptune's winds have been clocked at over 2,200 km/h, the highest known winds of any planet in the solar system! A lot of things are air born at 2,200 km/h; most of them aren't good for your ship's health. And then there's the minor matter of trying to keep a starship hovering smoothly over a hot lake of liquid hydrogen with 2,000 km/h winds gusting around you. Don't //even// fail that piloting roll!
At the Spinward and Rimward edges of the Imperial Provinces lies the Ackál Sectors (North & South); home of the (relatively) tiny Ackálian Empire. It is tiny because the Ackálians have considerable trouble operating in large military formations. Conquests, though necessary for Ackálian survival (they are ravenous consumers), can only be obtained by small bands. Officially, for each conquered world the Empress appoints a //gómralt//, or "planetary governor" to manage things on each conquered world. In practice, the leader of the band conquering the world becomes the //gómralt//.

This point was driven home some ten (Standard) years ago, in '602, when several bands of Ackálians plunged over the border into the Provinces, capturing three poorly defended systems. It didn't take long for the Ackálian pattern of conquest to become clear to the advisers of Janus Ælianus the (then) provincial //dux// (general of the provincial legions): Conquest, enslavement of the local population, followed by rapid exploitation of the resources -- which included the inhabitants.

To make a point, Dux Ælianus dispatched one legion to each system with orders to kill every Ackálian on the planet -- save one. The lone survivor was to be put on a ship and sent back to the Empress.

At that time the Empire knew very little about the Ackálian Empire. What little information that was available came from the inhabitants of the [[Neutral Zone]], which by definition meant it was unreliable.

The Empire knew, for instance, that the Ackálian Empire was ruled by an Empress (current Empress is the Shairaka, who is very young and only in her second year of rule). But they did not know until recently that the Empress rules through her //shulgars// (chancellors, all female) who oversee almost everything on Her behalf. They did not know of the //gómralts//, or the amount of freedom the //gómralts// have in administering conquered worlds. And they had only suspicions about the inability of the Ackálians to organize into large, complex, military units.

In '620 the Empress signed a peace treaty with the Emperor of Durakaan, and then sent a //Na'tesh// (High Consul) to the Provincial Capital on [[Fexao]]. Since then, High Consul Angrata has done a good job of charming the Imperial Government. A scholar of Imperial political science and history before turning diplomat, she has a deep interest the Empire of Durakaan and how its ways might improve life for the Ackálians. She can discuss Imperial customs, history and culture intelligently even with the Consuls and Tribunes. And, she speaks several Imperial languages fluently -- including English. In the five years she's been on [[Fexao]] she's become well known in political social circles and is said to possess great wit and charm -- though she's also known as a tough, clever negotiator. Something the [[Fex]] especially, greatly admire.
To the human eye, an Ackálian is not a pleasant creature. Some even go so far as to say they look horrific. Powerful carnivores, their features are an odd mix of mammal and insect. Bipedal, they have powerful arms and legs with four claw tipped fingers and an opposable thumb, and five claw tipped toes. They also have a powerful tail. IN addition to teeth designed to easily rip through flesh, they have two sharp mandibles with which to entrap prey, preventing them from escaping their jaws. They also have not two, but //four// eyes. Two human sized eyes are set somewhat lower in the skull than a humans eyes, and two much larger eyes are set into the forehead that see only, and quite effectively, in the infrared spectrum. It has been said that the Ackálian is the perfect predator.

Males average about 6' in height, are rather stocky, and usually look quite muscular. Females average 7' in height. But while their body lines are softer and more feminine (even to the human eye) they are much stronger than the males and dominate Ackálian society in most respects.

Ackálian culture and tradition emphasize competition, merit, and aggression. Their society is a Darwinian crucible in which the strong rule, the weak submit, and those who think themselves strong challenge their superiors. Any advantage, no matter how small or trivial, is worth struggling for -- though of course each Ackálian must judge for itself whether it's worth the effort, because working too hard to obtain something of minor value means a net loss. This makes it difficult for Ackálians to work together in large groups, since it's too common for one group member to challenge another for position or authority. Only individually, or in small groups where the hierarchy is clearly defined can Ackálians excel.

This has hindered them when they encounter species that aren't so hampered by infighting. Attempts to conquer systems under Imperial control have been easily rebuffed by the Imperial Navy and Legions. But //not// so easily that the Emperor has evidenced any interest in conquering all or part of the [[Ackálian Empire]].

/***
|Name|AliasPlugin|
|Source|http://www.TiddlyTools.com/#AliasPlugin|
|Documentation|http://www.TiddlyTools.com/#AliasPluginInfo|
|Version|1.1.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|Create text-substitution macros|
Define macros for abbreviations and other "aliases", and then embed them in the rest of your tiddler content to quickly insert common terms, phrases and links without a lot of repetitive typing.
!!!!!Documentation
> see [[AliasPluginInfo]]
!!!!!Revisions
<<<
2009.09.09 [1.1.1] 'tiddler' arg passed to wikify() so aliases containing macros render with correct context
| Please see [[AliasPluginInfo]] for previous revision details |
2005.08.12 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.AliasPlugin= {major: 1, minor: 1, revision: 1, date: new Date(2009,9,9)};
config.macros.alias= { };
config.macros.alias.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
	var alias=params.shift(); if (!alias) return; alias=alias.replace(/ /g,"_"); // don't allow spaces in alias
	if (config.macros[alias]==undefined) { // create new macro (as needed)
		config.macros[alias] = { };
		config.macros[alias].handler =
			function (place,macroName,params,wikifier,paramString,tiddler)
				{ wikify(config.macros[macroName].text.format(params),place,null,tiddler); }
	}
	config.macros[alias].text = params[0]?params.join(' '):alias;	// set alias text
}
//}}}
/***
|Name|AliasPlugin|
|Source|http://www.TiddlyTools.com/#AliasPlugin|
|Documentation|http://www.TiddlyTools.com/#AliasPluginInfo|
|Version|1.1.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|documentation|
|Description|documentation for AliasPlugin|
Define macros for abbreviations and other "aliases", and then embed them in the rest of your tiddler content to quickly insert common terms, phrases and links without a lot of repetitive typing.
!!!!!Usage
<<<
{{{
<<alias keyword "content to display">>
}}}
Select a short keyword or other abbreviated term that is easily input with just a few keystrokes.  When the {{{<<alias>>}}} macro is processed, it creates a new macro for you to embed in tiddler content, using the specified alias keyword as the name for that new macro.  You can choose any keyword you like, but don't include any spaces, as macro names must not contain spaces.

In order to ensure that your aliases are always defined and available for use, you should add your definitions to a tiddler that you are certain will be displayed when your TW is first loaded (e.g., [[MainMenu]]).  The {{{<<alias>>}}} macro itself won't actually produce any visible output, so it can be safely added to practically any tiddler without producing a change in that tiddler's appearance.

To use the aliases you have defined, simply invoke them as you would any other TiddlyWiki macro, e.g.,
{{{<<keyword>>}}}.  If you include parameters when you invoke the macro -- {{{<<keyword param param param...>>}}} -- they can be inserted direclty into the output by replacing corresponding substitution markers, indicated by using "%0" through "%9" in the "text to display" parameter used when the alias was defined.  For example, to define a quick alias for inserting a link to any given subject on www.wikipedia.com, you can write:
{{{
<<alias wikipedia "[[Wikipedia:%0|http://www.wikipedia.com/wiki/%0]]">>
}}}
which allows you to then write:
{{{
<<wikipedia TiddlyWiki>>
}}}
which is processed as if you wrote:
{{{
[[Wikipedia:TiddlyWiki|http://www.wikipedia.com/wiki/TiddlyWiki]]
}}}
and is displayed this way:
><<alias wikipedia "[[Wikipedia:%0|http://www.wikipedia.com/wiki/%0]]">><<wikipedia TiddlyWiki>>

Another interesting example uses the substitution markers to automatically display a reference to a TiddlerSlice value:
{{{
<<alias describe {{"|\<\<tiddler [[%0::Description]]\>\>|\n"}}>>
}}}
which allows you to then write:
{{{
<<describe AliasPlugin>>
}}}
which is processed as if you wrote:
{{{
|<<tiddler [[AliasPlugin::Description]]>>|
}}}
and is displayed this way:
<<alias describe {{"|\<\<tiddler [[%0::Description]]\>\>|\n"}}>><<describe AliasPlugin>>
<<<
!!!!!Revisions
<<<
2009.09.09 1.1.1 'tiddler' arg passed to wikify() so aliases containing macros render with correct context
2008.03.11 [*.*.*] plugin size reduction - documentation moved to [[AliasPluginInfo]]
2007.03.21 1.1.0 added support for parameter substitution into alias macros, using format() method and%0..%9 markers
2005.10.09 1.0.3 combined documentation and code into a single tiddler
2005.08.12 1.0.0 initial release
<<<
The artificial gill allows breathing in oxygenated water, but only functions on worlds where there is an atmosphere so that the water is oxygenated. //Life Support (Expanded Breathing  (Underwater)) (5 Active Points); OIF (-½), Functions Only On Worlds With Atmosphere 4-9 (-½). Total cost: 2  points. //


The question of whether "artificial life forms" (ALF) are "sentient beings" and therefore subject to [[Imperial Law]] is a question that has been hotly debated around the Empire for a very long time. 

It is, therefore, not a subject that will be taken up "officially" in this game. The players/characters are welcome to engage in that debate to their hearts' content. It should be noted, however, that the [[EAC]] (Emerald Authoritative Council) grants all ~ALFs "sentient" status under [[Emerald]]'s "[[Laws of Sentience | Emerald]]", and this practice is catching on among the more "progressive" planets.

At present, ALF's perform many functions on high tech worlds, both within the Empire and without. Many look and act so close to human (and in fact are deployed to perform some very, umm... -- //human// functions) as to be indistinguishable without either a ~BioScan or physical contact. (Human looking ALF's are usually much lighter for their size than a living being due to the use of carbon based "rigging" and the lack of water weight.) Unfortunately, that doesn't prevent them from being deployed on jobs so nasty, so dangerous, or so difficult consciences slave owners dare not deploy even their [[Myri]] to complete the task.

That said, if someone wants to submit an interesting, playable ALF as a PC, I will entertain the notion!

Due to the wide variety of possibilities, I will not provide a package deal here. Let me say only that, as stated above, ~ALFs should have  a decreased mass (and therefore have an increased Jump distance, ~Knock-Back penalty, and so on) which should be bought as a Physical Limitation: ½ Mass (All The Time) 15 pts.

Other things I'll be looking at/for:

* The abilities of the ALF should match its physical form. It would be inappropriate for a humanoid looking ALF to have built in blasters, for instance. But it //would// be appropriate for it to have increased strength and/or speed, inhuman vision and/or hearing, and so on.

* END use of other limits on its abilities. The more powerful the ALF, the more I'm going to be looking for equalizing factors that keep the ALF in line (active point wise) with the rest of the PC group.

* Form matching function. This is very subjective, I know. But since this //is// a science fiction game, which means we have no "real world data" on which to analyze these things, the best we can do is look at the form and see if it kinda makes sense for the functions the ALF is supposed to provide.

* I //do// see a difference in an ALF and a "robot" or "cyborg". That doesn't mean that every ALF should look human, but it //does// mean that every ALF should be capable of functioning as a life form, rather than as a logic driven animated program or a "dumb" appendage attached to a biological life form.
Like the [[Medraas]], the Athenians are not a race, but a biologically engineered race of humans. In this case, not a race produced by some "mad scientist" as in the case of the [[Medraas]], but a class of humans carefully produced and maintained in answer to them!

The smoke hadn't yet cleared the space-port before a group of women had gathered in the rubble of what had once been their dead children's classroom. By chance the women discovered they all shared something other than mere grief: Before becoming mothers, they had all been military officers. They had all seen combat. They were all blooded warriors who had led others in battle.

And they were all //pissed!//

The academes who ran [[New Home]] had, in their naivete, let this happen. Just as they had let the best hope of the human race fall into the hands of the [[Empire]] nearly a hundred years ago. <<slider NewHomeFall [[New Home Falls]] [[New Home fell on. . . ]]>>

It didn't take long for these veteran soliders and newly grieving mothers to figure out what needed to be done. In 48 hours they were aboard a ship of their own, headed to star-base [[Marcus Proximus I]], in the [[Nu Phoenicis]] system, a favorite haunt of out of work mercenaries and others looking for work in the largely lawless [[Neutral Zone]].

For blooded officers, recruiting was not hard. But they limited themselves to other women. Women without ties, women who had seen battle, women who knew how to fight. Among their catches was Doctor Martha Strange, a gynecologist with an interest in genetic engineering that had just lost her husband. And as the fledgling mercenaries needed a physician, they hired the wondering doctor, not fully realizing the treasure they had just acquired -- until later.

It was Sergeant Rebbecca Thomas that came up with the name and basic code of ethics. The little band, now almost a thousand strong, had just destroyed a pirate raid on a cargo convoy. The booty had been well worth the cost, and the women were riding high on the rush of their victory. 

"The Athenians!" She declared, hoisting a glass of procured wine. "Women who fight for justice, and whose daughters fight. And never let it be said than an Athenian ever produced a son!"

The roar of approval was thunderous. And Doctor Strange made sure the prophecy came true. A minor bit of biological manipulation was all it took. Technology centuries old. Add a bit education about selective breeding and she had a winner. Daughters that were, on average, just a bit stronger, a bit faster, than their mothers. 

And so it has progressed. 

Today the Athenians are a pain in almost ever-body's side. Well, everybody who wants to have their own way in or around [[The Neutral Zone|Neutral Zone]], anyway. They disrupt illegal slaving operations, drug runs, even attempts by out of control branches of the Imperial bureaucracy to do harm to local star systems without Imperial authority. Rumor has it they have even rescued abducted children, exacting rather sudden justice on the abductors.

Nobody knows exactly where to find the Athenians. They have no home planet or star system. If they have secret hide-outs here and there, the authorities can't seem to find them. They just seem to be there at the most opportune moments, saving lives and freeing oppressed people. And they always seem to have the latest weapons and technolgy at their disposal.

''~NonHuman Abilities''

The Athenians are humans, albeit women. While their STATS tend more to the male than the female averages, they have no intrinsic non-human abilities.

''Athenian Society/culture''

The Athenians are very martial, but with that gentle female touch that is often hard for men to understand. Individual concepts of morality and personal behavior don't really factor into Athenian society so long as it doesn't affect the whole. But one thing //is// prohibited, if one wants to remain within the Athenian ranks, and that's marriage!

Children are fine -- so long as they are female. In fact, they are almost encouraged. But selection of the male for offspring is considered of prime importance and is usually only acted upon after consultation with the woman's commander. Understand that these restrictions are for //breeding//. What other kinds of (non-reproductive) activities an Athenian might choose to indulge in her off-duty time is up to her, as long as it doesn't affect her unit or her duties.

''Appearance''

Athenian women average just slightly over 6' tall, and at an average strength of 13-, their physical abilities top those of the average human male. In some quarters it is said that this costs them in overall attractiveness. Others disagree.

Athenians are usually found wearing a light armored mesh uniform that looks something like jeans, a tee-shirt, and leather vest, along with several weapons. If an Athenian can be coaxed away from her armor and weapons, one might find her at least moderately adept (if a bit uncomfortable) in an evening gown and makeup and jewelry.

If you try, be brave!

''Racial Mixing and Interbreeding''

Nobody knows for sure who the Athenians are capable of interbreeding with. It is assumed that, as they are really no more than the product of selective breeding (sex selection not withstanding), that the same interbreeding restrictions all humans possess also apply to Athenians. But as they are the secretive sort, this hypothesis has yet to be proved or allayed.

''Applicable FATE Racial Requirements''

* 'Athenian' Aspect required

The following are minimums:
* Endurance-1 
* Strength-1
* Dex-1
* Resolve-1


'''Average' Athenian Package Deal''

By definition, there is no such thing as a "normal" Athenian anymore than there's such a thing as a "normal" Army Ranger. By definition, an Army Ranger has made his or herself an outstanding individual through rigorous training. The same can be said of the Atheninans. That said, what follows represents the "normal" Athenian who is capable of functioning at the exceptional level required of the caste. Those who do not measure up to these (minimal) standards are no longer considered Athenians. Many far exceed these minimal standards!

|!Cost|!Ability|
|  3 |+3 STR |
| 15 |+5 DEX |
| 10 |+5 CON |
|  3 |+3 INT |
|  5 |+5 PRE |
|  2 |Running +1" |
|  4 |+2 OCV with hand weapon of choice |
| 12 |+6 //versus// Range Modifier with hand weapon of choice |
|  3 |Climbing |
| 10 |Martial Arts (10 points worth of "Commando Training") |
|  3 |Security Systems |
|  3 |Paramedics |
|  3 |Navigation: Planetary |
|  3 |Stealth |
|  3 |Tracking |
|  3 |WF: Grenade launchers, General Purpose/Heavy Blasters, ~Shoulder-Fired guided Weapons |
|  3 |3 points worth of Skills from the choice list for the Basic Military Training Package Deal |
|  2 |TF: Grav vehicles |
|  2 |+2 to KS: The Military/Mercenary/Terrorist/Neutral Zone World |
|  2 |KS: Athenian History And Traditions 11- |
|  2 |Fringe Benefit: Athenian |
|  2 |Fringe Benefit: Athenian security clearance |
| ''98'' |''Total Abilities'' |
|-20|Distinctive Feature: Athenian (Concealable/Extreme) |
|-10|Hunted (As Powerful/Harsh) |
|-20|~PsychLim: Superpatriot |
|-15|Reputation: Athenian (almost always 14-) |
| ''33'' |''Total Cost of package'' |
The Aureleous Imperium is so called because it established the [[Imperial Galactic Calendar|ImperialGalacticCalendar]], and in so establishing it set the beginning of the calendar to the first day in which the [[Line of Aureleous]] regained the Imperial Throne.
The automed is a single-unit automated care facility that monitors vital signs, makes suggestions as to treatment options, and regularly injects prescribed medicines. It will initiate resuscitation on patients with failing vital signs. (This is the piece of equipment that Misha plugged Sasha into in [[Seller's Regret]] -- though Sasha's automed had been slightly enhanced with a small AI program.)

''TL:'' 9
''Cost:'' 500,000 Denarii
''Mass:'' 6 metric tons
''Size:'' 1.5 hexes long by 1 hex wide

!!Automed
| !Val | !Char | !Cost | !Roll | !Notes |
| 13 | INT | 3 | 12- | PER Roll 12- |
| 10 | DEX | 0 | 11- | OCV 3 DCV 3 |
| 2 | SPD | 0 || Phases: 6, 12 |
|>|>|>|>| ''Total Characteristic Cost:'' 3 |
| !Cost |>|>| !Powers | !END |
| 21 |>|>|Vital Signs Monitor: Detect Vital Signs 16- (Radio Group), Discriminatory, Analyze, Sense | 0 |
|>|>|>|>|''Talents'' |
| 3 |>|>|Absolute Time Sense ||
| 5 |>|>|Eidetic Memory ||
| 3 |>|>|Lightning Calculator ||
|>|>|>|>|''Skills'' |
| 3 |>|>|Paramedic 12- ||
| 5 |>|>|Medical Programming: KS: Medicine 14- ||
| 1 |>|>|Program: Monitor Vital Signs ||
| 1 |>|>|Program: Injects Scheduled Prescribed Medication ||
| 1 |>|>|Program: Initiate Emergency Treatment For Failing Vital Signs ||
|>|>|>|>|''Total Powers & Skill Cost: ''43 |
|>|>|>|>|''Total Cost:'' 46 |

Battle dress is an advanced form of combat armor, which includes STR enhancement and various powered controls.  The armor is air-tight, self-sealing, and affords the wearer full life support (Immunity All terrestrial diseases and biowarfare agents; Immunity All terrestrial diseases and biowarfare agents; Safe in High Pressure; Safe in High Radiation; Safe in Intense Cold; Safe in Intense Heat; Safe in Low Pressure/Vacuum; ~Self-Contained Breathing), in other words, the same protections as that of a [[VAC Suit]] equipped with a standard [[PLSS]].

!!~ABD-12
| !Cost | !Powers | !END |
| 7 |RF PD Laser: Missile Deflection (Any Ranged Attack) (20 Active Points); OIF Bulky (Costs Endurance (Only Costs END to Activate; -¼), OIHID (¼), Real Armor (¼), Custom Modifier (requires suit to be powered up; -¼) | 2 |
| 6 |Advanced Fire Control Package: (Total: 13 Active Cost, 6 Real Cost) Absolute Range Sense (Real Cost: 3) plus +2 with Ranged Combat (10 Active Points); OIF Immobile (‑1 ½), Real Weapon (¼), OIHID (¼), Costs Endurance (Only Costs END to Activate; -¼) (Real Cost: 3) | 1 |
| 5 |Thermal Superconducting Armor: Energy Damage Reduction, Resistant, 25%, Hardened (+¼) (19 Active Points); OIF Immobile (½), Ablative BODY or STUN (‑1), Real Armor (¼) | 0 |
| 15 |Power Supply: Endurance Reserve (120 END, 10 REC) Reserve: (22 Active Points); OIF Bulky (OIHID (¼) | 0 |
| 9 |AGrav: Flight 12” (24 Active Points); OIF Bulky (Requires A Skill Roll (½), OIHID (¼) | 2 |
| 5 |Enhanced Strength: Running +6” (12” total) (12 Active Points); OIF Bulky (‑1), OIHID (¼), Custom Modifier (requires suit to be powered up; -¼) | 1 |
| 17 |Protective Armor: Armor (16 PD/16 ED), Hardened (+¼) (60 Active Points); OIF Bulky (‑1), Ablative BODY or STUN (OIHID (¼), Real Armor (¼) | 0 |
| 6 |Environmental Protection: Life Support (Safe in High Pressure; Safe in High Radiation; Safe in Intense Cold; Safe in Intense Heat; Safe in Low Pressure/Vacuum; ~Self-Contained Breathing) (19 Active Points); OIF Bulky (‑1), Custom Modifier (Suit must be intact; -½), OIHID (¼), Costs Endurance (Only Costs END to Activate; -¼) | 2 |
| 8 |IR Damper system: Change Environment 1” radius, -4 to Infrared Perception PER Rolls, Varying Combat Effects, 2 Continuing Charges lasting 1 Hour each (+0) (21 Active Points); OIF Bulky (‑1), No Range (½), OIHID (¼) | [2 cc] |
| 2 |Enhanced Strength: +5 STR (5 Active Points); OIF Bulky (OIHID (¼) | 1 |
| 4 |Enhanced Agility: +3 DEX (9 Active Points); OIF Bulky (‑1), OIHID (¼), Custom Modifier (requires suit to be powered up; -¼) ||
|  2 |Sensory Protection: Hearing Group Flash Defense (5 points) (5 Active Points); OIF Bulky (‑1), OIHID (¼), Real Armor (¼) | 0 |
| 2 |Sensory Protection: Sight Group Flash Defense (5 points) (5 Active Points); OIF Bulky (‑1), OIHID (¼), Real Armor (¼) | 0 |
| 4 |Enhanced Reflexes: +1 SPD (10 Active Points); OIF Bulky (‑1), OIHID (‑¼), Custom Modifier (requires suit to be powered up; -¼) ||
| 4 |Psionic Shielding: Mental Defense (12 points total) (10 Active Points); OIF Bulky (OIHID (¼), Real Armor (¼) | 0 |
| 8 |Multipower, 30-point reserve, (30 Active Points); all slots OIF Bulky (-1), Custom Modifier (Only for Sensors and Commo; -1), Costs Endurance (Only Costs END to Activate; -¼), OIHID (¼) ||
| 1u |1) Communications System: Radio Perception/Transmission (Radio Group), ~MegaScale (1” = 100 km; +¾), Can Be Scaled Down 1” = 1km (+¼) (20 Active Points); OIF Bulky (‑1), Custom Modifier (Only for Sensors and Commo; -1), Costs Endurance (Only Costs END to Activate; -¼), OIHID (¼) | 2 |
| 1u |2) Sight Enhancement System: IR Perception (Sight Group), +3 to PER Roll (8 Active Points); OIF Bulky (-1), Custom Modifier (Only for Sensors and Commo; -1), Costs Endurance (Only Costs END to Activate; -¼), OIHID (¼) | 1 |
| 1u |3) GPS And Satnav system: Navigation (Air, Land, Marine, Space) 14- (15 Active Points); OIF Bulky (‑1), Custom Modifier (Only for Sensors and Commo; -1), Costs Endurance (Only Costs END to Activate; -¼), OIHID (¼) | 1 |
| 1u |4) Radar: Radar (Radio Group), ~MegaScale (1” = 10 km; +½) (22 Active Points); OIF Bulky (Custom Modifier (Only for Sensors and Commo; -1), Costs Endurance (Only Costs END to Activate; -¼), OIHID (¼) | 2 |
| 1u |5) Radscanner: Detect A Single Thing 15- (Unusual Group), Discriminatory (12 Active Points); OIF Bulky (‑1), Custom Modifier (Only for Sensors and Commo; -1), Costs Endurance (Only Costs END to Activate; -¼), OIHID (¼) | 1 |
[<img[http://rpg-fusion.com/files/ALDE/Bio-Scanner.jpg]] ''Description:'' An advancement of volatile molecular chemical analysis, the bio-scanner "sniffer" scans for evidence of biological/metabolic activity in the area. It is a highly advanced combination sampler/analyzer. Not only is the bio-scanner useful for biological studies, but it also helps with regular chemical analysis.

The unit incorporates both analyzer and collector into one. It has 2 modes and corresponding equipment: One mode for mass sampling (scanning) and one mode for minute sampling (pinpoint reading).

The evidence of biological activity must be within 1 hex (2m) of the scanner -- anything beyond 2m is undetectable. Also note that the ability to recognize and categorize a biological activity is directly dependent on how similar the sample is to sample data in the bio-scanner's memory.

''Portable ~Bio-Sniffer-13:'' //Detect A Large Class Of Things 14- (Unusual Group), Discriminatory, Analyze, 1 Continuing Charge lasting 1 Day (+0) (23 Active Points); OIF Bulky Fragile (‑1 ¼), Concentration (½ DCV; -¼). Total Cost: 10 points.//

''Cost:'' 500,000 Denarii
''Weight:'' 1.0 kg
----
/***
|Name|BreadcrumbsPlugin|
|Author|Eric Shulman|
|Source|http://www.TiddlyTools.com/#BreadcrumbsPlugin|
|Documentation|http://www.TiddlyTools.com/#BreadcrumbsPluginInfo|
|Version|2.1.2|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|list/jump to tiddlers viewed during this session plus "back" button/macro|
This plugin provides a list of links to all tiddlers opened during the session, creating a "trail of breadcrumbs" from one tiddler to the next, allowing you to quickly navigate to any previously viewed tiddler, or select 'home' to reset the display to the initial set of tiddlers that were open at the start of the session (i.e., when the document was loaded into the browser).
!!!!!Documentation
<<<
see [[BreadcrumbsPluginInfo]]
<<<
!!!!!Configuration
<<<
<<option chkCreateDefaultBreadcrumbs>> automatically create breadcrumbs display (if needed)
<<option chkShowBreadcrumbs>> show/hide breadcrumbs display
<<option chkReorderBreadcrumbs>> re-order breadcrumbs when visiting a previously viewed tiddler
<<option chkBreadcrumbsHideHomeLink>> omit 'Home' link from breadcrumbs display
<<option chkBreadcrumbsSave>> prompt to save breadcrumbs when 'Home' link is pressed
<<option chkShowStartupBreadcrumbs>> show breadcrumbs for 'startup' tiddlers
<<option chkBreadcrumbsReverse>> show breadcrumbs in reverse order (most recent first)
<<option chkBreadcrumbsLimit>> limit breadcrumbs display to {{twochar{<<option txtBreadcrumbsLimit>>}}} items
<<option chkBreadcrumbsLimitOpenTiddlers>> limit open tiddlers to {{twochar{<<option txtBreadcrumbsLimitOpenTiddlers>>}}} items

<<<
!!!!!Revisions
<<<
2009.10.19 [2.1.2] code reduction
| Please see [[BreadcrumbsPluginInfo]] for previous revision details |
2006.02.01 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.BreadcrumbsPlugin= {major: 2, minor: 1, revision: 2, date: new Date(2009,10,19)};

var defaults={
	chkShowBreadcrumbs:		true,
	chkReorderBreadcrumbs:		true,
	chkCreateDefaultBreadcrumbs:	true,
	chkShowStartupBreadcrumbs:	false,
	chkBreadcrumbsReverse:		false,
	chkBreadcrumbsLimit:		false,
	txtBreadcrumbsLimit:		5,
	chkBreadcrumbsLimitOpenTiddlers:false,
	txtBreadcrumbsLimitOpenTiddlers:3,
	chkBreadcrumbsHideHomeLink:	false,
	chkBreadcrumbsSave:		false,
	txtBreadcrumbsHomeSeparator:	' | ',
	txtBreadcrumbsCrumbSeparator:	' > '
};
for (var id in defaults) if (config.options[id]===undefined)
	config.options[id]=defaults[id];

config.macros.breadcrumbs =  {
	crumbs: [], // the list of current breadcrumbs
	askMsg: "Save current breadcrumbs before clearing?\n"
		+"Press OK to save, or CANCEL to continue without saving.",
	saveMsg: 'Enter the name of a tiddler in which to save the current breadcrumbs',
	saveTitle: 'SavedBreadcrumbs',
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var area=createTiddlyElement(place,"span",null,"breadCrumbs",null);
		area.setAttribute("homeSep",params[0]||config.options.txtBreadcrumbsHomeSeparator);
		area.setAttribute("crumbSep",params[1]||config.options.txtBreadcrumbsCrumbSeparator);
		this.render(area);
	},
	add: function (title) {
		var thisCrumb = title;
		var ind = this.crumbs.indexOf(thisCrumb);
		if(ind === -1)
			this.crumbs.push(thisCrumb);
		else if (config.options.chkReorderBreadcrumbs)
			this.crumbs.push(this.crumbs.splice(ind,1)[0]); // reorder crumbs
		else
			this.crumbs=this.crumbs.slice(0,ind+1); // trim crumbs
		if (config.options.chkBreadcrumbsLimitOpenTiddlers)
			this.limitOpenTiddlers();
		this.refresh();
		return false;
	},
	getAreas: function() {
		var crumbAreas=[];
		// find all DIVs with classname=="breadCrumbs"
		var all=document.getElementsByTagName("*");
		for (var i=0; i<all.length; i++)
			try{ if (hasClass(all[i],"breadCrumbs")) crumbAreas.push(all[i]); } catch(e) {;}
		// or, find single DIV w/fixed ID (backward compatibility)
		var byID=document.getElementById("breadCrumbs")
		if (byID && !hasClass(byID,"breadCrumbs")) crumbAreas.push(byID);
		if (!crumbAreas.length && config.options.chkCreateDefaultBreadcrumbs) {
			// no crumbs display... create one
			var defaultArea = createTiddlyElement(null,"span",null,"breadCrumbs",null);
		 	defaultArea.style.display= "none";
			var targetArea= document.getElementById("tiddlerDisplay");
		 	targetArea.parentNode.insertBefore(defaultArea,targetArea);
			crumbAreas.push(defaultArea);
		}
		return crumbAreas;
	},
	refresh: function() {
		var crumbAreas=this.getAreas();
		for (var i=0; i<crumbAreas.length; i++) {
			crumbAreas[i].style.display = config.options.chkShowBreadcrumbs?"block":"none";
			removeChildren(crumbAreas[i]);
			this.render(crumbAreas[i]);
		}
	},
	render: function(here) {
		var co=config.options; var out=""
		if (!co.chkBreadcrumbsHideHomeLink) {
			createTiddlyButton(here,"Home",null,this.home,"tiddlyLink tiddlyLinkExisting");
			out+=here.getAttribute("homeSep")||config.options.txtBreadcrumbsHomeSeparator;
		}
		for (c=0; c<this.crumbs.length; c++) // remove non-existing tiddlers from crumbs
			if (!store.tiddlerExists(this.crumbs[c]) && !store.isShadowTiddler(this.crumbs[c]))
				this.crumbs.splice(c,1);
		var count=this.crumbs.length;
		if (co.chkBreadcrumbsLimit && co.txtBreadcrumbsLimit<count) count=co.txtBreadcrumbsLimit;
		var list=[];
		for (c=this.crumbs.length-count; c<this.crumbs.length; c++) list.push('[['+this.crumbs[c]+']]');
		if (co.chkBreadcrumbsReverse) list.reverse();
		out+=list.join(here.getAttribute("crumbSep")||config.options.txtBreadcrumbsCrumbSeparator);
		wikify(out,here);
	},
	home: function() {
		var cmb=config.macros.breadcrumbs;
		if (config.options.chkBreadcrumbsSave && confirm(cmb.askMsg)) cmb.saveCrumbs();
		story.closeAllTiddlers(); restart();
		cmb.crumbs = []; var crumbAreas=cmb.getAreas();
		for (var i=0; i<crumbAreas.length; i++) crumbAreas[i].style.display = "none";
		return false;
	},
	saveCrumbs: function() {
		var tid=prompt(this.saveMsg,this.saveTitle); if (!tid||!tid.length) return; // cancelled by user
		var t=store.getTiddler(tid);
		if(t && !confirm(config.messages.overwriteWarning.format([tid]))) return;
		var who=config.options.txtUserName;
		var when=new Date();
		var text='[['+this.crumbs.join(']]\n[[')+']]';
		var tags=t?t.tags:[]; tags.pushUnique('story');
		var fields=t?t.fields:{};
		store.saveTiddler(tid,tid,text,who,when,tags,fields);
		story.displayTiddler(null,tid);
		story.refreshTiddler(tid,null,true);
		displayMessage(tid+' has been '+(t?'updated':'created'));
	},
	limitOpenTiddlers: function() {
		var limit=config.options.txtBreadcrumbsLimitOpenTiddlers; if (limit<1) limit=1;
		for (c=this.crumbs.length-1; c>=0; c--) {
			var tid=this.crumbs[c];
			var elem=document.getElementById(story.idPrefix+tid);
			if (elem) { // tiddler is displayed
				if (limit <=0) { // display limit has been reached
					if (elem.getAttribute("dirty")=="true") { // tiddler is being edited
						var msg= "'"+tid+"' is currently being edited.\n\n"
							+"Press OK to save and close this tiddler\n"
							+"or press Cancel to leave it opened";
						if (confirm(msg)) {
							story.saveTiddler(tid);
							story.closeTiddler(tid);
						}
					}
					else story.closeTiddler(this.crumbs[c]);
				}
				limit--;
			}
		}
	}
};
//}}}
// // PreviousTiddler ('back') command and macro
//{{{
config.commands.previousTiddler = {
	text: 'back',
	tooltip: 'view the previous tiddler',
	handler: function(event,src,title) {
		var here=story.findContainingTiddler(src); if (!here) return;
		var crumbs=config.macros.breadcrumbs.crumbs;
		if (crumbs.length<2) config.macros.breadcrumbs.home();
		else story.displayTiddler(here,crumbs[crumbs.length-2]);
		return false;
	}
};
config.macros.previousTiddler= {
	label: 'back',
	prompt: 'view the previous tiddler',
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var label=params.shift(); if (!label) label=this.label;
		var prompt=params.shift(); if (!prompt) prompt=this.prompt;
		createTiddlyButton(place,label,prompt,function(ev){
			return config.commands.previousTiddler.handler(ev,this)
		});
	}
}
//}}}
// // HIJACKS
//{{{
// update crumbs when a tiddler is displayed
if (Story.prototype.breadCrumbs_coreDisplayTiddler==undefined)
	Story.prototype.breadCrumbs_coreDisplayTiddler=Story.prototype.displayTiddler;
Story.prototype.displayTiddler = function(srcElement,tiddler) {
	var title=(tiddler instanceof Tiddler)?tiddler.title:tiddler;
	this.breadCrumbs_coreDisplayTiddler.apply(this,arguments);
	if (!startingUp || config.options.chkShowStartupBreadcrumbs)
		config.macros.breadcrumbs.add(title);
}

// update crumbs when a tiddler is deleted
if (TiddlyWiki.prototype.breadCrumbs_coreRemoveTiddler==undefined)
	TiddlyWiki.prototype.breadCrumbs_coreRemoveTiddler=TiddlyWiki.prototype.removeTiddler;
TiddlyWiki.prototype.removeTiddler= function() {
	this.breadCrumbs_coreRemoveTiddler.apply(this,arguments);
	config.macros.breadcrumbs.refresh();
}
//}}}
/***
|Name|BreadcrumbsPluginInfo|
|Author|Eric Shulman|
|Source|http://www.TiddlyTools.com/#BreadcrumbsPlugin|
|Documentation|http://www.TiddlyTools.com/#BreadcrumbsPluginInfo|
|Version|2.1.2|
|License|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Description|Documentation for BreadcrumbsPlugin|
This plugin provides a list of links to all tiddlers opened during the session, creating a "trail of breadcrumbs" from one tiddler to the next, allowing you to quickly navigate to any previously viewed tiddler, or select 'home' to reset the display to the initial set of tiddlers that were open at the start of the session (i.e., when the document was loaded into the browser).
!!!!!Usage
<<<
syntax:
{{{
<<breadcrumbs homeSeparator crumbSeparator>>
}}}
By default, the breadcrumbs are displayed as a continuous, //horizontal// word-wrapped line of text, using default character sequences for ''homeSeparator'' (" | ") and ''crumbSeparator'' (" > ").  The //optional// ''homeSeparator'' and ''crumbSeparator'' macro parameters allow you to specify alternative separators.  For example, to display the breadcrumbs //vertically// (in a stack, rather than a row), set the separator values to use {{{[[<br>]]}}}... and, to display a horizontal line as the home separator, use {{{[[<html><hr></html>]]}}}.
<<<
!!!!!Examples:
<<<
{{{
<<breadcrumbs>>
}}}
<<breadcrumbs>>
{{{
<<breadcrumbs [[<html><hr></html>]] [[<br>]]>>
}}}
<<breadcrumbs [[<html><hr></html>]] [[<br>]]>>
<<<
!!!!!Customization
<<<
Using CSS and a few of the plugin configuration options (see below), you can make the breadcrumbs display resemble browser tabs by adding the following to your [[StyleSheet]]:
{{{
.breadCrumbs { border-bottom:1px solid; }
.breadCrumbs a {
	border: 1px solid; padding: 0px 1em;
	-moz-border-radius-topleft:.5em; -moz-border-radius-topright:.5em;
	-webkit-border-top-left-radius:.5em; -webkit-border-top-right-radius:.5em;
}
}}}
and this in [[ConfigTweaks]] (tagged with systemConfig, of course):
{{{
config.options.chkShowStartupBreadcrumbs=true;
config.options.chkBreadcrumbsLimitOpenTiddlers=true;
config.options.txtBreadcrumbsLimitOpenTiddlers=1;
config.macros.breadcrumbs.homeSeparator=" ";
config.macros.breadcrumbs.crumbSeparator=" ";
}}}
<<<
!!!!!Configuration
<<<
__''display placement:''__
<<option chkCreateDefaultBreadcrumbs>> automatically create breadcrumbs display (if needed)
{{{<<option chkCreateDefaultBreadcrumbs>>}}}
>By default, the plugin automatically creates the "breadCrumbs" display element at the top of the story column, just above the tiddlerDisplay area.  To manually control the display and placement of the breadcrumbs display, you can define a DIV with class="breadCrumbs" in a custom [[PageTemplate]] or embed the {{{<<breadcrumbs>>}}} macro in specific tiddler content.
>
>For example, to add the breadcrumbs below the mainMenu, change this:
{{{
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
}}}
>to:
{{{
<div id='mainMenu'>
	<div refresh='content' tiddler='MainMenu'></div>
	<div id='breadCrumbs' class='breadCrumbs'></div>
</div>
}}}
>You can also block automatic creation of the breadcrumbs display by setting
{{{
config.options.chkCreateDefaultBreadcrumbs=false;
}}}
>in a [[CookieJar]]/[[ConfigTweaks]] plugin tiddler.

__''other settings:''__
<<option chkShowBreadcrumbs>> show/hide breadcrumbs display
{{{<<option chkShowBreadcrumbs>>}}}
>This checkbox toggles the visibility of the breadcrumbs display.  However, the display is not updated until the next crumb is added (or a previous crumb is clicked on).  For immediate effect, the [[ToggleBreadcrumbs]] script uses [[InlineJavascriptPlugin]] to synchronize the checkbox setting and the breadcrumbs display.
<<option chkReorderBreadcrumbs>> re-order breadcrumbs when visiting a previously viewed tiddler
{{{<<option chkReorderBreadcrumbs>>}}}
>When visiting a previously viewed tiddler, the title of the most-recently displayed tiddler is simply moved to the end of the list and individual breadcrumbs are not removed from the list unless the underlying tiddler is deleted.  When ''re-ordering'' is disabled, the breadcrumbs list is ''trimmed'' so that all crumbs following that tiddler are removed from the list.
<<option chkBreadcrumbsHideHomeLink>> omit 'Home' link from breadcrumbs display
{{{<<option chkBreadcrumbsHideHomeLink>>}}}
>Enabling this option suppresses the automatic display of the "Home" link (and home separator).  To manually add the home link elsewhere in your document, use the following HTML:
{{{
<html><a href="javascript:;" onclick="config.macros.breadcrumbs.home()">home</a></html>
}}}
<<option chkBreadcrumbsSave>> prompt to save breadcrumbs when 'Home' link is pressed
{{{<<option chkBreadcrumbsSave>>}}}
>Whenever you press the 'home' button, you can be prompted to save the current breadcrumbs in a tiddler as a space-separated list of tiddler links (default title="SavedBreadcrumbs").  
<<option chkShowStartupBreadcrumbs>> show breadcrumbs for 'startup' tiddlers
{{{<<option chkShowStartupBreadcrumbs>>}}}
>Breadcrumbs are usually only added for tiddlers that are opened after the document has been loaded, and not for tiddlers displayed during initial startup (e.g., [[DefaultTiddlers]]).  Enabling this option displays breadcrumbs for all viewed tiddlers, regardless of when they are opened.
<<option chkBreadcrumbsReverse>> show breadcrumbs in reverse order
{{{<<option chkBreadcrumbsReverse>>}}}
>As tiddlers are displayed, breadcrumbs are usually added to the //end// of the list.  Enabling this option displays breadcrumbs in reverse order, so that the most recently visited tiddlers are listed first.
<<option chkBreadcrumbsLimit>> limit breadcrumbs display to {{twochar{<<option txtBreadcrumbsLimit>>}}} items
{{{<<option chkBreadcrumbsLimit>>}}} and {{{<<option txtBreadcrumbsLimit>>}}}
>By default, breadcrumbs are displayed for all tiddlers that have been visited (unless the list is being 'trimmed' by disabling the chkReorderBreadcrumbs option above).  Enabling this option limits the display of the list to a maximum specified number of breadcrumbs.
<<option chkBreadcrumbsLimitOpenTiddlers>> limit open tiddlers to {{twochar{<<option txtBreadcrumbsLimitOpenTiddlers>>}}} items
{{{<<option chkBreadcrumbsLimitOpenTiddlers>>}}} and {{{<<option txtBreadcrumbsLimitOpenTiddlers>>}}}
>By default, tiddlers remain open (e.g., displayed in the story column) until you explicitly close them.  When this option is enabled, only the most recently opened tiddlers will remain open: ''any tiddlers in excess of the specified limit are automatically closed.''  //Note: for 'data safety', if a tiddler is being edited, you will be asked for permission to "save-and-close" that tiddler or leave it open (even if that would exceed the specified limit).//
<<<
!!!!!Revisions
<<<
2009.10.19 2.1.2 code reduction
2009.03.22 2.1.0 added 'save breadcrumbs to tiddler' feature
2008.05.01 2.0.0 added 'limit open tiddlers' feature (with safety check for tiddler in edit mode)
2008.04.06 1.9.1 corrected 'limit' logic so that //last// N crumbs are shown instead of //first// N crumbs.  Also, added chkBreadcrumbsHideHomeLink
2008.04.04 1.9.0 added chkBreadcrumbsReverse and chk/txtBreadcrumbsLimit
2008.03.29 1.8.4 in displayTiddler(), get title from tiddler object (if needed).  Fixes errors caused when calling function passes a tiddler *object* instead of a tiddler *title*
2008.03.24 1.8.3 include shadow tiddlers in breadcrumbs list.  Also changed settings so that "reordering" breadcrumbs is the default, instead of "trimming" the list
2007.12.04 [*.*.*] update for TW2.3.0: replaced deprecated core functions, regexps, and macros
2007.10.26 1.8.2 documentation cleanup
2007.10.18 1.8.1 in GetAreas(), use try/catch to avoid "Bad NPObject as private data" fatal error caused when embedded QuickTime player element is accessed by hasClass() function.
2007.10.02 1.8.0 major documentation and code cleanup.  Moved config.breadCrumbs.* to config.macros.breadcrumbs.* to consolidate objects.  Also, fixed homeSeparator and crumbSeparator default handling.
2007.10.02 1.7.0 added config.options.chkShowStartupBreadcrumbs option
2007.09.16 1.6.1 in getAreas(), removed errant use of 'place' (was causing fatal error when creating default breadcrumbs display element).  Also, added chkCreateDefaultBreadcrumbs configuration setting to enable/disable automatic creation of a default breadcrumbs display.
2007.09.16 1.6.0 re-wrote refresh() to enable multiple display instances, by finding elements with "breadCrumbs" classname.  Fallback to fixed ID (="breadCrumbs") is still used for backward-compatibility.  move rendering code from refresh() to separate render() function, and added definition for {{{<<breadCrumbs>>}}} macro to support embedding breadcrumbs displays in tiddler content.
2007.09.15 [1.5.9.1] updated documentation
2007.09.15 1.5.9 defined homeSeparator (" | ") and crumbSeparator (" > ") as object properties so that they can be redefined as desired for different layouts (e.g., using 'newline' for the crumbSeparator will arrange crumbs in a column rather than a row.
2007.06.21 [1.5.8.1] in home(), return false to prevent IE from attempting to navigate away...
2007.05.26 1.5.8 added support for {{{<<option chkReorderBreadcrumbs>>}}} to toggle trim vs. re-order behavior when visiting previously viewed tiddlers
2007.05.25 1.5.7 added support for {{{<<option chkShowBreadcrumbs>>}}} to toggle //display// of breadcrumbs
2007.05.24 1.5.6 in refresh(), remove non-existing tiddler titles from crumb list.  Also, hijack removeTiddler() so crumbs can be updated after tiddler is deleted.
2007.04.11 1.5.5 added optional params to previousTiddler macro handler() to allow alternative label and tooltip text (instead of default "back")
2007.03.02 1.5.4 in refresh(), for TW2.2, look for "storyDisplay" instead of "tiddlerDisplay" but keep fallback to "tiddlerDisplay" for TW2.1 or earlier
2007.02.24 1.5.3 changed from hijack of onClickTiddlerLink to hijack of displayTiddler() so that ALL displayed tiddlers are recorded in the crumbs, including programmatically displayed tiddlers opened by macros, scripts, etc., (such as [[GotoPlugin]], among many others) in addition to those opened by clicks on links.
2007.02.24 [1.5.2.0] eliminated global space clutter by moving function and data declarations so they are contained inside config.breadCrumbs object.
2007.02.06 1.5.1 added "previousTiddler" macro (for use in sidebar)
2007.02.05 1.5.0 added "previousTiddler" toolbar command (aka, "back")
2006.08.04 [1.4.0.1] change spaces to tabs
2006.08.04 1.4.0 modified from 1.4.0 distro: in refresh(), set {{{display:none/block}}} instead of {{{visibility:hidden/visible}}}.  In home(), check for valid crumbArea before setting style.
2006.08.02 1.4.0 Fixed bug, the redefined onClickTiddlerLink_orig_breadCrumbs works incorrectly on IE
2006.07.20 1.3.0 Runs compatibly with TW 2.1.0 (rev #403+)
2006.02.07 1.2.0 change global array breadCrumbs to config.breadCrumbs by Eric's suggestion
2006.02.04 1.1.0 JSLint checked
2006.02.01 1.0.0 initial release
<<<
+++^60em^[Cartago|System/Mainworld Name]
<<tiddler UWPName>>===+++^60em^[Ntl-H4710|Location in Imperial Registry]
<<tiddler UWPLocation>>===+++^60em^[B857830&mdash;C|Main World Data]
     These eight code provide data on the specific planet identified by this entry. Click on each     individual entry below to open a table describing each code:
+++^25em^[B|Star ports]<<tiddler UWPStarport>>===+++^25em^[8|Size]
<<tiddler UWPWorldSize>>===+++^35em^[5|Atmosphere]
<<tiddler UWPAtmosphere>>===+++^30em^[7|Hydrosphere]
<<tiddler UWPHydrosphere>>===+++^20em^[8|Population]
<<tiddler UWPPopulation>>===+++^25em^[3|Government]
<<tiddler UWPGovernment>>===+++^30em^[0Law]
<<tiddler UWPLaw>>===&mdash;+++^30em^[C|Tech Level]
<<tiddler UWPTech>>===
===+++^40em^[P|Bases]<<tiddler UWPBases>>===+++^40em^[Ag Ed Fl|Trade Classes]
<<tiddler UWPTrade>>===+++^30em^[A310|System Information]
     These four codes provide data about the system as a whole that is important to ships planning trips into the system, as well as further refining the population data for the system's primary world. Click on each individual entry below to open a table describing each code:
+++^40em^[A|Travel Zone Code]
<<tiddler UWPTravelZones>>===+++^40em^[3|Population Multiple]
<<tiddler UWPPopMultiplier>>===+++^40em^[1|Gas Giants]
<<tiddler UWPGasGiants>>===+++^40em^[0|Planetoid (asteroid) Belts]
<<tiddler UWPBelts>>===
===+++^40em^[In|Allegiance]<<tiddler UWPAllegiance>>===
/***
|Name|CollapseTiddlersPlugin|
|Source|http://www.TiddlyTools.com/#CollapseTiddlersPlugin|
|Version|2.0.0|
|Author|Eric Shulman|
|OriginalAuthor|Bradley Meck - http://gensoft.revhost.net/Collapse.html|
|License|unknown|
|~CoreVersion|2.1|
|Type|plugin|
|Requires|CollapsedTemplate|
|Description|show/hide content of a tiddler while leaving tiddler title visible|
This plugin provides commands to quickly switch a rendered tiddler between its current ViewTemplate display and a minimal display (title and toolbar) defined by a separate CollapsedTemplate.
!!!Usage
<<<
In [[ToolbarCommands::ViewToolbar|ToolbarCommands]], add:
{{{
collapseTiddler collapseOthers
}}}
you can also embed the following macros in tiddler content:
*{{{<<collapseAll>>}}} - adds 'collapse all' command that applies CollapsedTemplate to each displayed tiddler
*{{{<<expandAll>>}}} - adds 'expand all' command that re-applies ViewTemplate (or equivalent custom template) to each displayed tiddler
*{{{<<foldFirst>>}}} - immediately apply CollapsedTemplate to a given tiddler, as soon as it is displayed.
<<<
!!!Revisions
<<<
2009.05.04 [2.0.0] standardized documentation and added version #
2008.10.05 collapseAll() and expandAll(): added "return false" to button handlers to prevent IE page transition
2008.03.06 refactored all code for size reduction, readability, and I18N/L10N-readiness.  Also added 'folded' flag to tiddler elements (for use by other plugins that need to know if tiddler is folded (e.g., [[SinglePageModePlugin]]
2007.10.11 moved [[FoldFirst]] inline script and converted to {{{<<foldFirst>>}}} macro
2007.12.09 suspend/resume SinglePageMode (SPM/TPM/BPM) when folding/unfolding tiddlers
2007.05.06 add "return false" at the end of each command handler to prevent IE 'page transition' problem.
2007.03.30 add a shadow definition for CollapsedTemplate.  Tweak ViewTemplate shadow so "fold/unfold" and "focus" toolbar items automatically appear when using default templates.  Remove error check for "CollapsedTemplate" existence, since shadow version will now always work as a fallback.
2006.02.24 added fallback to "CollapsedTemplate" if "WebCollapsedTemplate" is not found
2006.02.06 added check for 'readOnly' flag to use alternative "WebCollapsedTemplate"
<<<
!!!Code
***/
//{{{
version.extensions.CollapseTiddlersPlugin= {major: 2, minor: 0, revision: 0, date: new Date(2009,5,4)};

config.shadowTiddlers.CollapsedTemplate=
	"<!--{{{-->\
	<div class='toolbar' macro='toolbar expandTiddler collapseOthers closeTiddler closeOthers +editTiddler permalink references jump'></div>\
	<div class='title' macro='view title'></div>\
	<!--}}}-->";

// automatically tweak shadow ViewTemplate to add "collapseTiddler collapseOthers" commands
config.shadowTiddlers.ViewTemplate=config.shadowTiddlers.ViewTemplate.replace(/closeTiddler/,"collapseTiddler collapseOthers closeTiddler");

config.commands.collapseTiddler = {
	text: "fold",
	tooltip: "Collapse this tiddler",
	collapsedTemplate: "CollapsedTemplate",
	webCollapsedTemplate: "WebCollapsedTemplate",
	handler: function(event,src,title) {
		var e = story.findContainingTiddler(src); if (!e) return false;
		// don't fold tiddlers that are being edited!
		if(story.isDirty(e.getAttribute("tiddler"))) return false;
		var t=config.commands.collapseTiddler.getCollapsedTemplate();
		config.commands.collapseTiddler.saveTemplate(e);
		config.commands.collapseTiddler.display(title,t);
		e.setAttribute("folded","true");
		return false;
	},
	getCollapsedTemplate: function() {
		if (readOnly&&store.tiddlerExists(this.webCollapsedTemplate))
			return this.webCollapsedTemplate;
		else
			return this.collapsedTemplate
	},
	saveTemplate: function(e) {
		if (e.getAttribute("savedTemplate")==undefined)
			e.setAttribute("savedTemplate",e.getAttribute("template"));

	},
	// fold/unfold tiddler with suspend/resume of single/top/bottom-of-page mode
	display: function(title,t) {
		var opt=config.options;
		var saveSPM=opt.chkSinglePageMode; opt.chkSinglePageMode=false;
		var saveTPM=opt.chkTopOfPageMode; opt.chkTopOfPageMode=false;
		var saveBPM=opt.chkBottomOfPageMode; opt.chkBottomOfPageMode=false;
		story.displayTiddler(null,title,t);
		opt.chkBottomOfPageMode=saveBPM;
		opt.chkTopOfPageMode=saveTPM;
		opt.chkSinglePageMode=saveSPM;
	}
}

config.commands.expandTiddler = {
	text: "unfold",
	tooltip: "Expand this tiddler",
	handler: function(event,src,title) {
		var e = story.findContainingTiddler(src); if (!e) return false;
		var t = e.getAttribute("savedTemplate");
		config.commands.collapseTiddler.display(title,t);
		e.setAttribute("folded","false");
		return false;
	}
}

config.macros.collapseAll = {
	text: "collapse all",
	tooltip: "Collapse all tiddlers",
	handler: function(place,macroName,params,wikifier,paramString,tiddler){
		createTiddlyButton(place,this.text,this.tooltip,function(){
			story.forEachTiddler(function(title,tiddler){
				if(story.isDirty(title)) return;
				var t=config.commands.collapseTiddler.getCollapsedTemplate();


				config.commands.collapseTiddler.saveTemplate(tiddler);
				config.commands.collapseTiddler.display(title,t);
				tiddler.folded=true;
			});
			return false;
		})
	}
}

config.macros.expandAll = {
	text: "expand all",
	tooltip: "Expand all tiddlers",
	handler: function(place,macroName,params,wikifier,paramString,tiddler){
		createTiddlyButton(place,this.text,this.tooltip,function(){
			story.forEachTiddler(function(title,tiddler){
				var t=config.commands.collapseTiddler.getCollapsedTemplate();
				if(tiddler.getAttribute("template")!=t) return; // re-display only if collapsed
				var t=tiddler.getAttribute("savedTemplate");
				config.commands.collapseTiddler.display(title,t);
				tiddler.folded=false;
			});
			return false;
		})
	}
}

config.commands.collapseOthers = {
	text: "focus",
	tooltip: "Expand this tiddler and collapse all others",
	handler: function(event,src,title) {
		var e = story.findContainingTiddler(src); if (!e) return false;
		story.forEachTiddler(function(title,tiddler) {
			if(story.isDirty(title)) return;
			var t=config.commands.collapseTiddler.getCollapsedTemplate();
			if (e==tiddler) t=e.getAttribute("savedTemplate");
			config.commands.collapseTiddler.saveTemplate(tiddler);
			config.commands.collapseTiddler.display(title,t);
			tiddler.folded=(e!=tiddler);
		})
		return false;
	}
}

// {{{<<foldFirst>>}}} macro forces tiddler to be folded when *initially* displayed.
// Subsequent re-render does NOT re-fold tiddler, but closing/re-opening tiddler DOES cause it to fold first again.
config.macros.foldFirst = {
	handler: function(place,macroName,params,wikifier,paramString,tiddler){
		var e=story.findContainingTiddler(place);
		if (e.getAttribute("foldedFirst")=="true") return; // already been folded once
		var title=e.getAttribute("tiddler")
		var t=config.commands.collapseTiddler.getCollapsedTemplate();
		config.commands.collapseTiddler.saveTemplate(e);
		config.commands.collapseTiddler.display(title,t);
		e.setAttribute("folded","true");
		e.setAttribute("foldedFirst","true"); // only when tiddler is first rendered
		return false;
	}
}
//}}}
<!--{{{-->
<!--
|Name|CollapsedTemplate|
|Source|http://www.TiddlyTools.com/#CollapsedTemplate|
|Version||
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|template|
|Requires|ToolbarCommands|
|Description|alternative to ViewTemplate, used by CollapseTiddlersPlugin to display tiddler when 'folded'|
-->
<span class='toolbar' macro='toolbar [[ToolbarCommands::CollapsedToolbar]]'></span>
</span>
<span class='title'>
	<span class='floatleft' macro='tiddlerIcons' style='cursor:auto !important;'></span>
	<span macro='view title'></span>
</span>
<div class='tagClear'></div>
<!--}}}-->
Combat Armor is an armored Vac Suit composed of various polymers and alloys. Mass: 36#/16kg. Cost: 1500 Denarii. It represents "the step between" the old absorptive armors of yesteryear and the advanced ABD systems that would come after. That said, it is //still// by far the standard armor found outside the organized military services.

!!Combat Armor-10
| !Cost | !Powers | !END |
| 10 |Protective Armor: Armor (7 PD/7 ED), Hardened (+¼) (26 Active Points); OIF Bulky (OIHID (‑¼), Real Armor (¼) | 0 |
| 15 |Environmental Protection: Life Support (Immunity All terrestrial diseases and biowarfare agents; Immunity All terrestrial poisons and chemical warfare agents; Safe in High Pressure; Safe in Intense Cold; Safe in Intense Heat; ~Self-Contained Breathing), 2 Continuing Charges lasting 1 Hour each (+0) (35 Active Points); OIF Bulky (OIHID (¼) | [2 cc] |
| 2 |Sensory Protection: Hearing Group Flash Defense (5 points) (5 Active Points); OIF Bulky (OIHID (¼), Real Armor (¼) | 0 |
| 2 |Sensory Protection: Sight Group Flash Defense (5 points) (5 Active Points); OIF Bulky (OIHID (¼), Real Armor (¼) | 0 |
| 5 |Communications System: Radio Perception/Transmission (Radio Group), 2 Continuing Charges lasting 1 Hour each (+0), ~MegaScale (1” = 1 km; +¼) (12 Active Points); OIF Bulky (OIHID (¼) | [2 cc] |
| 6 |Sight Enhancement System: IR Perception (Sight Group), +3 to PER Roll, Tracking, 2 Continuing Charges lasting 1 Hour each (+0) (13 Active Points); OIF Bulky (‑1), OIHID (¼) | [2 cc] |
The Combat Environment Suit (CES) is a soft Ballistic Weave with an airtight liner that can be sealed using protective gauntlets and a clear visor. It provides protection against chemical and biological agents, tainted atmospheres, and limited radiation. It is available at ~TL9.

!!CES Body Sleeve-12
The Body Sleeve is a form-fitting multipurpose combat environment suit that is worn in routine circumstances. It is designed to allow easy and quick entry into vac suits and battledress.

| !Cost | !Powers | !END |
| 5 |Protective Armor: Armor (5 PD/5 ED) (15 Active Points); OIF Bulky (‑1), Ablative BODY or STUN (OIHID (¼) | 0 |
| 10 |Environmental Protection: Life Support (Immunity All terrestrial poisons and chemical warfare agents; Immunity All terrestrial diseases and biowarfare agents; Safe in Intense Cold; Safe in Intense Heat; ~Self-Contained Breathing) (34 Active Points); Custom Modifier (only breathable or skin absorbed agents; -1), OIF Bulky (‑1), Extra Time (Full Phase, Only to Activate, -¼) | 0 |
| 4 |Medical Autoinjector: Aid 2d6 (20 Active Points); 2 Charges (‑1 ½), OIF Bulky (Side Effects, Side Effect occurs automatically whenever Power is used (takes 1D6 stun an hour after use; -½), Self Only (½), OIHID (¼) | [2] |
| 2 |//G Tolerance[3G]//: Custom Talent (3 Active Points); OIF (½), OIHID (¼) ||
|>|>|''Suit Options:'' |
| 6 |1) Chameleon Camouflage Suit: Change Environment 1” radius, -2 to Infrared Perception PER Rolls, -2 to Normal Sight PER Rolls, Multiple Combat Effects (16 Active Points); OIF Bulky (‑1), No Range (½), OIHID (¼) | 2 |
| 11 |2) Suit Standard Helmet: (Total: 20 Active Cost, 11 Real Cost) Radio Perception/Transmission (Radio Group), 1 Continuing Charge lasting 6 Hours (+0) (10 Active Points); OIF (½), OIHID (¼) (Real Cost: 6) plus Sight Group Flash Defense (5 points) (5 Active Points); OIF (½), OIHID (¼), Real Armor (¼) (Real Cost: 2) plus Nightvision, 1 Continuing Charge lasting 6 Hours (+0) (5 Active Points); OIF (½), OIHID (¼) (Real Cost: 3) | [1cc] |


[<img[http://rpg-fusion.com/files/ALDE/Commdots.jpg]] ''Description:'' A Commdot is most commonly used as an adjunct to a computer or communicator. One Commdot is affixed to the scalp just behind the ear, the other is stuck to the throat just above the voice box. A Commdot is only able to transceive for a distance of little over a meter, but it is far enough for the Commdot to communicate with the larger, more powerful devices it is designed to interface with.

The [[Handheld Computer]] can be used with the hands held free, for instance, The same is true of the [[Handheld Communicator]]. Devices designed to be used with Commdots are capable of tuning the dots to itself. 

When it is desired to communicate with more than one device at a time, a Commdot multiplexer is used. The multiplexer is worn on the belt (or in the pocket) and coordinates activity between several devices. The operator can then communicate on the tuned channels, switching between them at will.

''Cost:'' Commdot/multiplexer 500 Denarii
''Weight:'' 0.1kg

----
 <<gradient vert #ffffff #ffdddd #ff8888>>
Well thought out input to the campaign is //more// than welcome. For all the time I've put in on the Aldeborahnn! game world it's still no more than a shell. My hope was to create an interesting and balanced framework that would get the creative juices going, and then to let everyone dive in and add more stuff as we go along.  (I've listed my sources for the game world at the end of this entry.)

Too, I would like this game to be more visual than the average PBEM game. ~SciFi has such rich opportunities for artistic outlets beyond just the written word: From artist's drawings and layouts to mesh models, animations, and 3D planets and asteroids; the possibilities are almost endless. Obviously, just how visual the game becomes will depend on the artistic talents of everyone involved, but I will award experience points for art work that can be added to the story.

In that vein, extra experience points will be awarded for:
* Smashing good character related contributions.
** A new PC race.
*** Creating a new PC race is no small task as you'll have to create a home world for them, slice up a piece of the sky for any other worlds they have settled as they became a space faring race.
*** In that vein, you should be aware that all star systems in this game are  //real//, not fictional. Star coordinates, spectral class, and habitability (IOW is it reasonable to assume the star to have an earth type planet in orbit around it) are all taken from the Winchell ~HabHYG database (link in the sources section below) with further input from other sources I'll list below. Using this data a solar system is constructed around the star using the Traveller World Builder's handbook, forcing outputs as needed for the primary planet. (See also the [[UWP]] entry.) Finally, I usually choose a new name for the star, keeping the original ~HabHYG catalog names only for cross reference purposes (so I don't end up with two solar systems assigned to the same star).
** A damned good background story for your PC. All the races have only been outlined. Fill them out. Bring that race to life!
** Damned good (pregame) fiction pieces about your character.
** Plot related art, including [[Celestia|http://www.shatters.net/celestia/]] object submissions, space stations, space ships, examples of character races, and so on.

In the course of the game (in addition to the usual XP point adders):
* Superb roleplaying.
* Contributions of art (including [[Celestia|http://www.shatters.net/celestia/]] objects) that helps visualize the story. (They'll be embedded in the story file as a graphic. You can do it or I can.)
* Applicable background (sidebar) fiction pieces written about the story that's unfolding.
* Superior story-telling. 

Attribution will be given for all contributions of art, articles, fiction, and anything else that ends up in this wiki regardless of whether they earn experience points or not. (Let me know whether you want your real name used or your LCG handle.) 

* In general, for background material not directly related to your PC or the plot, experience points will //not// be awarded (at least, not directly). But I'm sure everyone will be grateful for your addition to the game universe! (Including and especially me!)

''Source materials:''
* The [[Celestia|http://www.shatters.net/celestia/]] space simulation program, of course. (This is the software I've used to create the luscious images of planets and so on you see here in the wiki.)
* Hero System V and its source books. (And no, we will //not// be going to Hero VI when/if it's ever released!)
* Hero Designer. (Yeah, I know it's not real popular, but it's what I've got.)
* Megatraveller:
** World Builder's Handbook (PDF available)
** Imperial Encyclopedia (PDF available)
** Referee's Manual (PDF available)
** Fighting Ships of the Imperium (PDF available)
** Traveler Hero books I and II (PDF available)
* Other sources:
** Worlds of Empire (A Star Hero source book)
** ~StarAce's //Aliens// by Pacesetter (out of print)
** Invasions: Target Earth, a Hero System IV Champions source book (out of print)
** [[Winchell's HabHYG dataset |http://www.projectrho.com/smap12.html#winch]]. The complete database is //huge!// Over 3 megs in size (uncompressed). This database is the primary source of stellar information for the game. Other supplementary astrogation information sources:
*** Astrogator's Handbook (available free as a PDF from [[Sci Fi -- Arizona |http://www.scifi-az.com/]]) The appendices contain much useful information.
*** The Gliess/Hipparcos parallax database. (I don't remember where I found it.) This database includes RA and declination listings. Data you have to have in order to position a new object in  Celestia.
* And in general, for background:
** Startrek -- warp theory
** Starwars -- blasters, storm trooper type body armor, ship style ideas 
** Niven, Pournel, Heinlein, and so many other great Sci Fi authors


/***
|Name|CoreTweaks|
|Source|http://www.TiddlyTools.com/#CoreTweaks|
|Version||
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.2.0|
|Type|plugin|
|Description|a small collection of overrides to TW core functions|
This tiddler contains small changes to TW core functions that correct or enhance standard features or behaviors.
***/
//{{{
// calculate TW version number - used to determine which tweaks should be applied
var ver=version.major+version.minor/10+version.revision/100;
//}}}
/***
----

***/
// // open tickets:
// // {{block{
/***
!!!1151 adjust popup placement when root element is in scrolled DIV
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/1151
When a popup link is placed inside a DIV with style "overflow:scroll" or "overflow:auto" and that DIV is then scrolled, the position of the resulting popup appears further down the page that intended, because it is not adjusting for the relative scroll offset of the containing DIV.  This tweak patches the Popup.place() function to calculate and subtract the current scroll offset from the computed popup position, so that it appears in the correct location on the page.

Test case: //(scroll to the bottom of this DIV and click on "test popup")//
{{groupbox{
 <<tiddler ScrollBox with: CoreTweaks##1151test 12em>>}}}/%
!1151test
<<tiddler About>>
<<tiddler ShowPopup with: About "test popup" About button auto sticky>>
!end
%/
***/
//{{{
window.findScrollOffsetX=function(obj) {
	var x=0;
	while(obj) {
		if (obj.scrollLeft && obj.nodeName!='HTML')
			x+=obj.scrollLeft;
		obj=obj.parentNode;
	}
	return -x;
}

window.findScrollOffsetY=function(obj) {
	var y=0;
	while(obj) {
		if (obj.scrollTop && obj.nodeName!='HTML')
			y+=obj.scrollTop;
		obj=obj.parentNode;
	}
	return -y;
}

var fn=Popup.place.toString();
if (fn.indexOf('findScrollOffsetX')==-1) { // only once
	fn=fn.replace(/var\s*rootLeft\s*=/,'var rootLeft = window.findScrollOffsetX(root) +');
	fn=fn.replace(/var\s*rootTop\s*=/,'var rootTop = window.findScrollOffsetY(root) +');
	eval('Popup.place='+fn);
}
//}}}
// // }}}}}}// // {{block{
/***
!!!1147 tiddler macro with params does not refresh
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/1147
when the {{{<<tiddler SomeTiddler>>}}} macro is handled, the resulting span has extra attributes: {{{refresh='content'}}} and {{{tiddler='SomeTiddler'}}}.  If SomeTiddler is changed, {{{store.notify('SomeTiddler')}}} triggers {{{refreshDisplay()}}}, which automatically re-renders transcluded content in any span that has these extra attributes.  However, when additional arguments are passed by using {{{<<tiddler SomeTiddler with: arg arg arg ...>>}}} then the resulting span does NOT get the extra attributes noted above and, as a consequence, the transcluded content is not being refreshed, even though the underlying tiddler has changed

To correct this, in {{{config.macros.tiddler.handler}}}:
*set the 'refresh' and 'tiddler' attributes even when arguments are present in the macro
*store the arguments themselves in an attribute (e.g, 'args'), using as a space-separated, bracketed list
Then, in {{{config.refreshers.content}}}:
*retrieve the stored arguments (if any) and the tiddler source
*substitute arguments into source and re-render the span with the updated content

***/
//{{{
config.refreshers.content=function(e,changeList) {
		var title = e.getAttribute("tiddler");
		var force = e.getAttribute("force");
		var args = e.getAttribute("args"); // ADDED
		if(force != null || changeList == null || changeList.indexOf(title) != -1) {
			removeChildren(e);
//			wikify(store.getTiddlerText(title,""),e,null,store.fetchTiddler(title)); // REMOVED
			config.macros.tiddler.transclude(e,title,args); // ADDED
			return true;
		} else
			return false;
};

config.macros.tiddler.handler=function(place,macroName,params,wikifier,paramString,tiddler) {
	params = paramString.parseParams("name",null,true,false,true);
	var names = params[0]["name"];
	var tiddlerName = names[0];
	var className = names[1] || null;
	var args = params[0]["with"];
	var wrapper = createTiddlyElement(place,"span",null,className);
//	if(!args) { // REMOVED
		wrapper.setAttribute("refresh","content");
		wrapper.setAttribute("tiddler",tiddlerName);
// 	} // REMOVED
	if(args!==undefined) wrapper.setAttribute("args",'[['+args.join(']] [[')+']]'); // ADDED
	this.transclude(wrapper,tiddlerName,args); // REFACTORED TO ...tiddler.transclude
}

// REFACTORED FROM ...tiddler.handler
config.macros.tiddler.transclude=function(wrapper,tiddlerName,args) {
	var text = store.getTiddlerText(tiddlerName); if (!text) return;
	var stack = config.macros.tiddler.tiddlerStack;
	if(stack.indexOf(tiddlerName) !== -1) return;
	stack.push(tiddlerName);
	try {
		if (typeof args == "string") args=args.readBracketedList(); // ADDED
		var n = args ? Math.min(args.length,9) : 0;
		for(var i=0; i<n; i++) {
			var placeholderRE = new RegExp("\\$" + (i + 1),"mg");
			text = text.replace(placeholderRE,args[i]);
		}
		config.macros.tiddler.renderText(wrapper,text,tiddlerName,null); // REMOVED UNUSED 'params'
	} finally {
		stack.pop();
	}
};
//}}}
// // }}}}}}// // {{block{
/***
!!!1134 allow leading whitespace in section headings / TBD handle shadow tiddler sections
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/1134
This tweak REPLACES and extends {{{store.getTiddlerText()}}} so it can return sections defined in shadow tiddlers as well as permitting use of leading whitespace in section headings.
***/
//{{{
TiddlyWiki.prototype.getTiddlerText = function(title,defaultText)
{
	if(!title) return defaultText;
	var parts = title.split(config.textPrimitives.sectionSeparator);
	var title = parts[0];
	var section = parts[1];
	var parts = title.split(config.textPrimitives.sliceSeparator);
	var title = parts[0];
	var slice = parts[1]?this.getTiddlerSlice(title,parts[1]):null;
	if(slice) return slice;
	var tiddler = this.fetchTiddler(title);
	var text = defaultText;
	if(this.isShadowTiddler(title))
		text = this.getShadowTiddlerText(title);
	if(tiddler)
		text = tiddler.text;
	if(!section) return text;
	var re = new RegExp("(^!{1,6}[ \t]*" + section.escapeRegExp() + "[ \t]*\n)","mg");
	re.lastIndex = 0;
	var match = re.exec(text);
	if(match) {
		var t = text.substr(match.index+match[1].length);
		var re2 = /^!/mg;
		re2.lastIndex = 0;
		match = re2.exec(t); //# search for the next heading
		if(match)
			t = t.substr(0,match.index-1);//# don't include final \n
		return t;
	}
	return defaultText;
};
//}}}
// // }}}}}}// // {{block{
/***
!!!890 add conditional test to """<<tiddler>>""" macro
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/890 - OPEN
This tweak extends the {{{<<tiddler>>}}} macro syntax so you can include a javascript-based //test expression// to determine if the tiddler transclusion should be performed:
{{{
<<tiddler TiddlerName if:{{...}} with: param param etc.>>
}}}
If the test is ''true'', then the tiddler is transcluded as usual.  If the test is ''false'', then the transclusion is skipped and //no output is produced//.
***/
//{{{
config.macros.tiddler.if_handler = config.macros.tiddler.handler;
config.macros.tiddler.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
	params = paramString.parseParams('name',null,true,false,true);
	if (!getParam(params,'if',true)) return;
	this.if_handler.apply(this,arguments);
};
//}}}
// // }}}}}}// // {{block{
/***
!!!831 backslash-quoting for embedding newlines in 'line-mode' formats
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/831 - OPEN
This tweak pre-processes source content to convert 'double-backslash-newline' into {{{<br>}}} before wikify(), so that literal newlines can be embedded in line-mode wiki syntax (e.g., tables, bullets, etc.)
***/
//{{{
window.coreWikify = wikify;
window.wikify = function(source,output,highlightRegExp,tiddler)
{
	if (source) arguments[0]=source.replace(/\\\\\n/mg,'<br>');
	coreWikify.apply(this,arguments);
}
//}}}
// // }}}}}}// // {{block{
/***
!!!824 ~WindowTitle - alternative to combined ~SiteTitle/~SiteSubtitle in window titlebar
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/824 - OPEN
This tweak allows definition of an optional [[WindowTitle]] tiddler that, when present, provides alternative text for display in the browser window's titlebar, instead of using the combined text content from [[SiteTitle]] and [[SiteSubtitle]] (which will still be displayed as usual in the TiddlyWiki document header area).

Note: this ticket replaces http://trac.tiddlywiki.org/ticket/401 (closed), which proposed using a custom [[PageTitle]] tiddler for this purpose.  ''If you were using the previous '401 ~PageTitle' tweak, you will need to rename [[PageTitle]] to [[WindowTitle]] to continue to use your custom window title text''
***/
//{{{
config.shadowTiddlers.WindowTitle='<<tiddler SiteTitle>> - <<tiddler SiteSubtitle>>';
window.getPageTitle=function() { return wikifyPlain('WindowTitle'); }
store.addNotification('WindowTitle',refreshPageTitle); // so title stays in sync with tiddler changes
//}}}
// // }}}}}}// // {{block{
/***
!!!683 FireFox3 Import bug: 'browse' button replacement
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/683 - OPEN
The web standard 'type=file' input control that has been used as a local path/file picker for TiddlyWiki no longer works as expected in FireFox3, which has, for security reasons, limited javascript access to this control so that *no* local filesystem path information can be revealed, even when it is intentional and necessary, as it is with TiddlyWiki.  This tweak provides alternative HTML source that patches the backstage import panel.  It replaces the 'type=file' input control with a text+button combination of controls that invokes a system-native secure 'file-chooser' dialog box to provide TiddlyWiki with access to a complete path+filename so that TW functions properly locate user-selected local files.
>Note: ''This tweak also requires http://trac.tiddlywiki.org/ticket/604 - cross-platform askForFilename()''
***/
//{{{
if (window.Components) {
	var fixhtml='<input name="txtBrowse" style="width:30em"><input type="button" value="..."'
		+' onClick="window.browseForFilename(this.previousSibling,true)">';
	var cmi=config.macros.importTiddlers;
	cmi.step1Html=cmi.step1Html.replace(/<input type='file' size=50 name='txtBrowse'>/,fixhtml);
}

merge(config.messages,{selectFile:'Please enter or select a file'}); // ready for I18N translation

window.browseForFilename=function(target,mustExist) { // note: both params are optional
	var msg=config.messages.selectFile;
	if (target && target.title) msg=target.title; // use target field tooltip (if any) as dialog prompt text
	// get local path for current document
	var path=getLocalPath(document.location.href);
	var p=path.lastIndexOf('/'); if (p==-1) p=path.lastIndexOf('\\'); // Unix or Windows
	if (p!=-1) path=path.substr(0,p+1); // remove filename, leave trailing slash
	var file=''
	var result=window.askForFilename(msg,path,file,mustExist); // requires #604
	if (target && result.length) // set target field and trigger handling
		{ target.value=result; target.onchange(); }
	return result; 
}
//}}}
// // }}}}}}// // {{block{
/***
!!!604 cross-platform askForFilename()
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/604 - OPEN
invokes a system-native secure 'file-chooser' dialog box to provide TiddlyWiki with access to a complete path+filename so that TW functions properly locate user-selected local files.
***/
//{{{
window.askForFilename=function(msg,path,file,mustExist) {
	var r = window.mozAskForFilename(msg,path,file,mustExist);
	if(r===null || r===false)
		r = window.ieAskForFilename(msg,path,file,mustExist);
	if(r===null || r===false)
		r = window.javaAskForFilename(msg,path,file,mustExist);
	if(r===null || r===false)
		r = prompt(msg,path+file);
	return r||'';
}

window.mozAskForFilename=function(msg,path,file,mustExist) {
	if(!window.Components) return false;
	try {
		netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
		var nsIFilePicker = window.Components.interfaces.nsIFilePicker;
		var picker = Components.classes['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker);
		picker.init(window, msg, mustExist?nsIFilePicker.modeOpen:nsIFilePicker.modeSave);
		var thispath = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
		thispath.initWithPath(path);
		picker.displayDirectory=thispath;
		picker.defaultExtension='html';
		picker.defaultString=file;
		picker.appendFilters(nsIFilePicker.filterAll|nsIFilePicker.filterText|nsIFilePicker.filterHTML);
		if (picker.show()!=nsIFilePicker.returnCancel)
			var result=picker.file.persistentDescriptor;
	}
	catch(ex) { displayMessage(ex.toString()); }
	return result;
}

window.ieAskForFilename=function(msg,path,file,mustExist) {
	if(!config.browser.isIE) return false;
	try {
		var s = new ActiveXObject('UserAccounts.CommonDialog');
		s.Filter='All files|*.*|Text files|*.txt|HTML files|*.htm;*.html|';
		s.FilterIndex=3; // default to HTML files;
		s.InitialDir=path;
		s.FileName=file;
		return s.showOpen()?s.FileName:'';
	}
	catch(ex) { displayMessage(ex.toString()); }
	return result;
}

window.javaAskForFilename=function(msg,path,file,mustExist) {
	if(!document.applets['TiddlySaver']) return false;
	// TBD: implement java-based askFile(...) function
	try { return document.applets['TiddlySaver'].askFile(msg,path,file,mustExist); } 
	catch(ex) { displayMessage(ex.toString()); }
}
//}}}
// // }}}}}}// // {{block{
/***
!!!657 wrap tabs onto multiple lines
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/657 - OPEN
This tweak inserts an extra space element following each tab, allowing them to wrap onto multiple lines if needed.
***/
//{{{
config.macros.tabs.handler = function(place,macroName,params)
{
	var cookie = params[0];
	var numTabs = (params.length-1)/3;
	var wrapper = createTiddlyElement(null,'div',null,'tabsetWrapper ' + cookie);
	var tabset = createTiddlyElement(wrapper,'div',null,'tabset');
	tabset.setAttribute('cookie',cookie);
	var validTab = false;
	for(var t=0; t<numTabs; t++) {
		var label = params[t*3+1];
		var prompt = params[t*3+2];
		var content = params[t*3+3];
		var tab = createTiddlyButton(tabset,label,prompt,this.onClickTab,'tab tabUnselected');
		createTiddlyElement(tab,'span',null,null,' ',{style:'font-size:0pt;line-height:0px'}); // ELS
		tab.setAttribute('tab',label);
		tab.setAttribute('content',content);
		tab.title = prompt;
		if(config.options[cookie] == label)
			validTab = true;
	}
	if(!validTab)
		config.options[cookie] = params[1];
	place.appendChild(wrapper);
	this.switchTab(tabset,config.options[cookie]);
};
//}}}
// // }}}}}}// // {{block{
/***
!!!628 hide 'no such macro' errors
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/628 - OPEN
When invoking a macro that is not defined, this tweak prevents the display of the 'error in macro... no such macro' message.  This is useful when rendering tiddler content or templates that reference macros that are defined by //optional// plugins that have not been installed in the current document.

<<option chkHideMissingMacros>> hide 'no such macro' error messages
***/
//{{{
if (config.options.chkHideMissingMacros===undefined)
	config.options.chkHideMissingMacros=false;

window.coreTweaks_missingMacro_invokeMacro = window.invokeMacro;
window.invokeMacro = function(place,macro,params,wikifier,tiddler) {
	if (!config.macros[macro] || !config.macros[macro].handler)
		if (config.options.chkHideMissingMacros) return;
	window.coreTweaks_missingMacro_invokeMacro.apply(this,arguments);
}
//}}}
// // }}}}}}// // {{block{
/***
!!!608/609/610 toolbars - toggles, separators and transclusion
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/608 - OPEN (more/less toggle)
http://trac.tiddlywiki.org/ticket/609 - OPEN (separators)
http://trac.tiddlywiki.org/ticket/610 - OPEN (wikify tiddler/slice/section content)

This combination tweak extends the """<<toolbar>>""" macro to add use of '<' to insert a 'less' menu command (the opposite of '>' == 'more'), as well as use of '*' to insert linebreaks and "!" to insert a vertical line separator between toolbar items.  In addition, this tweak add the ability to use references to tiddlernames, slices, or sections and render their content inline within the toolbar, allowing easy creation of new toolbar commands using TW content (such as macros, links, inline scripts, etc.)

To produce a one-line style, with "less" at the end, use
| ViewToolbar| foo bar baz > yabba dabba doo < |
or to use a two-line style with more/less toggle:
| ViewToolbar| foo bar baz > < * yabba dabba doo |
***/
//{{{
merge(config.macros.toolbar,{
	moreLabel: 'more\u25BC',
	morePrompt: 'Show additional commands',
	lessLabel: '\u25C4less',
	lessPrompt: 'Hide additional commands',
	separator: '|'
});
config.macros.toolbar.onClickMore = function(ev) {
	var e = this.nextSibling;
	e.style.display = 'inline'; // show menu
	this.style.display = 'none'; // hide button
	return false;
};
config.macros.toolbar.onClickLess = function(ev) {
	var e = this.parentNode;
	var m = e.previousSibling;
	e.style.display = 'none'; // hide menu
	m.style.display = 'inline'; // show button
	return false;
};
config.macros.toolbar.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
	for(var t=0; t<params.length; t++) {
		var c = params[t];
		switch(c) {
			case '!':  // ELS - SEPARATOR (added)
				createTiddlyText(place,this.separator);
				break;
			case '*':  // ELS - LINEBREAK (added)
				createTiddlyElement(place,'BR');
				break;
			case '<': // ELS - LESS COMMAND (added)
				var btn = createTiddlyButton(place,
					this.lessLabel,this.lessPrompt,config.macros.toolbar.onClickLess,'moreCommand');
				break;
			case '>':
				var btn = createTiddlyButton(place,
					this.moreLabel,this.morePrompt,config.macros.toolbar.onClickMore,'moreCommand');
				var e = createTiddlyElement(place,'span',null,'moreCommand');
				e.style.display = 'none';
				place = e;
				break;
			default:
				var theClass = '';
				switch(c.substr(0,1)) {
					case '+':
						theClass = 'defaultCommand';
						c = c.substr(1);
						break;
					case '-':
						theClass = 'cancelCommand';
						c = c.substr(1);
						break;
				}
				if(c in config.commands)

					this.createCommand(place,c,tiddler,theClass);
				else { // ELS - WIKIFY TIDDLER/SLICE/SECTION (added)
					if (c.substr(0,1)=='~') c=c.substr(1); // ignore leading ~
					var txt=store.getTiddlerText(c);
					if (txt) {
						// trim any leading/trailing newlines
						txt=txt.replace(/^\n*/,'').replace(/\n*$/,'');
						// trim PRE format wrapper if any
						txt=txt.replace(/^\{\{\{\n/,'').replace(/\n\}\}\}$/,'');
						// render content into toolbar
						wikify(txt,createTiddlyElement(place,'span'),null,tiddler);
					}
				} // ELS - end WIKIFY CONTENT
				break;
		}
	}
};
//}}}
// // }}}}}}// // {{block{
/***
!!!529 IE fixup - case-sensitive element lookup of tiddler elements
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/529 - OPEN
This tweak hijacks the standard browser function, document.getElementById(), to work-around the case-INsensitivity error in Internet Explorer (all versions up to and including IE7) //''Note: This tweak is only applied when using IE, and only for lookups of rendered tiddler elements within the containing 'tiddlerDisplay' element.''//
***/
//{{{
if (config.browser.isIE) {
document.coreTweaks_coreGetElementById=document.getElementById;
document.getElementById=function(id) {
	var e=document.coreTweaks_coreGetElementById(id);
	if (!e || !e.parentNode || e.parentNode.id!='tiddlerDisplay') return e;
	for (var i=0; i<e.parentNode.childNodes.length; i++)
		if (id==e.parentNode.childNodes[i].id) return e.parentNode.childNodes[i];
	return null;
};
}
//}}}
// // }}}}}}// // {{block{
/***
!!!471 'creator' field for new tiddlers
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/471 - OPEN
This tweak HIJACKS the core's saveTiddler() function to automatically add a 'creator' field to a tiddler when it is FIRST created. You can use """<<view creator>>""" (or """<<view creator wikified>>""" if you prefer) to show this value embedded directly within the tiddler content, or {{{<span macro="view creator"></span>}}} in the ViewTemplate and/or EditTemplate to display the creator value in each tiddler.  
***/
//{{{
// hijack saveTiddler()
TiddlyWiki.prototype.CoreTweaks_creatorSaveTiddler=TiddlyWiki.prototype.saveTiddler;
TiddlyWiki.prototype.saveTiddler=function(title,newTitle,newBody,modifier,modified,tags,fields)
{
	var existing=store.tiddlerExists(title);
	var tiddler=this.CoreTweaks_creatorSaveTiddler.apply(this,arguments);
	if (!existing) store.setValue(title,'creator',config.options.txtUserName);
	return tiddler;
}
//}}}
// // }}}}}}
// // closed: won't fix //(leave as core tweaks)//
// // {{block{
/***
!!!637 TiddlyLink tooltip - custom formatting
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/637 - CLOSED: WON'T FIX
This tweak modifies the tooltip format that appears when you mouseover a link to a tiddler.  It adds an option to control the date format, as well as displaying the size of the tiddler (in bytes)

Tiddler link tooltip format:
{{stretch{<<option txtTiddlerLinkTootip>>}}}
^^where: %0=title, %1=username, %2=modification date, %3=size in bytes, %4=description slice^^
Tiddler link tooltip date format:
{{stretch{<<option txtTiddlerLinkTooltipDate>>}}}
***/
//{{{
config.messages.tiddlerLinkTooltip='%0 - %1, %2 (%3 bytes) - %4';
config.messages.tiddlerLinkTooltipDate='DDD, MMM DDth YYYY 0hh12:0mm AM';

config.options.txtTiddlerLinkTootip=
	config.options.txtTiddlerLinkTootip||config.messages.tiddlerLinkTooltip;
config.options.txtTiddlerLinkTooltipDate=
	config.options.txtTiddlerLinkTooltipDate||config.messages.tiddlerLinkTooltipDate;

Tiddler.prototype.getSubtitle = function() {
	var modifier = this.modifier;
	if(!modifier) modifier = config.messages.subtitleUnknown;
	var modified = this.modified;
	if(modified) modified = modified.formatString(config.options.txtTiddlerLinkTooltipDate);
	else modified = config.messages.subtitleUnknown;
	var descr=store.getTiddlerSlice(this.title,'Description')||'';
	return config.options.txtTiddlerLinkTootip.format([this.title,modifier,modified,this.text.length,descr]);
};
//}}}
// // }}}}}}// // {{block{
/***
!!!607 add HREF link on permaview command
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/607 - CLOSED: WON'T FIX
This tweak automatically sets the HREF for the 'permaview' sidebar command link so you can use the 'right click' context menu for faster, easier bookmarking.  Note that this does ''not'' automatically set the permaview in the browser's current location URL... it just sets the HREF on the command link.  You still have to click the link to apply the permaview.
***/
//{{{
config.macros.permaview.handler = function(place)
{
	var btn=createTiddlyButton(place,this.label,this.prompt,this.onClick);
	addEvent(btn,'mouseover',this.setHREF);
	addEvent(btn,'focus',this.setHREF);
};
config.macros.permaview.setHREF = function(event){
	var links = [];
	story.forEachTiddler(function(title,element) {
		links.push(String.encodeTiddlyLink(title));
	});
	var newURL=document.location.href;
	var hashPos=newURL.indexOf('#');
	if (hashPos!=-1) newURL=newURL.substr(0,hashPos);
	this.href=newURL+'#'+encodeURIComponent(links.join(' '));
}
//}}}
// // }}}}}}// // {{block{
/***
!!!458 add permalink-like HREFs on internal TiddlyLinks
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/458 - CLOSED: WON'T FIX
This tweak assigns a permalink-like HREF to internal Tiddler links (which normally do not have any HREF defined).  This permits the link's context menu (right-click) to include 'open link in another window/tab' command.  Based on a request from Dustin Spicuzza.
***/
//{{{
window.coreTweaks_createTiddlyLink=window.createTiddlyLink;
window.createTiddlyLink=function(place,title,includeText,theClass,isStatic,linkedFromTiddler,noToggle)
{
	// create the core button, then add the HREF (to internal links only)
	var link=window.coreTweaks_createTiddlyLink.apply(this,arguments);
	if (!isStatic)
		link.href=document.location.href.split('#')[0]+'#'+encodeURIComponent(String.encodeTiddlyLink(title));
	return link;
}
//}}}
// // }}}}}}
// // fixed in ~TW2.4.3
// // {{block{
/***
!!!444 'tiddler' and 'place' - global variables for use in computed macro parameters
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/444 - CLOSED:FIXED - TW2.4.3 - http://trac.tiddlywiki.org/changeset/8367
When invoking a macro, this tweak makes the current containing tiddler object and DOM rendering location available as global variables (window.tiddler and window.place, respectively).  These globals can then be used within //computed macro parameters// to retrieve tiddler-relative and/or DOM-relative values or perform tiddler-specific side-effect functionality.
***/
//{{{
if (ver<2.43) {
window.coreTweaks_invokeMacro = window.invokeMacro;
window.invokeMacro = function(place,macro,params,wikifier,tiddler) {
	var here=story.findContainingTiddler(place);
	window.tiddler=here?store.getTiddler(here.getAttribute('tiddler')):tiddler;
	window.place=place;
	window.coreTweaks_invokeMacro.apply(this,arguments);
}
}
//}}}
// // }}}}}}
// // fixed in ~TW2.4.2:
// // {{block{
/***
!!!823 apply option values via paramifiers (e.g. #chk...and #txt...)
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/823 - CLOSED:FIXED - TW2.4.2 http://trac.tiddlywiki.org/changeset/7988
This tweak extends and ''//replaces//'' the core {{{invokeParamifier()}}} function to support use of ''option paramifiers'' that set TiddlyWiki option values on-the-fly, directly from a document URL.

If a paramifier begins with 'chk' (checkbox) or 'txt' (text field), it's value will be automatically stored in {{{config.options.*}}}, adding to or overriding any existing 'chk' or 'txt' option values that may have already been loaded from browser cookies and/or assigned by the TW core or plugin initialization functions using hard-coded default values.  Note: option values that have been overriden by paramifiers are only applied during the current document session, and are not //automatically// retained.  However, if you edit an overridden option value during that session, then the modified value is, of course, saved in a browser cookie, as usual.
***/
//{{{
if (ver<2.42) {
function invokeParamifier(params,handler)
{
	if(!params || params.length == undefined || params.length <= 1)
		return;
	for(var t=1; t<params.length; t++) {
		var p = config.paramifiers[params[t].name];
		if(p && p[handler] instanceof Function)
			p[handler](params[t].value);
		else { // not a paramifier with handler()... check for an 'option' prefix
			var h=config.optionHandlers[params[t].name.substr(0,3)];
			if (h && h.set instanceof Function)
				h.set(params[t].name,params[t].value);
		}
	}
}
}
//}}}
// // }}}}}}
// // <<foldHeadings>>
Due to it's age the Imperial currency system is horribly arranged. Fortunately, most people don't have to deal with the entire system. On modern worlds the Imperial Denarius is the standard of exchange (think of it like the dollar). The Sestertius and As are like dimes and pennies; the Aureus like a $20 bill. Too, most transactions are in the form of "credits" -- like a check card -- so the required number of Denarii are simply deducted from the appropriate bank account. Modern economic systems rarely deal in (or even accept) hard money.

On poor worlds, however, and in the Neutral Zone hard money is //all// that is usually accepted. Too, on poor worlds the As is usually the standard of exchange, not the Denarius. That's not because prices have changed, a Med Scanner still costs 500 Denarii (about $1,500 USD), but no poor person will be buying one! So it's more sensible to quote the price of things they //do// buy regularly, such as flour, vegetables, clothes -- or a cup of coffee, for instance, as 1As than 0.13 Denarii ( either way, it about $0.50 USD). 


| |=| 1 uncia ± 2½¢ | Brass |
| 2 unciae |=| 1 sextans ± 5¢ | Brass |
| 6 sextantes |=| 1 As ± 40¢  | Brass |
| 2 asses |=| 1 Sestertius ± 75¢ | Brass |
| 4 Sestertii |=| 1 Denarius ± $3 USD | Silver |
| 25 Denarii |=| 1 Aureus | Gold |
| 60 Aurei |=| 1 Solidus | Gold |
| 72 Solidi |=|>| 1 kilo gold |
PBEM games move slowly. So it's only natural to forget important details about events along the way. So, I've created this entry to help you out. If you think of (or remember) something that should go in here, let me know in the forum. 

| !DATE | !EVENT |
| 2563868.8855 |Meeting with former Senator Anastius of the line of Isaias. The Senator reported that: <br><br>* Senator Lawrence Bourne Sr. had been attacked days after LBIII left Midgard. <br>* The Imperial 5th Fleet attacked and destroyed the Athenian assault group patrolling Sigma Beta in the Donovan sub-sector. The deaths reported at that time numbered nearly two thousand. <br>* The Mon'dabi Federation is preparing an assault on Yyvaan, the [[Eldyri]] homeworld. <br>* The [[Ackálians]] are again arming to assault the Imperial up-spin frontier. <br> * The Medraas are entering into alliances with the various pirate bands here in the Neutral Zone. <br>* PAC is divided amongst itself, but each faction has purchased the loyalty of one or more [[MERC]] companies to support its cause, and its claim on certain systems, or to protect its holdings. <br> * The [[INIS]] is not reporting this data accurately to the [[Emperor|Emperor Trægen]]. |
| 2563868.8859 |The Senator admits he has sent messages to both Yyvaan and the Athenian fleet concerning their peril. |
| 2563868.8859 |The following transmission slip is delivered to The Senator and the ~PCs via Zathis, the Zarr: <br><br>''~YJ-2 CLS DWN ~T-TWINS ~EPSILON-JAY ---STOP--- <br>TRNSPND IMP SGNL ---STOP--- <br>FWL PLY SSPCT ---STOP--- <br>~SJ-2-2121C RPTS ---STOP--- <br>---EOT--- '' |
| 2563868.9243 |Lawrence receives a video message from his father: <br><br>//"By now you will have discovered the reason I sent you to Star Station Regillus. And I'm sure he told you I was attacked several days after you left. Do not fear. I survived and was no more seriously injured that you see. Perhaps that will disappoint you. I cannot say."<br> "I confess, I was not fully convinced the situation was as bad as he was claiming when I first read his message. Since then, I have become worried that Anastius may be understating the gravity of the situation. You see, I was attacked not by pirates or criminals, but by mercenaries.<br> "Mercenaries Lawrence! Do you know what that means? If you are not yet to drunk to think as you play this message, I am sure you will fathom the implications. You are a Bourne, and the brightest of your siblings. The guards managed to capture an NCO and questioned him. They were after a message that was supposed to have come by ship from Durakaan. Mark that, my son. It is important. It may mean more to you now, than it does or ever will to me. For I have my own tasks in this affair and you now and you have yours."<br> "I hope the dear old Senator didn't have to order you to do your job. But if he did -- " his father shrugged and kind of chuckled. "Then I'm sure he did. Anastius knows, as I know, that to prevent the coming civil war there will be those who must be convinced to take the right side, there will be others who must be convince not to fight, and still others who will have to accept that the old alliances are dead and that new partnerships and new alliances must be formed. That kind of diplomacy takes more than just skill and training. It takes native talent. And that you have in abundance."<br> The image lurched as though the recording had been stopped and restarted. "I have loaded an encrypted file onto this clip. It contains a list of people, their positions, and what I have learned about them over the years. Attitudes, political leanings, personalities, that sort of thing. I'm sure you will find it useful in the coming months and years. You already know the pass code. You've been using it to steal into my office since you were sixteen.<br> "Be well my son. Do your job. Do your part. The time has come."// |
| 2563868.9891 |The ship is attacked by Colonel Verlag A. Ekhart's G&ouml;tteskrieger (God's warriors). Ekhart offers to let the others go if they turn over Lawrence, "dhe son of dhe Senator Bourne." <br>Morgan knows about Ekhart and his G&ouml;tteskrieger: <br>It's a brigade sized force (i.e. about 5,000 troops -- the size of an [[Imperial Legion|Imperial Legions]]) of mercenaries routinely employed by the more unscrupulous factions inside PAC. Bullying, extortion, racketeering, protection rackets, not to mention all out assaults -- all are tactics associated with Ekhart's G&ouml;tteskrieger. In his mission to advance the aims of his employers, he's been known to attack almost everyone -- pirates, the Medraas, the Legions, other mercenary outfits both MERC and nonMERC.  Ekhart has a reputation for doing what it takes to win -- //whatever// it takes. For certain, the VLC would //love// to get their hands on Ekhart! |
| 2563868.9970 |Interrogating a wounded Ekhart, Qamala learns that his G&ouml;tteskrieger was hired by ITI -- Intersteller Transport Interactive, a freight corporation as well known as our own modern day "Viking" or "Redding" freight lines  -- to kill "Dhe Princess Aldeborahnn. Dhe infidel spawn of dhe goddless ones voo claim sovereignty over Allah's vorld!" Lawrence's father supposedly knows where Aldeborahnn is supposed to be at a specific time. Apparently LBIII was supposed to be leverage to gain Senator Bourne's cooperation.|
| 2563869.1220 |The fuel nozzles are finally replaced and power is applied to the ship's internal power plants. |
| 2563869.1358 |[[The Staff Meeting|http://www.lostcoastgaming.com/node/760]] takes place. <br>Qamala reveals that "//contrary to popular belief, Princess Aldeborahnn actually has not been kidnapped...//" And that the courier ship which brought her to Star Station Regillus also carried that information to The Senator. //The ship we are to track down now, which is down on that moon in The Twins' system, carried another message to another senator, young Lawrence's father. It was from Aldeborahnn herself. It told the older Bourne when and where to be for a secret meeting with her.//<br> Lawrence added that: "//Several hours ago I received a message from my father," he offered. "He confirmed that the downed ship was carrying a message of vital importance to him from the Princess. He also expressed that we aren't the only ones who know this, so we won't be the only ones searching for it. We might already be running behind in this race.//" <br> Willa: "//The crashed ship may have even gone down with a little help from [the pirates in The Twins system].//"<br> Morgan: "//If we're headed to Epsilon, we will be out in the open -– we can be monitored from Beta. There's a ... camp there. Exiles, mostly; criminals too. The kind of people they don't let stand trial.” ... “We're going to need to be coordinated ... tactical and ship...//" |
| 2563869.2200 |Qamala and Leeda debrief Ekhart one more time as LBIII listens from the medical bay while the ship finishes fueling.<br>* Ekhart admits that ITI has spies on the station. It was they who told Ekhart about //Sagitto// (apparently //Audacity's// former name).<br>* He also claims he brought "two fast ships" because he knew //Sagitto// was a fast ship.<br>* ITI's spy is the Rigellian bar tender humans call Meena (which means Meena heard Senator Bourne's message to his son.<br> * Ekhart claims an ITI man named "Weisman", who is supposedly ITI's Chairman of Operations  is the one that hired he and his mercenaries to kidnap LBIII. Apparently Weisman believed that LBIII would be sufficient leverage to secure Senator Bourne's cooperation. Unfortunately, LBIII, who knows all of ITI's BOD, has never heard of a man named Weisman on ITI's BOD.<br>* Unfortunately Ekhart doesn't seem to have been told exactly what it is this Weisman wants Senator Bourne to do. Only that his services would no longer be needed after he delivered young LBIII to Weisman. |
| 2563869.5300 |//Audacity// launches! They're immediately picked up by one of Ekhart's ships, but Willa finally suckers them, then jumps to warp 9 -- apparently just a bit faster than Ekhart's corsairs. |
| 2563871.5478 |After two days of warp 9 do "south", they've finally left the corsair behind. Willa sets course for The Twins at warp 10. |
| 2563896.0505 |A small blip appears on the granar display, apparently right in their path. Paladin, now back in command, drops warp to investigate. The blip proves to be a small merchant ship with a hole blown in the stern. Probably a missile hit. |
| 2563896.1532 |A short warp brings them close enough to look the ship over and they pick up a faint EM signal that Leeda identifies as the distinctive pulsing hum of a cryogenic plant running. After two more hours at sublight and some fancy docking maneuvers by Paladin, //Audacity// links up with the freighter and begins boarding operations. |
[<img[http://rpg-fusion.com/files/ALDE/Data-Disply_Headset.jpg]] ''Description:'' This headset represents a major breakthrough in interactive display technology. It can be interfaced with virtually any number of devices of the same or lower [[Tech Level]] via a multiplexer. The multiplexer not only coordinates the devices for the user but can also synchronously record the multiple data signals onto one standard data clip for later review.

It is common for any technician using equipment to wear one of these. And every member of a ship's bridge and engineering crew will also be found wearing one. They are also ubiquitous for "air crews" on smaller craft. For example, a surveyor flying in a [[Grav Belt]] and using a [[Neural Activity Sensor]] can control both the sensor and his [[Grav Belt]] with his headset. If s/he's also wearing a [[Vacc Suit]] s/he can monitor and control that as well.

The headset allows the wearer to use eye motion to control the movement of device control settings. With practice, the use of the headset to control multiple devices can become as instinctive as flipping a light switch to turn on the lights. When desired, the headpiece can be swung out of the way above the head; when the display is turned off it's transparent. 

About three percent of the population find it difficult to focus properly on the headpiece and are unable to use the device.

''Cost:'' 5,000 Denarii
''Weight:'' 0.1kg
-----
Introduction
Deuterium is a stable isotope of hydrogen, meaning that it is not radioactive and has a very long life span. Deuterium is still the same element as hydrogen but it has one neutron. Deuterium was discovered by Harold Urey, in 1932.  When two deuterium ions bond with one oxygen ion, deuterium oxide, heavy water, is formed. (Not what we want here, but now you know the relationship.) The overall deuterium to hydrogen ratio on earth is 1:6600. 

Tritium (Hydrogen-3) is a radioactive form of hydrogen. Tritium, as a form of Hydrogen, is found naturally in air and water. Most hydrogen is made up of one proton, and an orbital electron, but tritium has two extra neutrons in the nucleus. But because Tritium has a half-life of only 12.3 Standard Years, it has to be made "shortly" before use.

The aneutronic fusion plants in use in modern star ships (and on many "planet fall" power stations) produce little to no nuclear waste that must be disposed of. Both the Deuterium and Tritium are consumed in the reaction process, "breeding" only more more Tritium, which is reprocessed for further reaction. But because less Tritium is produced through the reaction process than is needed to consume a given amount of Deuterium, some Tritium must be "harvested" and stored aboard ship (or in the power plant).

For the interested: The reaction of one Deuterium nucleus fusing with one Tritium nucleus produces around 17.6 million electron volts (`MeV) of released kinetic energy. Translated, tha's ''17.6 million volts'' of electricity from one nucleus fusing with one nucleus.
/***
|Name|[[DragScrollPlugin]]|
|Source|http://www.TiddlyTools.com/#DragScrollPlugin|
|Documentation|http://www.TiddlyTools.com/#DragScrollPlugin|
|Version|1.0.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|use SHIFT-DRAG to scroll the browser window|
DragScrollPlugin allows you to use your mouse to scroll the browser window by grabbing anywhere on the background of the document while holding the SHIFT key.
!!!!!Documentation
<<<
Whenever your page contains extra-wide content that does not 'wrap' onto extra lines, in can result in both horizontal and vertical scrollbars.  Unfortunately, using each scrollbar separately to navigate across the page can become very tedious and makes it more difficult to interact with your content in a flexible and effective manner.

''Drag-scrolling allows you to move in both the horizontal and vertical direction at the same time, simply by holding SHIFT while clicking and dragging the mouse across the page.''
<<<
!!!!!Configuration
<<<
<<option chkDragScroll>> enable //drag-scrolling//
<<<
!!!!!Revisions
<<<
2008.12.01 [1.0.0] Initial public release
<<<
!!!!!Code
***/
//{{{
version.extensions.DragScrollPlugin= {major: 1, minor: 0, revision: 0, date: new Date(2008,12,01)};

if (!config.dragscroll) { // only once
	config.dragscroll={
		// use to end event handling for processed events
		processed: function(ev) {
			var ev=ev||window.event;
			if (ev) { ev.cancelBubble=true; if (ev.stopPropagation) ev.stopPropagation(); }
			return false;
		},
		// MOUSE DOWN - SET CURSOR, SAVE SCROLL DATA
		savedMouseDown: document.onmousedown,
		mousedown: function(ev) {
			var ev=ev||window.event; var target=resolveTarget(ev); var d=config.dragscroll;
			var scroll=ev.shiftKey&&config.options.chkDragScroll;
			var skip=['input','option','textarea'].contains(target.nodeName.toLowerCase());
			if (!scroll||skip) { // handle event normally
				if (d.savedMouseDown!=undefined) return d.savedMouseDown.apply(target,arguments);
				else return;
			}
			d.mX=!config.browser.isIE?ev.pageX:ev.clientX; d.sX=findScrollX();
			d.mY=!config.browser.isIE?ev.pageY:ev.clientY; d.sY=findScrollY();
			d.scrolling=true; document.body.style.cursor='move';
			return config.dragscroll.processed(ev);
		},
		// MOUSE MOVE - UPDATE SCROLL DATA AND SCROLL THE WINDOW 
		savedMouseMove: document.onmousemove,
		mousemove: function(ev) {
			var ev=ev||window.event; var target=resolveTarget(ev); var d=config.dragscroll;
			if (!d.scrolling || !ev.shiftKey) { // NOT SCROLLING
				if (d.savedMouseMove!=undefined) return d.savedMouseMove.apply(target,arguments);
				else return;
			}
			// set scroll pos based on diff between new and old (x,y)
			var mx=!config.browser.isIE?ev.pageX:ev.clientX;
			var my=!config.browser.isIE?ev.pageY:ev.clientY;
			var sx=!config.browser.isIE?findScrollX():d.sX;
			var sy=!config.browser.isIE?findScrollY():d.sY;
			window.scrollTo(sx-mx+d.mX,sy-my+d.mY);
			return config.dragscroll.processed(ev);
		},
		// MOUSEUP - CLEAR THE DRAG DATA, RESET THE CURSOR
		savedMouseUp: document.onmouseup,
		mouseup: function(ev) {
			var ev=ev||window.event; var target=resolveTarget(ev); var d=config.dragscroll;
			var wasScrolling=d.scrolling; d.scrolling=false; document.body.style.cursor='auto';
			if (d.savedMouseUp!=undefined) return d.savedMouseUp.apply(target,arguments);
			if (wasScrolling) return config.dragscroll.processed(ev);
			return;
		}
	}
	// DEFAULT SETTING (ENABLED)
	if (config.options.chkDragScroll===undefined) config.options.chkDragScroll=true;
	// HIJACK MOUSE HANDLERS
	document.onmousedown=config.dragscroll.mousedown;
	document.onmousemove=config.dragscroll.mousemove;
	document.onmouseup  =config.dragscroll.mouseup;
}
//}}}
A most arrogant and mysterious race. Ironically, the Duranaki are also the rulers of the Empire. They are a subterranean people who live in dimly lit vast underground complexes or in orbiting stations in the blackness of space. While not opposed to going outside, bright sunlight is painful to the Duranaki and they will tend to avoid going out in it, or will wear heavily tinted visors to protect their eyes from the brightness.

A proud people, the Duranaki are convinced that they are a superior race to all others and that manual labor is beneath them. Thus, to avoid such labor they eons ago developed the habit of kidnapping youths of the other race indigenous to [[Durakaan]], the [[Myri]], and "conditioning" them for use as slaves. Myri so treated are then provided with such knowledge as they will need to perform their duties in service to their new Duranaki master. There is no chance of rebellion or uprising; such thoughts cannot exist in the conditioned [[Myri]] mind. They are completely happy doing what they do, and only being kept from their task causes them anxiety. The Duranaki so trust their [[Myri]] slaves (or, perhaps they trust their conditioning process) that most of the [[Thavan]], //and// the [[Legions|Imperial Legions]] are (or were, during the early days of the Empire, composed of [[Myri]]. These strong, hardy slaves make excellent domestic servants, laborers, bodyguards, and prostitutes (see below).

The exact nature of the conditioning process is a closely guarded secret, but it appears that the process will not work on a Duranaki or [[human|Human]]; only Myri minds seem to be susceptible. This could be either due to the fact that most of the research has been devoted to perfecting the [[Myri]] condition process (there is always a market for more domestic slaves among the Duranaki, and now many [[human|Human]] cultures), or it could be that the [[Myri]] mind is simply very susceptible to such conditioning. They are not, it must be admitted, overly bright, and are quite trusting. Too, it is known that the Duranaki have always been fascinated by the tall, fair [[Myri]] who share their planet with them, and gain some satisfaction from dominating them. They cut their slave's hair in Duranaki fashion (though leaving it the natural blond) and go so far as to dress them in white silk clothes to further accentuate the already blatant differences between the races. All [[Myri]] slaves also wear a golden collar of a very strong alloy, engraved with the name of his or her master.

One would immediately wonder why the [[Myri]] have never retaliated against this affront to their freedom.  Apparently they hold these mysterious sub-surface dwellers in such awe and fear that they accept without question that one of their fellows has been "chosen" to serve the Duranaki. Of course, the loss of a family member is often traumatic, but the thought of retaliation does not occur to them, perhaps because, in some simple way, the [[Myri]] realize that they need the Duranaki as much as the Duranaki need them. Too, the Duranaki's affections for the [[Myri]] are betrayed by the custom of masking any [[Myri]] slave when that attends them while visiting the [[Myri]], which prevents him being recognized by a relative. Due to his conditioning, the slave would not recognize the relative should he see one, and the [[Myri]] as a whole do not take offense to those taken from them to serve the Duranaki.

!!Social Structure

The Duranaki are an //extremely// caste based culture. The caste one is born into is the cast one is most likely to die in because, according to Duranaki custom, that caste provides the most suitable opportunities for your //line//. Whether there is any truth in the "fact", it is true that few even consider opportunities outside their caste. For the Duranaki, at least, this accepted "fact" is accurate enough to have survived for over 10,000 (Standard) years!

What we think of as cities and towns are all arranged to account for the castes that make up the urban environment. Restaurants, theaters, public transportation, social services, are all segregated. Some establishments serve only a particular caste, others a range of castes, but //all// segregate either by exclusion (whom they serve) or separation. For a member of a lower caste to be seen socializing with someone of a higher caste would be seen as extremely presumptuous and rude. If the upper caste member engages the lower caste member s/he is treating them "as an equal" and so lowers his or herself to that lower caste member's level. A //very// distasteful social gaff!

Part of the explanation for the durability of something as rigid as the social caste system can be attributed to the deeply ingrained Duranaki trait of "sticking with what works." The old adage of "if it ain't broke don't fix it" seems to a part of the Duranaki race itself. Change occurs very slowly, one micro-step at at time. On the positive side, this coupled with their distaste for violence and mistreatment of others makes them quite suitable rulers of an interstellar empire. They're not likely to go rushing off on a political whimsy that jeopardizes the safety of the citizens of the Empire without having thoroughly thought out the repercussions. Nor are they likely to stand idly by while a subject planet is over run. On the other hand it also makes them very slow to react to the political tides of change. And some say this is why "the Empire is crumbling."

(Others completely disagree, and see the current uprisings at the edges of the Empire as simply a "phase" that will pass in a few cycles.¹)

In addition to the caste, the Duranaki also align themselves with their //Line//. An individuals line is his or her genealogical record and, along with one's caste, specifically places one in the society. Almost all specific positions within a caste are "placed" by "line" as certain genealogical lines of individuals are seen to be more suited to certain tasks than others, just as certain breeds of dogs are more suited one task than another. But because one has a line should //not// be taken to mean one has a family! Line alliances are often more political than even social. Forget about paternal love. The father never was interested in the child (as a parent, anyway). Any other interest will die with his amorous interests in the mother -- sooner rather than later, usually. The mother's responsibilities to the child (thankfully) end at puberty. Care is then passed to the massive social system where the child's education and career training begins. The only interest either parent will have in the child after those points will be political, social, or both -- and that after the child has reached adulthood.

Virtually all manual labor and "menial chores", including housekeeping, farming, cooking, etc., are performed by [[Myri]] slaves. In point of fact, if all the [[Myri]] suddenly disappeared or died, Duranaki society would collapse. The gentle [[Myri]] raise the young, cook the meals, clean the buildings, stock the shelves, sell the groceries, carry the groceries, and so on and so forth. According to Duranaki statistics, "it takes an average of 2.5 domestic [[Myri]] slaves to properly support a Duranaki." And that doesn't include those deployed in commercial or government service. Not surprisingly, it is rare to see even a plebeian Duranaki without at least one [[Myri]] slave in attendance. One human visitor to [[Durakaan]] quipped disgustedly, "I doubt [the Duranaki] even wipe their ass themselves!"

In some cases, at some caste levels, he's right!


!!!Interpersonal Structures

The Duranaki have no concept of "family" in the sense that [[humans|Human]] use the term. The closest thing to family that a Duranaki knows is the social creche. A network of friends and acquaintances formed from of one's work and social contacts (and therefore from within one's caste and maybe one's line) that serves a whole host of social services from co-parenting the young to helping out with the elderly. Cities and towns maintain vast social support service systems for the communities that cover everything from health care to elderly care to day care to a complete boarding school system that intakes every Duranaki child at the age of 12. And while these services are (more or less) segregated by caste, they //do// cover the entire net from top to bottom. 

Taking care of those of lower social standing is an important responsibility of those with greater social standing from the ruling [[Line of Aureleous]] to the [[Myri]] slaves that clean the sewers. Mistreatment and/or cruelty is abhorrent to a Duranaki -- though some would say that what they lack in physical cruelty they more than make up for with psychological cruelty simply due to their snobbish, arrogant natures.

It stands to reason then, that the Duranaki also see the opposite sex as equals. This might have as much to do with the almost complete lack of physical difference between the sexes (size and physical strength) as it does their social/moral outlook. While they certainly make allowances for the obvious and necessary differences between the sexes (motherhood, etc.), the equality of the sexes holds true from the Imperial Throne, which has seen as many empresses as it has emperors, to the Senate, to the lowest Duranaki plebeian.

Being every bit as sensual, erotic, and hedonistic as they are arrogant and self-righteous, Duranaki pairings are usually as hot and steamy as they are limited in duration. The race seems as constitutionally incapable of maintaining a long term relationship as it does showing physical restraint -- another planetary trait they share with the [[Myri]]. So while a Duranaki will have sex almost as easily as s/he'll say hello, due to caste and line concerns, producing a child is an entirely different proposition. 

Genealogists must be consulted, castes and lines compared, and so on and so forth to ensure the "right" child is produced by the pairing; and the parentage is tracked with meticulous accuracy, as that places the child accurately within its caste //and// it's line. [[Aldeborahnn]] can trace her lineage back some 8,000 Standard years, for instance. And that's not uncommon for a Duranaki, regardless of caste. The politics surrounding what will be -- or has been-- recorded in the genealogical record has started more than one war between rival lines and/or rival castes! Needless to say, there are very few "accidental" pregnancies -- though there are quite a few //claims// of accidental pregnancy. Amazingly, the number of such claims that would elevate the child's station vastly out number the claims that would equal or lower the child's station.

!Governance

Setting aside the [[Empire]] for a moment (to the average Duranaki it is an entity unto itself that touches their lives only in the largest structual sense) every Duranaki society is structured the same. The center of government is the Jarhaad Council, which is made up of seven members from seven lines of the local ruling caste. It is their job to keep the bureaucracy that maintains the infrastructure and the massive social services and education system running. 

It is also their job to enforce the laws, and for that every Jarhaad Council has the [[Thavan]], the law enforcement half of the government, and its local judiciary.

Exactly how much access an individual has to its Jarhaad Council depends on one's Imperial status: Citizen, non-citizen, slave. Citizens, regardless of race or caste, have a right to access and to trial. Non-citizens have no right to Council access and their cases are handled internally by the [[Thavan]]. Infractions by slaves can be complex. But in general the slave's owner is responsible for the actions of his property. (For more information see [[Imperial Law]].)

!Dress and Appearance

Draw to mind an image of one of those impossibly slender "size 0" cat-walk models. Make her tall, about 6 feet. Give her milky white skin with long white, silver, or pale blond hair. Like the [[Myri]], she'll have no body hair. It seems to be a planetary trait. Her eyes will be quite large in proportion to her narrow face, and will be reddish-gold, blue, green or violet.

You now have an average Duranaki female. To envision the male: Flatten the chest, change the genitals and the hair style. Men prefer somewhat shorter hair than the females, but still no shorter than shoulder length. The height and body build are the same for both sexes.

The average Duranaki can be as short as 5'6" and as tall as 7'6"; as with all races, there are exceptions on both ends. Skin color ranges from actual white to the human "fair skinned" tones, and it often turns a sickly opaque that leaves the veins showing in the elderly. The average is a "milky" or "porcelain" color. In general, the higher the caste, the taller and paler the hair, skin and eyes; the lower the caste, the shorter and "darker" the hair, skin and eyes. 

Duranaki dress and adorn themselves for looks, not for practical reasons (that's what slaves are for) or for modesty. In point of fact, their clothing and jewelry choices are usually quite garish, unseemly, and entirely //im//practical -- at least to human eyes.

They love to braid and bead their hair, and to die it strange colors. They love tattoos and piercings. And unlike humans, if they have body art, they'll display it, rather than covering it for reasons of modesty! They love to wear makeup and jewlery (both sexes), especially bright colors that set off their pale skin.

If you can throw out your ideas of body modesty and then start thinking as far to the edge of the punk map as you can go, you'll hit pretty close to what the Duranaki like in the ways of clothing, makeup, hair styles, tattoos, and jewelry.

!!Racial Mixing and Interbreeding

Without assistance, a Duranaki cannot impregnate or be impregnated by a non-Duranaki. This makes the presence of half-breed Duranaki's very rare indeed!

!~NonHuman Abilities

The //average// STR of a Duranaki is 0. These points of STR are applied to PRE and/or EGO. Normal Human Maximum for these two stats (PRE and EGO) does not apply and can go as high as 30.

!"Average" Duranaki Package

''==NONE==''

A pure blooded Duranaki would make an unsuitable PC for this campaign. By their very nature, they would attempt to "command" every other member of the group, and even go so far as to demand deferential treatment. 



-----
1. A "cycle" usually refers to 365 Standard days on the [[Imperial Galactic Calendar|ImperialGalacticCalendar]]; one revolution around the sun, or a "year", as we would put it.
![[UWP|Universal World Profile]]: Earth 7208 ~C86766D-4 N Lo Po Mr A121 Im

It is would be more than fair to say that Earth almost didn't survive. You can blame that on politics, you can blame it on humanities choices, you can blame it on natural cosmic events. But whatever you blame it on, it's a fact that humanity almost ended without ever exploring space.

With riots on the rise, government toppling, and water and other natural resources increasingly scarce, came several technological advances, one right on the heels of the other. [[Deuterium-Tritium]] fusion reaction was "discovered" in the since that it was safely harnessed; at the same time [[warpline transit|Warpline Transit]] was also discovered, but relative velocities much greater than the speed of light was nearly impossible with the enormous power the of the [[duterim-tritium|Deuterium-Tritium]] fusion reactor; and the third major breakthrough was gravitics -- i.e. the study of gravity and the ability to create miniature gravity fields and wells.  

Nearly twenty years earlier, matter energy transport had been demonstrated by the Russians, but it had taken all the power a major power station could produce to transport a can of been 200 miles. This was the fourth technology awaiting a major breakthrough in power generation technology.

In any event, suffice it to say the 22nd century proved to be one of as many giant leaps in technology as the 20th century had been. And the culmination served to free mankind from the planet just as it began a total collapse.

In 2148, after several unmanned warp ships had successfully surveyed the planet,  the first manned mission to the planet [[Midgard|Midgard: Humanity's modern center of power]] launches. It would prove to be the beginnings of an exodus from Earth of all of civilized humanity, leaving only what one political scientist called "the barbarians" behind on the remains of a smoldering and wasted planet.

--------
[img[http://www.lostcoastgaming.com/files/images/Earth-AlphCen.png]]

That bright star in the very top left-hand corner of the picture is Rigel Kentaurus A (Alpha Centauri), location of [[Midgard|Midgard: Humanity's modern center of power]].
----------

Today, thanks primarily to the intervention of the [[Empire]], Earth is well on along on the road to recovery. Though very few colonists from either [[Midgard|Midgard: Humanity's modern center of power]] or [[New Home]] have returned to Earth, [[Legion|Imperial Legions]] garrisons stationed on the planet have put an end to the tribal violence that had over-run what was left of the habitable land. Terraforming operations were begun shortly thereafter and are doing well. So while Earth still has little to offer the [[Empire]] or man kind except ties to its history (and many believe this is precisely why the Emperor spent the money to save the planet), it is no longer in danger of becoming Mars twin.
/***
|Name|Edge of Night|
|Source|http://www.TiddlyTools.com/#Edge of Night|
|Version||
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|CSS|
|Description|theme: dark blue sunset photo background|
|StyleSheet|Edge of Night|
|PageTemplateReadOnly|PageTemplateReadOnly|
|EditTemplateReadOnly|EditTemplateReadOnly|
***/

[[StyleSheetAdjustments]]
[[BrightText]]
/* ==== Edge of Night ==== */
/*{{{*/
body
	{ background-image: url('[[Edge of Night Background]]'); background-color:#113; }
.groupbox
	{ background-image: url('[[TexturesParchmentGray]]');}
.menubox
	{ background-image: none; background-color: #002; border:1px solid; }
.viewer
	{ background-image: url('[[TexturesMarbleBlack]]'); background-color:#111; border: 1px solid #999; -moz-border-radius:1em;-webkit-border-radius:1em; padding:1em; }
.header
	{ background-image: none; background-color:transparent; color:#ccf; border-bottom:0px solid #036; }
.siteSubtitle
	{ color:#0c0; }
.floatingPanel, .attachPanel, #importPanel, #exportPanel
	{ background: #eee; background-image: url('[[TexturesParchmentGray]]');}
.floatingPanel a, .attachPanel a, #importPanel a, #exportPanel a, 
.floatingPanel .button, .attachPanel .button, #importPanel .button, #exportPanel .button,
.floatingPanel .tiddlyLinkExisting, .attachPanel .tiddlyLinkExisting, #importPanel .tiddlyLinkExisting, #exportPanel .tiddlyLinkExisting,
	{ color:#009; }
#messageArea 
	{ background: #ddf; }
.siteMenu .floatingPanel
	{ background-image: url('[[TexturesParchmentGray]]'); }
.viewer h1,.viewer h2,.viewer h3,.viewer h4,.viewer h5 { background: #666; color:#fff; }

.tabContents
	{ background-color:#ddf; color:#000; background-image: url('[[TexturesParchmentGray]]'); }
.viewer .tabContents, #sidebarTabs .tabContents
	{ background-image:none; background-color:#002; color:#fff; }

.tabContents a, .tabContents .button, .tabContents .tiddlyLinkExisting
	{ color:#99f; }
/*********
#tiddlerWelcome .viewer .tabContents
	{ background-image: url('[[TexturesMarbleBlack]]'); }
#mainMenu .menubox
	{ background-image: url('[[TexturesMarbleBlack]]'); }
**********/
/*}}}*/
!usage
{{{[img[Edge of Night Background]]}}}
[img[Edge of Night Background]]
!notes
&copy; 1999 ELS Design Studios - do not copy without prior explicit permission
!type
image/jpg
!file
./images/sunset.jpg
!url
http://www.TiddlyTools.com/images/sunset.jpg
!data
<<gradient vert #ffffff #ffdddd #ff8888>>
Though nobody seems to be able to verify it one way or the other, rumor has it that the Magellen and Eldyri have had an intersteller relationship for many ([[Standard]]) centuries.
The Eldyri can be a most unnerving race for unsuspecting humans. Even in the 24th Century, being seduced by a 9 year old is considered rather immoral by most human cultures. But if you were to stand a 30 year old Eldyri next to an 8 or 9 year old human, you quite literally wouldn't be able to tell the difference. For that matter, if you were to stand an 8 or nine year old //Eldyri// next to an 8 or 9 year old human you wouldn't be able to tell the difference.

Which has lead to to no end of problems between humans and Eldyri. (Meanwhile, the Eldyri and [[Duranaki]] have their //own// problems.) And things don't improve much if one digs deeper:

To the extremely driven and goal oriented human, the Eldyri, even the "grown up" ones, do indeed often seem child like. Motivated by (seemingly) nothing, unable to focus on a task for more than a moment, easily frustrated and prone to fits of temper when things don't go right, the Eldyri do indeed seem, to human eyes, like the children they look like.

But that's where the similarities end!

* What the Eldyri are lacking in physical stature they //more// than make up for in mental capabilities. (See below.)
* They had mastered interstellar space flight even before the [[Duranaki]] -- though not by much.
* The Eldyri are the //only// race to have successfully defeated the Empire in its attempt to take over their star system. And they did so handily!
* They are also the only race to have forced the [[Empire]] into signing a treaty for fair trade and commerce.

So for all their child like seeming qualities, the Eldyri are not to be trifled with. Something many of the wiser trade merchants of [[PAC]] have come to realize -- if only reluctantly.

''Non-human Abilities''

Due to their size and physical development (or lack thereof), the Eldyri are built on the "small child" model (see the "average" Eldyri package deal below).

That said, //all// Eldyri are highly telekinetic and resistant to mental attack. These psi abilities kick in sometime during  puberty and are fully developed by the time the child reaches adult hood. (Which is why parents have no trouble with real 9 year old children who are physically as big as they are. The adult has TK, the 9 year old child doesn't.) The average Eldyri has a STR of 10 via the TK power with "Fine Manipulation" (+25 pts). All Eldyri also have other "psi" powers. In addition to a native Mental Defense, Telepathy and Mind Link are the two most common powers, and so are listed below in the "average" package deal.

All adult Eldyri also have a base of 1d6 Ego Attack, though in most its undeveloped and never used. (Limited Power -1: Instinctive response to life threatening situation (-2).) (+3 pts)

Some Eldyri have other mental powers as well. Sometimes they're developed to a greater or lessor degree; sometimes they surface in average ("incompetent normals") individuals and are only latent abilities.

''FATE:'' "Eldyri" Aspect required

''Inside the Eldyri''

Greed, lust, avarice, pride -- these are all qualities so far outside the Eldyri experience that they have only an intellectual experience of them. The Eldyri produce what they need or desire, and no more. Creativity and curiosity drove them to the stars, not conquest or more fuel for consumption. In fact, the Eldyri home planet of [[Yyvaan]] looks today much as it did twenty millennium ago. Long before star travel and grav vehicles. Creativity and curiosity created them; creativity and curiosity maintains them. When it no longer does, it is certain the Eldyri will abandon them as they have so many other endeavors.

''Government:'' Humans refer to the Eldyri system of government as 'tribal'. Probably mostly because they can't find any other appellation that fits. The Eldyri, however, see their system (they don't really call it a government) as `adequate'. It serves their rather minimal unified needs and that's all it really needs to do -- isn't it?

The Eldyri use their central government primarily to interface with other races. Their local governmental systems are little more than public works departments that make sure the planetary infrastructures are maintained in good order. But even these functions are small. The Eldyri don't use money internally, so if something needs doing, they go find someone who knows how to do it, and who wants to do it, and it gets done. Everything from repairing the town hall to building a star base is handled in this way. The Eldyri do things because they //want// to, not because they //have// to.

To an Eldyri, life is about play and enjoyment. "Work," as the other races define it, is disgusting and repulsive. One of many reasons the gentle Eldyri don't go out of their way to socialize with the other races, though there is certainly much [[trade]].

''Culture:'' For all of their advances, Eldyri culture still revolves around the clan. A foreigner visiting [[Yyvaan]] will immediately be struck by the lack of housing districts, apartment complexes, and in general "urban sprawl." This is because the basic unit of Eldyri society is not the family, but the clan. And a clan in modern Eldyrian society can comprise several thousand members, all of whom live in one large //aeryian//, or "clan house". 

Some qualities that humans hold very dear such as personal privacy, modesty, secrecy, security, and so on are totally absent from the culture and mind set. Public toilets are -- well, //public//. The idea that this most natural of body functions is disgusting or dirty and therefore to be taken care of in private (for example) is seen as very strange and unnatural. In fact, until contact with other humanoid races, it hadn't even been imagined!

Likewise, locks and security systems are never used in places where foreigners are not allowed. Experience has taught the Eldyri to use them in space-ports and in other places where they allow foreigners and aliens. In fact, some researchers say the loss of innocence contact with hostile races such as, primarily the [[Medraas]] but also the [[Empire]], has done much to taint the Eldyri's "charming, child-like nature." Others say it was a good thing and about damned time they grew up a little.

''Appearance:'' Though the Eldyri look to humans like a race with a bad case of arrested development, they have a very refined sense of personal adornment. Clothing, jewelry, and makeup is worn either for practical reasons, for play, or for display, much as it is in human cultures. And in fact, their preferred styles of adornment are very similar to that of adult humans, with some obvious and some in-obvious exceptions based on the cultural differences outlined above.

''Racial mixing and interbreeding:'' The Eldyri are not racial purists by any stretch of the imagination. If it sounds like fun, they'll probably do it -- at least once, and that certainly includes sex. In fact, the Eldyri rather enjoy trying to seduce humans mostly because they find the reaction most humans have hystercially funny. That said, they are also very loyal to their clan and are unlikely to leave their clan without permission, or to produce a child with an alien without permission. Also, any child so produced would most likely be considered a member of the clan, and the clan elders know this. So "serious relationships" are entirely different matter than a simple "roll in the hay."

Pairings between the Eldyri and other humanoid races do not readily produce children and the Eldyri know it, which does little to encourage restraint on their part. The [[Duranaki]] cannot reproduce with an Eldyri even with help. The other humanoid races can with varying degrees of reproductive assistance. 

''FATE:'' 

* 'Eldyri'  Aspect required
* Cannot take Strength skill (use TK instead)
* Endurance-1 is MAX

* Required Skills:
** Mental Attack & Defense (Average or better)
** TK (Fair or better)
** One additional Psi skill at Average or better
* Required Eldyri Key:
** Body Of A Child
*** 1 XP When child-like looks/body cause inconvenience or is used to advantage.
*** 3 XP When child-like looks/body endanger life of character or another, or character uses child-like body to advantage at great personal risk. 
*** ~BuyOff: Cannot be bought off.

-------

{{indent{'''Average' Eldyri Package''
| !Cost | ! Characteristic/Power | !Val |
| -10 |STR | 0 |
|  -6 |DEX | 8 |
| -10 |CON | 5 |
| -10 |BODY | 5 |
| 0  |INT | 10 |
| -4 |EGO |  8 |
| -5 |PRE |  5 |
| 0  |COM | 10 |
|>|>| ''Figured Characteristics'' |
|  1 |PD | 1 |
|  0 |ED | 1 |
| -8 |SPD | 1 |
|  0 |REC | 5 |
|  0 |END | 10 |
|  0 |STUN | 10 |
| ''-52'' |>| ''Total Characteristcs'' |
| 25 |>|TK +10 STR, Fine Manipulation (+10) |
| 15 |>|Telepathy 3d6 |
| 10 |>|Mind link, any one mind at a time (+5) |
|  3 |>|Ego Attack, 1d6, ED applies (-1), No Conscious Control¹ -- instinctive survival response (-2) |
| 16 |>|Mental Defense 16 pts |
| ''69'' |>| ''Total of Psi Powers'' |
|>|>| ''Disads'' |
| -15 |>|Age: Permanent Age 10- maximum |
|  2 |>| ''Package Total'' |

All mental abilities are open to Eldyri ~PCs.

1. This limitation can, and probably //should// be bought off for a PC Eldyri.
The latest Emperor from the long [[Line of Aureleous]], and great grandfather (as [[humans|Human]] count things) of the beautiful Princess [[Aldeborahnn]], Emperor Trægen is now in his fiftieth year of rule as Emperor of the sprawling galactic [[Empire]].

As has been hinted at elsewhere, while a whily politician, the Emperor Trægen has otherwise been a vast disappointment as a ruler. In fact, his ineptitude at managing the vast Imperial bureaucracy with its never ending internecine political gambits is seen as the major reason the [[Empire]] is now largely believed to be on the verge of collapse. 

Pundits of all stripes are on record as believing that [[Aldeborahnn's|Aldeborahnn]]  kidnapping can be blamed entirely on the Emperor's perceived weakness and the resulting weakness of the [[Empire]] as a whole.

The weakness of the [[Empire]] coupled with the Emperor's advancing age and rumored failing health have only redoubled political gamesmanship of all kinds. And s/he who holds [[Aldeborahnn]], the most likely candidate for the Imperial Throne, holds the keys to the kingdom. 
By now it should be clear that the Duranaki are the ruling race of The Empire, and that the head of The Empire is the planet Durakaan which humans cataloged as BD-09¯431.

The Empire is the large cohesive, government in the interstellar community. As such, even though it does not rule universally, it exerts such weight that its influences are felt far beyond its borders. Imperial Law is the standard by which other legal systems are measured. The interstellar medium of exchange is the [[Imperial Currency]] (Ç). And of course, The Empire exerts enormous amounts of economic influence beyond its borders.

!The Imperial Government

!!The Central Government

The central government of The Empire is divided between the Emperor and the Imperial Senate. Both reside in the city of Vurkan, on Durakaan, also now more popularly known as The First City of The Empire. Seats in the Senate, of which there are presently thirty-seven, are hereditary and are historically filled by the great patricians to the Empire. By tradition, the original seven seats in the Senate are held by the elders of Great Patrician Castes of the [[Duranaki]] people. And those seven invariably hold the greatest positions of power within the Senate. 

Seats in the Senate are added or subtracted either by vote of the Senate itself, or by Imperial Decree as the structure of the far flung Empire changes. Either way, one may veto the other, causing a political stalemate. Further, only the Senate itself may elect or impeach a member. Both actions are usually titanic occurrences of import equal to the impeachment of a U.S. President. They therefore make news well beyond the Empire's borders. What the Empire does affects even those who claim it doesn't!

Because of the nature of the relationship between the Emperor and the Senate, it is an understatement to say that the power politics between the two are complex. Senators are elected to their office because of their skill at playing the  game of power politics. But the Emperor holds the keys to the entire Imperial bureaucracy and the military (theoretically) obeys his orders. Thus, the internecine wars for sufficient political capital to drive the Empire in one direction or the other are sometimes quite spectacular, if one likes political intrigue.

It has been proven that a powerful Emperor can make the Senate almost irrelevant. The present [[Emperor Trægen]], however, is proving that the Senate is not a reciprocal solution for a weak Emperor. Historians have pointed out that democracy is always a messy business. But the nature of the Empire is such that it has no patience for the messy business of an unrestrained democratic process. And without strong leadership from the Imperial Throne, unrestrained democratic wrangling is what the Empire gets.

!!The Regional Government

Beneath the central organs of the Imperial throne and Senate resides another layer of the Imperial Government. While there is often much talk about "the Empire" and the "Emperor" and so on, in reality they are but abstractions. 

Subjects of the Empire feel the power of the Empire in their daily lives more through their Consul and Tribune and the Imperial administrative departments than it does the Emperor or Senate.

@@The Consuls:@@ Chief officers of state who suggest legislation, execute laws, administer justice, and command the Imperial Armed Forces. They also appoint their own Proconsuls who  run the provincial governments on behalf of the Consul. At least every planetary capitial will have a Proconsul; and major centers will have a Proconsul's satellite office (kind of like your Senator's district office).

In theory, an appointment to Consul is made by the Emperor. In practice it's made by the Senator in whose area the Consul governs, and the appointment is then ratified by the entire Senate. The Emperor is then free to veto and replace the appointment if he so chooses. Of course, if he does, the Senate might return the favor by tossing out his appointment too.

@@The Tribunes:@@ Elected by the citizens through a rather complex process, they make up a people's legislative body and are authorized to act in the interests of the citizens by forbidding any action taken by another official. -- including vetoing legislation passed by the Central Government. 

The Tribune Assembly (the Imperial assembly of all the Tribunes) is effectively the Empire's supreme court. It can veto legislation passed by the Emperor and Senate, and overrule the judgments of the Prætor. An individual Tribune is a lot like a state supreme court, and is able to over-rule cases tried by the Prætor in his region.

There are currently 300 Tribunes in The Empire. Each Tribune, in turn, is the head of a Tribunal Counsel made up of citizens selected or elected by local government (usually planets) by whatever means they prefer. The Counsel meets at the Tribune's bidding, usually on some set schedule unless there is an emergency session. The Tribune is then expected to take his or her Counsel's will forward to the Tribunal Assembly. A body of enormous power because it represents the will of the Citizens of the Empire. 

The political gamesmanship between the Consuls and the Tribunal Assembly and the Central Government is at least as complex as that between the Emperor and the Senate.

!!Imperial Administrative Departments

@@The Censors:@@ The tax collectors of The Empire, Censors are also responsible for the census, estimating expenses, and social services.

@@The Prætors:@@ "Chief justices" of The Empire. They also command the Thavan. In practice each prætor is in charge of a rather large office that might be looked at as a cross between the local district attorney's office and a regional state and federal court. Thus, to say one is being tried by the prætor is (quite common but) usually somewhat incorrect. The justice behind the bench making the ruling or running the trial will be a judge working in the prætor's office. The Prætor his or herself only handles cases on appeal in an attempt to get them resolved before they are forwarded to Tribunal Assembly.

Exactly how cases are handled depends entirely on the caste of the individual charged. Citizens have a great many rights and their cases must therefore be managed carefully. Proletarian cases are far less complex and usually only require an administrative hearing to review the sentence levied by the [[Thavan]].

@@The Quaestors:@@ Treasury officers who manage the funds of The Empire.

@@The Aediles:@@ The Public works department. It usually doesn't rate much more than honorable mention, yet given its huge mission it's the second largest branch of Imperial Government. (Second only to the Imperial Legions.)

!Citizen Casts

Every person under Imperial Rule has a caste. That caste determines how s/he must interface with the Imperial bureaucracy, what rights s/he has under Imperial Law, and therefore what rights and obligations the Empire has in return. It must be emphasized that one's //legal caste// has little and maybe nothing to do with one's status in one's own society. The President of a Planet might be of a lessor legal caste than his own chief of staff. It's crazy, but in the Imperial world it happens.

The Empire recognizes three legal castes. These castes have been emulated by other cultures who hold The Empire in high esteem.

@@CITIZEN@@  A citizen of The Empire is entitled to full protection under the law. If accused of a crime, a citizen is considered guilty until proven innocent, but does have the right to a trial by a jury of their peers. An accused citizen may also request a formal hearing in which he may request release on bail. And should a [[Thavan]] kill a citizen in the line of duty an investigation must be launched and formal hearing held to ensure the Thav's actions were justified. It is a felony to abduct a citizen of The Empire and hold them against their will. Finally, citizens have the right to vote in local and Tribunal elections, and may appeal to their tribune if they feel they have been wronged in some way by the government. Local government officials do not much care to be contacted by their Tribune's office for questioning.  They like it even less when the Tribune calls for a formal district tribunal! Note that vote of the Tribunal Assembly can over-turn even a ruling by the Prætor!

@@PROLETARIAT@@ Like a citizen, a proletariat is a free individual in The Empire. The peoples of Earth and most other planets fall under this cast. Little is normally done to attempt to change a conquered race's customs or traditions. All that is normally asked is that they abide by Imperial Law. For that compliance they are then also protected by that same law. Unlike a citizen, a proletariat is not entitled to a trial by jury. Rather, they must appeal to the local prætoriat for a hearing of their case. If a [[Thavan]] kills a proletariat in the line of duty, the family of the slain individual can request a hearing, but one is not mandated by law and is only likely to be granted if there were irregularities in the case. Proletarians are also subject to permanent seizure by licensed bondsmen. The practice is common among the Duranaki, who get licenses to sell Myri slaves, and on some other worlds, but is a rarity on others (Earth being one). Interestingly enough, proletarians //can// obtain a bondsmen license, and also can have slaves of their own. (Note: licenses are issued by Censor through their local offices.)

@@SLAVE@@ Slaves have virtually no rights under Imperial Law. They are property and may be used, abused, bought, sold, or whatever, at the whim of their owner -- or so says the law. Among the Duranaki, who may be proud but are not cruel, this simplistic approach works well. The Duranaki may demand service of their Myri slaves, but they have never been known to abuse them, or to allow them to be abused. Unfortunately, other races are not so kindly disposed. The Imperial Tort system changes at about the same speed the stars move across the heavens; and by some citizens' opinion, has not kept up with Imperial obligations to those who are considered to be the responsibility of The Empire and therefore subject to at least minimal protection. (It is a rather ludicrous irony that there are laws on the books that give the local equivalent of the family dog more protection from abuse than the family slave.)

!!Just a touch of history

The history of The Empire is somewhat checkered. It's beginnings go back as far as its contact with other races in space, and that itself says quite a bit. Just as humans did -- only centuries earlier, the [[Duranaki]] outgrew their planet and began settling other planets around [[Durakaan]]. It didn't take long before they had run into other races and convinced of their superiority, bring them under what was then mostly still mostly a planetary based Imperial rule.

The meeting of humans and [[Duranaki]] (and hence the Empire) came much later. Humans were still trying to settle the planets near to Earth, and to work out the basics of consistent and reliable space travel when the first Imperial Cruiser appeared in orbit around [[Midgard]] and then, not much later, around [[New Home]]. 

At first the [[Duranaki]] officers were quite friendly and offered to help the humans master the basics of everyday life as an interstellar race. But it didn't take long, less than five years, before the [[Duranaki]] were expressing their disapproval at nearly everything the humans did. Not just projects, mind you -- everything. The food was lousy, the lights too bright (probably true, considering the [[Duranaki]]'s sensitivity to light), the furniture uncomfortable, everything came open for criticism. But criticism without suggestion is futile. And the Duranaki, being the consummate diplomats, always had ways things could be fixed to make them better. Their arguments were persuasive, even convincing, and eventually were successful.

Swamped by literally hundreds of petitions ranging from interior decorating to major terraforming projects to the mining stations in the Rigel Kentaurus B system, the humans ended up split on important issues while the [[Duranaki]] held a united front.

So, in five years, the human population of [[Midgard]] had lost political control of their colony and the [[Duranaki]] were in command.

Thus humanity became subjects of The Empire. In the early days of the expansion, warfare was rarely needed to take power. No-one knew who the [[Duranaki]] were. Earth fell within 2 years of their taking power at [[New Home]] and [[Midgard]], and it occurred in a similar fashion. Several other planets also found themselves under [[Duranaki]] rule within that time frame.

A few attempts were made to restore the indigenous peoples to power by military means, and in the early days there were some successes. That only prompted the [[Duranaki]] to build up their military, however, and once entrenched, removing The Empire is usually an expensive and bloody process. Too, while the humans were learning fast, The Empire still had a major technological edge.

But if the [[Duranaki]] present a monolithic front to the world at large, they are anything but safe behind their borders. Imperial citizens do have the right to vote after all, and the elections //are// free and fair. The right to speak ones mind is as dearly beloved to the [[Duranaki]] as it is to Americans, and just as staunchly defended.

There are those who believe the pro-expansionist stance of the Senate, and backed up by the Tribunal Assembly, is wrong. They believe that systems brought into The Empire should be by peaceful means, not through political subversion and/or military might. To date, however, this point of view remains a political minority.

Those defending the Senate and Assembly remind their opponents that The Empire has gained much by its long standing expansionist policies. Even those planets conquered have naught to complain about. It is a hard point to argue against, as it is very true. Earth had languished for nearly a century under the absence of its great scientific minds and political leaders. The Empire straightened the planet out in short order. And truth to tell, planets with strong governments and stalwart populations rarely fall to Imperial rule.

Today the point is nearly moot. The Empire seems to have run out of easy targets to absorb, and the [[PAC]] remains vigilant against attempts on member planets.
Part of the fun of sci-fi gaming&mdash;at least as far as I'm concerned&mdash;is "slinging the lingo". Being able to talk the tech of the pseudo-science of the game as though you were really and expert; and to "believe in it" while in character. After all, where would we be without the famous Star Trek transporter? Everybody knows what the transporter is, and how it works, right? And everybody knows about the matter anti-matter reactors that power the //Enterprise//. 

Obviously, our game has its own tech driven by its own sci-fi pseudo-science. Some of it is familiar. We have a version of "warp" called [[Warpline Transit]] that's similar to the warp in Star Trek. What we don't have is a matter anti-matter reactor. But that might be a bonus.

In order for this or any other game to work, everyone has to be on the same basic page where the tech is concerned. It gets confusing quickly if one person thinks they're firing a phaser while another person thinks they've got a fusion gun in their hands. If one character writes about the ship's anti-matter reactor while another is pontificating about the troubles with the breeder reactor, the other players have no idea whose right and whose wrong or how the two seemingly contradictory facts are supposed to fit together.

While all the gritty details don't need to be made up in advance&mdash;and I'm not gonna sit here and tell you that I //have// all the pseudo-science of this game all worked out&mdash; what I //do// have is a general picture. And a general picture is really all we need. After that the players of the tech based characters get to have all the fun of filling in all the nifty details as they write for their characters and tell their stories. 

''Not Too Far From Now''
One thing that might help in not only understanding the tech, but in being creative with it is to realize that it's not really all that advanced over what we have today. In fact, since Traveller was written in the 80s, we've actually surpassed some of what their futuristic gadgets can do with our real ones.

Take the Traveller "hand held computer". It's rather big and clunky, and seemingly not even as powerful as our modern PDA or smart phone. Likewise, the Traveller [[Handheld Communicator]] seems less powerful than a cell phone. [[Commdots]] have considerably less range than the average bluetooth headset, which really isn't all that much bigger. ~Heads-Up displays can now be found even in cars, and the military actually has a device that's nearly identical to the [[Data/Display Headset]]. 

But... A device really doesn't have to //be// futuristic to seem futuristic. An excellent example comes from the new ~BattleStar Galactica series. That intercom phone in Adama's stateroom was actually taken off of a World War II aircraft carrier! Does it seem out of date in the show?

I don't think so.

But I digress.

My point is, Traveller tech is, in many ways, either modern technology, the next leap in technology, or technology we'll likely discover before the end of this century. And in my opinion, from a PBEM gaming perspective, that makes it a lot easier to deal with.

''The Next Tech''
At the core of every space ship in Traveller&mdash;and so in this game&mdash;is its "maneuver drive", which is also its power plant. The maneuver drive is the rocket type propulsion system that drives the ship through space at sublight velocities. Obviously these power plants are considerably more fuel efficient, and yet more powerful, that anything we have today. But we're already close to a first generation system thatis probably similar to Traveller's sci-fi power/propulsion plant. It's called the [[VASIMR|http://en.wikipedia.org/wiki/VASIMR]] rocket and it's scheduled for testing on the International Space Station in 1012 (I think). (This link takes you to a [[Wired Science video|http://www.pbs.org/kcet/wiredscience/story/80-franklin_chang_diaz_astronaut_and_rocket_scientist.html]] with the VASIMR creator, a NASA astronaut.)

The VASIMR uses plasma to generate its thrust rather than burning solid or liquid fuel directly. It is therefore //much// more efficient. It also runs at temperatures similar to that of the sun (million of degrees F), rather than the paltry few thousand degrees the current solid and liquid fuel motors run at. And though the VASIMR is burning argon, not hydrogen, I assume our Traveller power plants are the great, great grand kids of Franklin Diaz's invention. No doubt the VASIMR is to a "modern" space ship's maneuver drive what the model T is to the modern automobile.

Most of the sensors found aboard ship also fall into the class of either improved modern or next generation tech. From RADAR and LADAR to high resolution infared to RDF and EMM, it's all no doubt improved standard stuff. The neutrino sensor probably falls most into the next tech realm. Yeah, we have neutrino sensors today, but they're nothing like the ones in the game.

''Way Out There&mdash;Sort Of''
In the "way out there" department comes what Game Design Workshop called "the gravitic sciences". In other words, the study of gravity. As I understand it, we haven't really come much further in our understanding of gravity today than in Newton's time. While we can demonstrate it (by dropping an apple on someone's head), currently we can't even define it, never mind understanding it. 

In the game, it has obviously not only been defined and understood, it's been harnessed. It's the basis for the "grav plates" that make everything from the modern "grav bike" and "grav car" to the space ship fly. Wings are no longer necessary.

And understanding of gravitics is also the basis for [[warp travel|Warpline Transit]], for the modern densitometer, and the [[granar|GRANAR]]. I really don't have any more thoughts about gravitics than what has already been laid out in the Traveller rules for the the densitometers and what I've laid out myself for the [[granar|GRANAR]].

The Bio-Scanner and [[Neural Activity Sensor]] are some more far out tech in the game. The Bio-Scanner seems to work a lot like a dog's nose. It detects metabolic life. It can also be used for chemical analysis&mdash;though I'm fairly certain that lab equipment gives better results than a hand held unit. The [[Neural Activity Sensor]] does just what it sounds like. It basically detects and analysis brain waves, and so (at least in theory) can tell you how intelligent a life form is. Both have //very// short ranges, however. Unlike in Star Trek, there will be no detection of //any life// (never mind intelligent life) from orbit&mdash;or even a kilometer away! How you go about fixing and/or manipulating these far fetched sensors is up to you. Have fun!

The last thing that's in the "way out there" department is matter/energy transport. This has been so well covered by Star Trek that I don't know that I need to go into any depth here, other than to point out the differences.

Our transporters aren't as advanced. The most obvious difference is in the ability to "return transport". In Star Trek the Enterprise could beam back anyone they could "see" with their "sensors." Well, for one thing, sensors are a lot more restricted in our game than they are in Star Trek, but for another, the transporter needs a transponder signal to "lock onto" in order to transport from a remote location. It really doesn't care (or know) //what// it's transporting. It's simply turning whatever matter is standing on the transponder station into energy, transmitting it, and then reassembling it on the other end.

So it's also kinda stupid compared to a Star Trek transporter.

Another little factoid about our transporters is that they're energy hogs. Not so important on a ship like the Enterprise where you've got enough power to not only destroy Hiroshima, but to melt the entire Island of Japan. Who cares about a little transporter! But in our game we're not there yet. We're still using plasma based reactors. So even on a big troop transport ship the number of troops the ship can transport to the surface of a planet at a time is limited due to power consumption issues. Small ships normally don't have a transporter aboard because they take more power than can be generated. Small ships that //do// have transporters are usually //way// over powered&mdash;and then (in addition to having to give over precious room for more power plants) they'll still only be able to support maybe two pads at most. //And// they'll blow blue flame out the exhaust nozzles like a small sun every time they make a transport. Not a good way to remain inconspicuous. 

In modern cities, however, where space allows power to be generated almost at will, [[T-stations|T-station]] are all the rage! Vehicles are rarely allowed inside cities anymore. Streets are given over to foot traffic and there's a [[T-station]] on darn near every street corner that can take you across town, or across the planet.
Another new class of drugs that has literally changed the world in which we live.

Enhancement Drugs are bought as Aid; the maximum effect of any stat-boosting aid is to raise a stat by 50% of its max for up to 5 minutes, or 25% of its max for up to an hour. Drugs are usually Cr 5 and 0.1 grams per active point. Drugs take one minute to take effect if ingested, immediate if injected. Aid may be used to give powers the target does not have. Multiple doses can be taken. Most drugs have side effects, usually 1d6 damage, no defense, per die of Aid, when the effect ends. A few of the more common drugs include:

!!Combat Drug
''Cost:'' 60 Denarii per dose
''Mass:'' 1.2 grams
''Combat Drug:'' //Aid STR 1d6, Delayed Return Rate (points return at the rate of 5 per Minute; +¼), Trigger (Activating the Trigger requires a Zero Phase Action, Trigger requires a Turn or more to reset; Use Drug; +¼) (15 Active Points); OAF (Drug; -1), Side Effects, Side Effect occurs automatically whenever Power is used (Drain 1d6 CON, Recovers 5 per minute when Drug wears off; -½). Total cost: 6 points.//

!!Fast Drug
Fast drug slows down the metabolism of the patient, so that the perception of time is transitory.
''Cost:'' 135 Denarii per dose
''Fast Drug:'' //Life Support (Eating: Character only has to eat once per week; Extended Breathing: 1 END per 20 Minutes), 1 Continuing Charge lasting 1 Week (+0) (5 Active Points); Extra Time (5 Minutes, -2), OAF (‑1), Side Effects, Side Effect occurs automatically whenever Power is used (Character Is Asleep; -1). Total cost: 1 point.//

!!Slow Drug
Slow Drug speeds the character, effectively increasing the character’s SPD by 2.
''TL:'' 10
''Cost:'' 200 Denarii per dose
''Slow Drug:'' //Aid SPD 7d6 (standard effect: 21 points), Delayed Return Rate (points return at the rate of 5 per Minute; +¼) (87 Active Points); OAF (‑1). Total cost: 43 points.//

!!Anagathics
Anagathics slow down the effects of aging on a 1:8 ratio. Each dose lasts for 1 week. Anagathics are illegal in the Empire.
''TL:'' 15
''Cost:'' 350 Denarii per dose
''Anagathic:'' //Life Support (Longevity: 800 Years), 1 Continuing Charge lasting 1 Week (+0) (3 Active Points); OAF (‑1). Total cost: 1 point.//
Much water has passed under the bridge since I first decided that I would be switching to the FATE rules system. One thing that was completely unknown at that time was the existence of the [[Spirit of the Far Future (SoFF)|http://www.phreeow.net/wiki/tiki-index.php?page=Spirit+of+the+Far+Future]] version of FATE, a "Traveller build" of [[SoTC|http://www.faterpg.com/dl/sotc-srd.html]].

That said, I am //still// making no attempt what-so-ever to reproduce the FATE rules here. The only thing this entry will do is deal with rules variants particular to ALDE. For example, traditional Traveller is a lot like FireFly: It's designed primarily for the PCs to be small time traders who are constantly on the edge of being broke, and so who are always looking for there next deal to make ends meet. So the rules have very little to say about highly trained military specialists, operatives, or politicians.

Too, FATE&mdash;SoTC and SoFF&mdash;do not have an experience point mechanism. I've added an XP system to this game via KEYS, which also brings in an expanded form of the Hero Disads system.

In addition to [[SoFF|http://www.phreeow.net/wiki/tiki-index.php?page=Spirit+of+the+Far+Future]] here is a link to the [[FATE Website|http://www.faterpg.com/]]. Some specific links on that site are:

* [[SotC SRD|http://www.faterpg.com/dl/sotc-srd.html]] (Spirit of the Century&mdash;the core version of FATE 3.0 on which all other "builds" are based.)
* [[FATE 2.0|http://www.faterpg.com/dl/FATE2fe.pdf]] Contains much valuable information regarding skills tests, combat resolution, and comparative skills challenges. It's information unchanged in 3.0 that ~SotC SRD assumes you understand.
* [[Pyramid Reloaded|http://www.faterpg.com/dl/pyramidreloaded.pdf]] The skills pyramid is probably the most complex part of playing FATE, and is the hardest to understand. This white paper is an attempt by the designers to make it more comprehensible. It is also useful in understanding how to use your Experience Points to raise the level of a skill, and how many ~XPs it will take to do what you want to do.

<<slider aboutSkills FateSkills [[Skills & Skill Groups]]>>
<<slider aboutKeys FateKeys [[Keys: The Key To XPs]]>>
Pronounced "~Fu-Pulse", FUPLS stands for Fusion Propulsion Lift System. Known in the Empire for centuries, it was first tested on Earth in the unmanned "loft" of Cosmotopia's first "starliner" in 2151.

Though that propulsion system was very primitive by today's standard, FUPLS remains the standard across the known galaxy for high gee thrust systems.
<<gradient vert #ffffff #ffdddd #ff8888>>
! Keys

(With thanks to ~CaseWorker, from whom I kiped these and then tweeked where necessary. I gather ~CaseWorker got some of them from others as well, given the attributions&mdash;which I've left in.)

''So what are Keys?'' They are, well, the //key// to gaining experience points. They are the psychological attributes of your character. Some of them are rather disadvantageous, others are advantageous. Keys are meant to be played&mdash;or bought off. When you play a key trait you gain the XP appropriate for the level of play. Alternatively you can ignore the opportunity and gain no XP, or you can Buyoff the key and gain a one time bonus of 10 XP, but lose the Key.

Every character //must have// at least one Key but no more than three (unless there's a damned good reason). 

!!! The Adventurer
You live for the thrill of deeds of derring-do. As a plaything of fortune, you go around having dangerous, ridiculous adventures ... because you want to.

* Gain 1 XP when you decide to go on a risky venture.
* Gain 3 XP from any scene wherein the pursuit of this quest causes a consequence for you.
* //Buyoff:// Reject the opportunity to risk your neck on yet another harebrained venture.

     

!!! The Apologist
Your character not only has a strong religious or philosophical belief that guides him, but feels compelled to proselyte others to his way of thinking. [this is a renamed version of the old Key of Faith from tSoY]

* Gain 1 XP every time she defends her faith to others.
* Gain 2 XP whenever this character converts someone to her faith.
* Gain 5 XP whenever this character defends her faith even though it brings her great harm.
* //Buyoff:// Your character renounces her beliefs.

     
!!! Bloodlust
Your character enjoys overpowering others in combat.

* Gain 1 XP every time your character defeats someone in battle.
* Gain 3 XP for defeating someone equal to or more powerful than your character (equal or higher combat skill.)
* //Buyoff:// Be defeated in battle.

!!! Brokenhearted
Your character cannot let go of some tragic event in his or her past. It wounded the character so deeply that she refuses (consciously or unconsciously) to form new bonds of love or attachment. (Halcyon, on the tSoY wiki))

* Gain 1 XP every time your character chooses to keep new bonds from forming in favor of ‘honoring’ their past love (or, in other words, every time the character chooses nostalgia instead of the now).
* Gain 3 XP every time the character rebuffs an open confession of love or camaraderie.
* //Buyoff:// Admit that you have formed a new love.

 
!!! The Challenger
You live for challenges, and you cultivate rivalries. You relish the rush of competition.

* Gain 1 XP whenever you issue a challenge, are challenged in turn or enter a competive event.
* Gain 3 XP whenever you overcome the odds in a challenge.
* //Buyoff:// Decline a challenge.

 
!!! Code Of Honor
Your character lives by a strict code. It may be military (the LoAC), religious, or the ancient code of knightly chivalry. (Must be defined either in the back story or when taken.

* Gain 1XP for upholding and living by The Code.
* Gain 2XP for living by The Code when otherwise difficult or inconvenient.
* Gain 5XP for living by The Code when it endangers your life and/or the life of your companions.
* //Buyoff:// Renounce The Code and break it.


!!! The Collector
The character is dedicated (even driven) to collect some particular sort of rare, esoteric, or unusual objects.

* Gain 1 XP whenever she obtains information about the location of an example of the sought item.
* Gain 3 XP whenever she puts herself at risk in order to obtain the sought item.
* //Buyoff:// Willingly give away the object of the character's desire.

     
!!! The Commander
You are the military style commander of a group of troops. If not ~PCs, designate your troop.

        * Gain 1 xp every time a significant number of your followers are in a scene (max of 3 xp per session; in the case of ~PCs, they must be acting on your orders)
        * gain 2 xp when an operation you've commanded ends in success
        * gain 5 xp when you are put at great risk or harmed while acting to protect your followers.
        * //Buyoff:// Abandon your command in the field, betray your troops, or give up your command

     
!!! Character of Conscience
Your character has a soft spot for those weaker than their opponents.

* Gain 1 XP every time your character helps someone who cannot help themselves.
* Gain 2 XP every time your character defends someone with might who is in danger and cannot save themselves.
* Gain 5 XP every time your character takes someone in an unfortunate situation and changes their life to where they can help themselves.
* //Buyoff:// Ignore a request for help.

!!! The Coward
Your character avoids combat like the plague.

* Gain 1 XP every time your character avoids a potentially dangerous situation.
* Gain 3 XP every time your character stops a combat using other means besides violence.
* //Buyoff:// Leap into combat with no hesitation.

!!! The Curious
Curiosity killed the cat. (~JMendes et al)

* Gain 1 XP every time your character follows a need to dig into something.
* Gain 3 XP if there is a real possibility of harm coming to your character because you dug too deep.
* //Buyoff:// Ignore an opportunity to dig further. 

 
!!! The Cursed
You have been condemned to a terrible fate and now your doom dogs your heels, affecting everything you do. It may be a hex, the evil eye, a disease, lingering poison, a wound that just won't heal, but whatever it is, it's a constant problem for you. (Matthew Glover)

* You gain 1XP when you have to overcome your curse to do something.
* Gain 2XP when your affliction prevents you from doing something important to you.
* 5XP when being cursed puts you into a life-threatening situation.
* //Buyoff:// Find a way to have the curse removed. Alternately, succumb to your fate. 

!!! Deduction
The character sees data everywhere, and cannot help but to draw an uncanny number of correct conclusions from that data, which can lead to the discovery of other data, and so on and so forth, until a conclusion, resolution, or solution has been reached.

* Gain 1XP for drawing the correct conclusion about a set of data of some importance.
* Gain 2XP for following a trail of a data set/deductions to its logical end
* Gain 5XP for following a trail of a data set/deductions to their logical end when it endangers life and/or limb.
* //Buyoff:// Repeatedly jump to the wrong conclusions based on your observations.

!!! Discovery
Your character perpetually seeks novelty and looks for new experiences and places.

* Gain 1 XP everytime he goes somewhere or encounters something new to her.
* Gain 3 XP whenever he experiences something unknown to his society.
* //Buyoff:// Refuse to pursue a new experience or discovery.

!!! The Dogmatic
Your character not only is religious but inclined to ostentatious displays and disputations arising from their religious beliefs. Unlike the Key of the Apologist this Key isn't about converting people but rather getting embroiled in tussles over their views. (a slight variant might be a slavish admirer of a particular philosopher or public figure, or perhaps a rapt student of the Law).

* 1XP for quoting Scripture in a manner that fits the scene or supports the character's point.
* 2 XP for making a decision or getting into a conflict based on a passage or blasphemy
* 5 XP for bringing on a huge and dangerous conflict that grows beyond control thanks to that blasted text!
* //Buyoff:// Discover humility and meekness. Try it.

!!! Doomed
Your character is doomed to a terrible fate, and can't help but careen towards his doom. (Matt Snyder?)

* Gain 1 XP every time your character acts without regard to his safety.
* Gain 3 XP every time your character enters battle against superior enemies (1 or more opponents with higher combat skill or several -- 3 or more -- opponents with equal skill).
* //Buyoff:// Retreat from an overwhelming battle or fight, or fight to survive so that you may be with a loved one. 

!!! Exploration
The character cannot resist the unknown and/or the call of distant horizons. This is also the Key of Chronically Itchy Feet, driving the character to be constantly on the go to new places.

* Gain 1XP for every new place visited in the real world.
* Gain 3XP for every new dimension or plane visited.
* //Buyoff:// Turn down an opportunity to visit a new place.

!!! Extravagance
Your character seeks every opportunity to impress those around you with his means and generosity. (Colin Roald?)

* Gain 1 XP every time he conspicuously and unnecessarily spends money or grants gifts.
* Gain 3 XP every time he blows a significant fraction of his net worth.
* //Buyoff:// Refuse a luxury you could have had.

!!! The True Believer (Faith)
The character's belief in a higher power is a central part of their identity. The character lives by the tenets of the faith at all costs.

* Gain 1XP for basing a decision on the tenets of the character's faith.
* Gain 2XP for persisting in faith when there is reason to doubt.
* Gain 5XP for holding on to faith when there is danger to life and/or limb.
* //Buyoff:// Publicly renounce the faith and its way of life forever.

!!! Fraternity
Your character has someone she is sworn to, a friend who is more important than anyone else.

* Gain 1 XP every time this character is present in a scene with your character (maximum 3 per adventure).
* Gain 2 XP whenever your character has to make a decision that is influenced by them.
* Gain 5 XP every time your character defends them by putting herself at risk.
* //Buyoff:// Sever the relationship with this person.

!!! Glittering Gold
Your character loves wealth.

* Gain 1 XP every time you make a deal that favors you in wealth.
* Gain 3 XP every time you double your wealth.
* //Buyoff:// Give away everything you own except what you can carry lightly.

!!! Glory Seeker
Who cares about power or riches? You crave fame! (James Nostack)

* Gain 1 XP when your actions inspire strangers to talk about you insultingly (there's no such thing as bad publicity).
* Gain 3 XP when your deeds win you acclaim and adulation.
* //Buyoff:// Adopt a pseudonym or go incognito.

!!! Grief
Your character has lost someone or something precious. (Diurnal Lee?)

* Gain 1 XP every time something reminds you of the loss.
* Gain 2 XP whenever you have to make a decision related to the source of your grief.
* Gain 5 XP if you sacrifice something important out of grief.
* Buyoff: Do something symbolic to show you're over it. 

!!! The Guardian (DNPC)
Your character has a ward, someone who depends on her for security and protection.

* Gain 1 XP every time this character is present in a scene with your character.
* Gain 2 XP whenever your character has to make a decision that is influenced by them.
* Gain 5 XP every time your character rescues them from harm.
* //Buyoff:// Sever the relationship with this person.

!!! Hatred
Your character fixates on some particular individual, force or organization that he despises due to some slight or misdeed, real or imagined, and spends a lot of time mulling over and possibly acting on this resentment.

* Gain 1 XP every time your character pursues an object of hatred or makes the hatred relevant in a scene
* Gain 2 XP every time your character issues a denouncement to an object of hatred directly.
* Gain 5 XP every time your character experiences serious loss caused by his hatred.
* //Buyoff:// Your character learns in his heart to forgive his enemy. 

!!! The Heretic
Also apt to the name Key of the Revolutionary, this Key indicates that your character is dedicated to overthrowing or heavily reforming a ruling class, party, Church or government.

* Gain 1 XP every time she speaks out against the rulers, or breaks a minor law.
* Gain 2 XP every time she acts directly against the rulers.
* Gain 5 XP every time she puts herself in great danger in order to damage the status quo.
* //Buyoff:// Accept any favor from the rulers in order for your quietude or complicity.

!!! The Member
Your character is a member of and dedicated to an Order. It might be military, religious, professional, or some sort of fraternal organization.   

* Gain 1 XP every time your character does something to benefit her House.
* Gain 2 XP every time she does something to benefit her house that causes her discomfort or inconvenience.
* Gain 5 XP every time she acts to benefit her House at the great risk of her body, reputation, or wealth.   
* //Buyoff:// Act against the interests of one's House.

!!! The Hypocrite
Your character lives by a code: The code is to be fiercely avowed when convenient and in her self interest, and just as quickly discarded and ignored when convenient. But of course, it's all easily explained...

* Gain 1 XP every time the character takes an action at variance with her avowed ideology.
* Gain 2 XP whenever this character gets called out on this hypocritical behavior and persuasively rationalizes it.
* Gain 5 XP if this involves a direct threat to her profession, social standing, or life & limb.
* //Buyoff:// Publicly confess your shameful hypocrisy. 

!!! The Idealist
Your character has always held some belief or ideal to be absolutely true, such as "The power of friendship", "The Knights of the realm are true, just and incorruptible", etc. (by Bankuei)

* 1 XP every time your character emphasizes or shows off their Ideal
* 2 XP every time your character keeps faith in the Ideal despite good reason to doubt it
* 5 XP every time your character holds faith in spite of contrary evidence that threatens his or her life. ("I know there's still good in you! Fight it! You don't have to do this, you're still a hero!")
* //Buyoff:// Give up the ideal or belief. Face reality. 

!!! The Impostor
Sometimes your entire life is a lie.

* You gain 1 XP whenever you pass yourself off as someone/something you're not.
* You gain 2 XP whenever you convince others in spite of serious skepticism.
* You gain 5 XP whenever your story survives a deliberate, focused, "Hey everybody, look!" attempt to reveal your identity.
* //Buyoff:// Confess your imposture to those duped. 

!!! The Impotent
You ought to be able to do something just fine, but for some reason you can't. This difficulty could be sexual, social, or physical; the source of the problem may be self-doubt, overconfidence, or an evil curse. In any event the player should select a single skill when choosing this key, and may apply a penalty die to that skill at any time to reflect these mysterious difficulties.

* Gain 1 XP when the penalty die applies to a routine situation
* Gain 2 XP when the penalty die applies to an important situation.
* Gain 5 XP when the penalty die applies to an urgent, life-or-death, out-of-control-story-madness situation.
* //Buyoff:// Overcome the source of this anxiety.

!!! Integrity
You have an unusually strong determination to do what is right, to be truthful and honest in all things.

* Gain 1 XP whenever you are tempted to be dishonest.
* Gain 2 XP whenever you reject considerable advantages in order to be true to your principles.
* Gain 5 XP whenever you risk great sacrifice or danger to preserve your integrity.
* //Buyoff:// Sell out your principles for personal gain

!!! Intolerance
Your character has a deep-seated intolerance for those that are different from himself (Choose species or social class).

* Gain 1 XP for working it into the scene
* Gain 2 XP if it drives a decision that causes problems/discomfort/conflict
* Gain 5 XP if it causes major problems/harm to the character or his compatriots.
* //Buyoff:// Do something unselfish for somebody from the group that you dislike.

!!! The Inventor
You are driven to perpetually push the boundaries, create new things and apply the principles of natural philosophy in the real world. With very slight work, this might also become the Key of the Innovator and be used for pioneering artists, writers, musicians etc.

* Gain 1 XP whenever the character comes up with something new
* Gain 3 XP whenever the character's innovation helps resolve a challenge (Better living through technology!)
* //Buyoff:// Give up the pursuit of perpetual advancement

!!! Justice
Your character has an unfailing commitment to justice.

* Gain 1xp each time you right a wrong.
* Gain 2 xp each time that justice causes another to suffer pain
* Gain 5 xp each time your character executes justice at great expense to himself.
* //Buyoff:// heed a guilty party's plea for mercy.

!!! The Lover
You have a deep love, whether friendly, erotic, or familial, for someone else.

* Gain 1 XP every time this character is present in a scene with you.
* Gain 2 XP whenever you has to make a decision that is influenced by them.
* Gain 5 XP every time you put yourself in harm's way or makes a sacrifice for them.
* //Buyoff:// Sever the relationship with this person.

!!! The Manipulator
Your character works behind the scenes, manipulating others in order to be a shadow ruler. Your character must work for or be an advisor of someone in a position of power.

* Gain 1 XP whenever your character exerts her will over her ruler, even over minor matters - especially over minor matters.
* Gain 2 XP whenever the ruler accepts your character's advice over others.
* Gain 5 XP whenever your character's influence makes the ruler make a policy change or establish a new policy that works in your character's favor.
* Buyoff: Accept the mantle of power for one's self.

!!! The Masochist
Your character thrives on personal pain and suffering.

* Gain 1 XP every time your character takes a severe consequence.
* Gain 3 XP every time he is taken out.
* //Buyoff:// Flee a source of physical or psychic damage.

!!! The Master
You are the boss, applesauce. (Tony LB?)

* Gain 1 XP when you give an order to someone allied with you and either as powerful or less powerful, and be obeyed.
* Gain 2 XP when you give an order to someone either (a) substantially more powerful than you or (b) violently antagonistic to you, and be obeyed.
* Gain 5 XP when you give an order to a substantially more powerful being who hates your guts, and be obeyed.
* //Buyoff:// Let someone less powerful than you give you orders, and obey them willingly.

!!! The Mercenary
Your character is motivated by personal gain (monetary or otherwise) rather than any sort of altruistic impulses, and his principal question when asked to do something is inevitably, "what's in it for me?"

* Gain 1 XP when your character acts purely out of self interest.
* Gain 3 XP when your character cynically leverages the needs of others for his own personal gain.
* //Buyoff:// Sacrifice something important to the character or take a risk for somebody else, with no hope of material gain.

!!! The Merchant
Your character lives for the deal, for bargaining and for coming out ahead.

* Gain 1 XP every time she tries to barter or negotiate with somebody.
* Gain 3 XP when the character gets the better of somebody else in dealmaking.
* //Buyoff:// One of the character's attempted deals goes catastrophically wrong.

!!! The Mission
Your character has a personal mission that she must complete.

* Gain 1 XP every time she takes action to complete this mission (2 XP if this action is successful.)
* Gain 5 XP every time she takes action that completes a major part of this mission.
* //Buyoff:// Abandon this mission.

!!! The Outcast
Your character has lost fellowship or membership in an organization&mdash;which could just be a culture, or a specific cross-cultural group. This separation defines your character as much as membership in the organization defines its members.

* Gain 1 XP every time her status with this organization comes up.
* Gain 2 XP every time her disassociation brings her harm.
* Gain 5 XP every time the separation brings your character great pain and suffering.
* //Buyoff:// Regain membership in the organization.

!!! The Overlord
Your character owns other people or oversees the ownership of others. Slavery is still alive and well on both sides of the [[Neutral Zone]], and of course //thrives// in and around it.

* Gain 1 XP every time your character makes someone else do something against her will.
* Gain 3 XP every time your character makes someone else do something that causes harm, pain, or despair to that person.   
* //Buyoff:// Free a person under your ownership or oversight.

!!! The Pacifist
Your character has a personal commitment to non-violence.   

* Gain 1 XP for every adventure in which your character does not commit any violence.
* Gain 2 XP every time your character does not commit violence even though it causes her minor harm or inconvenience.
* Gain 5 XP every time your character does not commit violence even though it causes her great harm.   
* //Buyoff:// Purposefully harm another sentient creature.

!!! The Pedagogue
Your character often acts as a mentor to others. (broin?)

* Gain 1 XP every time your character opens the eyes of another.
* Gain 2 XP every time your character teaches something significant to another.
* Gain 5 XP everytime your character's teachings dramatically change the life of another.
* //Buyoff:// Ignore an opportunity for education.  

!!! The Penitent 
You are soiled, sinful and evil. Atone for what you have done wrong.

* Gain 1 XP every time your character's guilt colors his behavior.
* Gain 3 XP every time your character makes amends for a past transgression.
* //Buyoff:// Refuse to seek forgiveness for the character's actions.

!!! Lust For Power
You don't even care what you do with it, you just want it.

* You gain 1 XP whenever you earn a boon from someone important, earn a slight gain in prestige, or make a rival look bad.
* You gain 3 XP whenever you ruin, kill, or otherwise eliminate a rival, and improve your own position because of it.
* //Buyoff:// Relinquish your power and position.

!!! The Precious
You take great pleasure in counting coup against others by taking from them something they value highly. The item's intrinsic worth or monetary value is meaningless to you, only it's emotional weight to your target. This does not have to be a physical item, but can be a relationship (e.g. you seduce their wife) or even their self-image (e.g. you take away their pride).

* Gain 1 XP anytime you take something from a person or small group that they value highly, without their knowledge.
* Gain 2 xp when you take something from a person or small group that they value highly and inform them that you are the responsible party for the theft.
* Gain 5 xp when you take something from a person or small group that they value highly in a public fashion that endangers you greatly.
* //Buyoff:// Give something of great personal value to an enemy as a sign of respect. (Adam)

!!! The Rake
Your character thrives on romantic conquests. (Doyce Testerman)

* Gain 1 XP every time they attempt to seduce someone
* (2 XP if this action is successful.)
* Gain 5 XP if they seduce someone of renown and import, and word gets out.
* //Buyoff:// Abandon these rakish ways and settle down with someone. 

!!! Great Renown
"You must be the worst assassin I've ever heard of." "But you have heard of me."

* You gain 1 XP whenever you see to it that your name and deeds are known, by bragging about them or making sure there are witnesses.
* You gain 2 XP whenever you put yourself at risk to do something unnecessary or foolish that will add to your reputation.
* You gain 5 XP whenever you risk your life to take credit for your actions (bragging that you were the one who killed the Duke's son, for example.).
* //Buyoff:// Give someone else credit for an action that would increase your renown.

!!! The Spacer
Space is in your blood. You find the call of the Deep Black almost irresistible. 

* Gain 1 XP every time the character is in a scene involving space.
* Gain 2XP every time your character solves a problem with spacer's know-how.
* Gain 5XP every time your character takes a significant space voyage.
* //Buyoff:// Refuse to go aboard a ship, renouncing space travel forever and settle down on a planet.

!!! The Soothsayer
Your character has the gift to see the future, or at least he believes that he has it.

* Gain 1 XP every time your character makes a prediction about the future.
* Gain 2 XP every time your character gets trouble because of his predictions
* Gain 5 XP every time your character makes a prediction that comes true
* //Buyoff:// Stop believing that you have a prophetic gift.

 
!!! The Swindler
You are a Confidence trickster (or charlatan doctor, merchant prince, or the like) and thrive off the thrill of the Swindle.

* Gain 1xp for initiating a confidence game
* Gain 3xp for successfully swindling a mark
* Gain 5xp for successfully swindling a mark at great risk/harm to yourself.
* //Buyoff:// Go legitimate

 
!!! The Ruler
Heavy hangs the head that wears the crown, with great power comes great responsibility and all that.

* Gain 1 XP whenever your character's prominent position is relevant in a scene.
* Gain 2 XP whenever your character is inconvenienced by the requirements of state.
* Gain 5 XP whenever your character makes a significant personal sacrifice on behalf of those governed.
* //Buyoff:// Use your power irresponsibly, causing suffering to those you look after but benefit to yourself. 

!!! The Traditionalist
How do we keep our balance? That I can tell you in one word: tradition! Your character is conservative and wants things to stay "as they have always been."

* Gain 1 XP whenever your character's traditions are relevant in a scene.
* Gain 2 XP whenever your character resists nontraditional ways of thinking or behaving when they might be advantageous.
* Gain 5 XP whenever your character clings to tradition at great personal expense and despite considerable incentive not to.
* //Buyoff:// Your character takes on a role or performs an action that is in contravention of his traditions.

!!! Unrequited Love (In Love With X)
You have a love for someone who does not return this love.

* Gain 1 XP whenever you have to make a decision that is influenced by them.
* Gain 2 XP every time you attempt to win their affection.
* Gain 5 XP every time you put yourself in harm's way or make a sacrifice for them.
* //Buyoff:// Abandon your pursuit of this person or win their love.

!!! Vengeance
Your character has a hatred for a particular organization, person, or even species or culture.

* Gain 1 XP every time your character hurts a member of that group or a lackey of that person.
* Gain 2 XP every time your character strikes a minor blow at that group or person (killing a member of the organization or one of the person's lackeys, disrupting their life, destroying their property).
* Gain 5 XP every time your character strikes a major blow at that group or person.
* //Buyoff:// Let your enemy go.

!!! Vice
Your character has a vice that exerts great control over how he lives his life. Choose your particular Vice e.g. whoring, gambling, liquor.

* Gain 1 XP when Vice makes its way into the scene,
* Gain 2 XP when you make a decision based on the vice.
* Gain 5 XP when the vice causes you or someone you care about great harm/great success.
* //Buyoff:// Resist your addiction.

!!! The Vow
Your character has a vow of personal behavior that she has sworn not to break. This could be a dietary restriction, a requirement to pray at sunbreak every morning, or something else like that.

* Gain 1 XP for every adventure in which your character does not break this vow.
* Gain 2 XP every time your character does not break this vow even though it causes her minor harm or inconvenience.
* Gain 5 XP every time your character does not break this vow even though it causes her great harm.
* //Buyoff:// Break this vow. 

! Spending Experience Points

Experience points (~XPs) can be spent to:

* Buy a new skill or increase your ability with an existing skill. (Note you //must// follow the skills pyramid rules, so if you're increasing your ability with an existing skills, follow the [[Pyramid Reloaded|http://www.faterpg.com/dl/pyramidreloaded.pdf]] white paper.

Or you can:

* Buy a new Aspect (costs 5 XP)
* Buy a new Stunt^^&dagger;^^ (costs 3 XP)
* Buy Fate Points (1 FP costs 2 XP)
* Buy a new Key (1 XP)

&dagger; You must have a Stunt Slot to buy a new stunt. The number of Stunt Slots you have is equal to &frac12; your number of Aspects. So 10 Aspects equals 5 Stunt Slots; 12 Aspects equals 6 Stunt Slots.
<<gradient vert #ffffff #ffdddd #ff8888>>
The first place you should look for applicable skills is [[SoFF|http://www.phreeow.net/wiki/tiki-index.php?page=Spirit+of+the+Far+Future]]. If you don't find an applicable skill listed there, then look in the following list. It was compiled and adapted from the ~MegaTraveller Players' Manual, with a somewhat haphazard attempt to modify it to better conform to FATE. It is //not// a definitive list of skills; if a skill sounds appropriate, regardless of source, put it in and point it out to me, along with your reasoning.

! Military Groupings

I've had several thoughts about this. My first thought, which was to assume a collection of skills for a specific specialist, didn't work out so well. It was pointed out to me that the skills weren't "discrete", which was true.

So upon further reflection, I've decided to make a list of //suggested// skills and recommended starting levels for each military specialty. For clarity I'm going to use the modern Earth labels. 

''All military characters should seriously consider 'buying up' Strength, Dex, End, and Resolve!''

All military characters should have the Stunt "Military Grade" applied to applicable skills (driving, piloting, small arms, etc.)

!!! Basic Military Training

* Military (or Mercenary/Terrorist, etc.) laws, customs & history  -- 1
* Common Small Arms (replaces and combines ~SoFF "firearms" and "energy weapons"  -- 3
* Six points invested in any of the following based on MOS:
** Combat ~HtoH
** Stealth
** Survival
** Heavy Weapons (mortars, howitzers and the like) or Gunnery for mounted weapons
** Vehicles (ground and/or grav)
** Tactics
** Fast Draw (Like the Cowboys at the Okay Corral)
** Comms ("Commo" in ~SoFF)
** Demolitions
** Crypto
** Systems Operations
** Concealment
** Interrogation
** First Aid
** Security Systems
** VACC Suit
** ~Zero-G ("Military Grade" Stunt applicable for ~Zero-G combat and boarding ops)

''Potential Keys:'' "Subject To Orders", "MIA", "Escaped POW", "AWOL"

!!! Delta Force

* Delta Force laws, customs, & history -- 1
* Str -- 2
* End -- 2
* Common Small Arms -- 3
* Knowledge of Military, Mercenary, and Terrorist world -- 2
* SCUBA -- 1
* Grav Vehicles -- 1
* Ground Vehicles -- 1
* Three points from Basic Military list

Potential Keys: All from Basic Military and "Delta Force Operative"

!!! Ranger

* Str -- 3
* Dex -- 4
* End -- 4
* Swim -- 1
* Common Small Arms -- 2
* Ranger laws, customs, & history -- 1
* Commando training -- 3
* Stealth -- 1
* Concealment -- 1
* Survival -- 1
* Tracking -- 1
* Parachuting/Grav drop -- 2
* Heavy Weapons -- 2

Potential Keys: All from Basic Military

!!! Recon/SAS

* Str -- 3
* Dex -- 4
* End -- 4
* Swim -- 1
* Common Small Arms -- 2
* Recon or SAS laws, customs, & history -- 1
* Commando training -- 3
* Stealth -- 1
* Tracking -- 3
* Survival -- 2
* Comms  -- 1
* Tracking -- 1
* Demolitions -- 1
* Parachuting/Grav drop -- 2
* Heavy Weapons -- 2

Potential Keys: All from Basic Military


!!! Navy Seals

* Str -- 3
* Dex -- 4
* End -- 4
* Swim -- 2
* Common Small Arms -- 2
* Demolitions -- 1
* Navy & Seals laws, customs, & history -- 1
* Commando training -- 3
* First Aid -- 1
* Stealth -- 1
* Survival -- 2
* Tracking -- 1
* Comms -- 1
* Parachuting/Grav drop -- 2
* SCUBA -- 3
* Heavy Weapons -- 2

Potential Keys: All from Basic Military

!!! Special Forces (Green Berets/MARSOC)

* Swim -- 2
* Common Small Arms -- 1
* 2 skills from Rangers list
* Special Forces laws, customs, & history -- 1
* Commando training -- 1
* 3 skills from Basic Military
* Parachuting/Grav drop -- 2
* Specialty Training, one of:
** Comms
** Computers
** Tactics
** Paramedic
** Heavy Weapons
** Cryptography
** Demolitions
** Mechanical (Combat Engineering)

Potential Keys: All from Basic Military

! The Skills Table

The skills table below lists many skills individually and other skills in groups. The groups are simply groups of skills that logically belong together. For example, "Aircraft" includes Helicopter, jet-propelled, prop driven, and lighter-than-air. Each aircraft type must still be purchased as a separate skill. They are grouped only for convenience.

Also, I was rather haphazard in listing skills both individually and under their group headings. So you may find some skills twice, while you might find others listed only once.

|Academia: <br>* Admin<br>* History<br>* Linguistics<br>* Persuasion<br>* Science<br> | Admin |
| Small Arms |Aircraft: <br>* Helicopter<br>* Jet-propelled Aircraft<br>* Lighter-than-air Craft<br>* Propeller-driven Aircraft |
|Animal Handling: <br>* Guard/Hunting Beasts<br>* Equestrian<br>* Herding | Common Melee |
| Uncommon Melee | Muscle Powered Missle |
| Early Firearms | Artisan |
| Archaic Weapons | Modern Armor (Includes Battle Dress and Vacc Suit) |
| Biology | Small Arms |
| Common Heavy Weapons | Bribery |
| Broker | Chemistry |
| Combat Engineer | Communications |
| Computer Science (also serves for robotics) | Computer (programming & Advance Ops) |
| Demolitions ||
| Disguise | Economic (includes Admin, broker, legal, trader) |
| Electronics | Engineering |
|Exploratory: <br>* Pilot<br>* Sensor Ops<br>* Survey<br>* Survival<br>* Vacc Suit<br>* Vehicle |FA Gunnery: <br>* Common Heavy Weapons<br>* Common Ship Mounted<br>* Screens |
| Fleet Tactics | Forensics |
| Forgery | Forward Observer |
| Gambling | Genetics |
| Grav Belt | Grav Vehicles |
| Guard/Hunting Beasts |Gunnery: <br>* Screens<br>* Common Heavy Weapons<br>* Common Ship Mounted Weapons |
| Grav Vehicles ||
| Common Ship Mounted Weapons | Herding |
| History | Hovercraft |
|Interpersonal: <br>* Admin<br>* Liaison<br>* Linguists<br>* Steward | Interrogation |
| Jack-of-all-trades | Large Watercraft |
| Legal | Lighter-than-air Craft |
| Linguistics | Mechanics |
| Medical | Naval Architect |
| Navigation (includes Sensor Ops at -1) | Persuasion |
| Physics |Pilot: <br>* Aircraft<br>* Hovercraft<br>* Spacecraft<br>* Starship<br>* Navigation<br>* Sensor Ops<br>* Screens<br>* Ship Tactics<br>* Space Combat |
| Prospecting | Recon (includes hand-held Sensor Ops) |
| Recruiting | Robot Ops |
| Robotics (Includes Robot Ops; Computer at -1) |Science: <br>* Biology<br>* Chemistry<br>* Genetics<br>* Forensic<br>* Medical<br>* Robotics |
| Sensor Ops | Screens |
| Ship Tactics | Ship's Boat |
| Small Watercraft |Space: <br>* Engineering<br>* Navigation<br>* Pilot<br>* Sensor Ops<br>* Ship's Boat<br>* Vacc Suit |
|Space Combat: <br>* Gunnery<br>* Sensor Ops<br>* Ship Tactics<br>* Tactics |Space Tech: <br>* Communications<br>* Computer<br>* Engineering<br>* Gravitics<br>* Vacc suit |
|Special Combat: <br>* Battle Dress<br>* Combat Engineering<br>* Marksman<br>* Demolition<br>* Gunnery<br>* Forward Observer<br>* Grav Belt<br>* Small Arms<br>* Stealth<br>* ~Zero-G Environ ||
| Stealth | Steward |
| Streetwise | Survey (Sensor Ops at -1) |
| Survival | Tactics (Ship's Tactics at -1) |
|Technical: <br>* Communications<br>* Computer<br>* Electronics<br>* Gravitics<br>* Robot Ops<br>* Sensor Ops | Trader |
| Tracked Vehicles (Wheeled Vehicles at -1) |Vice: <br>* Bribery<br>* Disguise<br>* Forgery<br>* Gambling<br>* Intrusion<br>* Streetwise |
| Wheeled Vehicles (tracked Vehicles at -1) | ~Zero-G Environ |
Anthropomorphize a house cat by giving it human looking arms and legs; extend the front paws till they're hands, the back paws till they're feet capable of balancing them when upright; lose the tail -- and make them on the smallish size of human, of course. (Average height 5')

You have just created a Fex.

Even in basic temperament the Fex are very "house cat" like. They are carnivores that, even today, have nomadic bands wandering the vastness of Fexao hunting //orsec//, a small pig like animal. If Starbucks had a franchise on Fexao, they would serve milk, not coffee (a particularly noxious human concoction). 

In fact, "milk shops" are as common as Starbucks on Fexao, and serves as a kind of social lubricant. The Fex play games there, socialize there, meet before and after work there, and so on. It's where the local gossip is exchanged, the newspaper is purchased, and so on and so forth.

But there are also ways the Fex do //not// emulate an anthropomorphized house cat. A house cat will kill (and torment) prey for fun. A house cat will fiercely defend itself. And while both Fex and house cats have a wide range of temperaments, the Fex are much more laid back than any cat. So laid back, in fact, that a Fex would rather drop an issue rather than ruffle feathers.

In fact, the Empire conquered Fexao without firing a shot. They simply moved in and setup shop. At the time the Fex were, at best, tribal and knew very little about technology. But typical of the Empire of Durakaan, the Imperial Legions taught them, and shared technology with them, and the Fex proved quick learners.

Today Fexao is the capital of Feles Subsector, and a major complaint of more conservative Fex is that they have become nothing more than mimics of Imperial Society. Most Fex have given up their simple villages for modern, Imperial cities. Their informal tribal groupings have been replaced by a democratic assembly that looks suspiciously similar to the Imperial Senate. And Fexao has become the model of bureaucratic efficiency. 

In fact, the Fex are such model subjects of the Empire that they have //the// highest rate of Citizenship in the provinces, and hold a seat in the Senate. (Current Senator: Tyrl Garrlan) It was from Fexao that the the Imperial Navy launched when it first found the humans on [[New Home]]. And from [[New Home]] they learned of the (new) human home world on <<Midgard Tiddlywiki>>.


''Applicable FATE requiremetns''

* 'Fex' Aspect required

The following skill minimums:

* Dexterity-2
* Alertness-1


''Package Deal''

| !Cost | !Characteristics/Powers |
| +2 | DEX |
| -2 | CON |
| +2 | +2" running |
| +12 | claws: 1d6HKA, reduced penetration (-¼) |
| +2 | Climbing |
| +5 | Nightvision |
| +6 | Lightsleep |
| ''27'' | ''Total Package Cost'' |
[<img[http://rpg-fusion.com/files/ALDE/Floater.jpg]] ''Description:'' With the advent of artificial grav technology in a big way at Tech Level 10, most societies construct all manner of platforms for transporting heavy cargoes. On popular category of cargo carrier is the floater -- essentially a self propelled cargo platten of sorts.

Most floaters are between 1 and 2 meters square, and can carry several hundred kilograms of bulky cargo. The floater shown (and others like it) can self-propel up to 5 kph -- the speed of a brisk walk. Each floater includes a fold-down control pedestal, a flashing warning strobe, cargo tie-downs, and an open end to allow for platform loading and drainage.

''Price:'' 30,000 Denarii
/***
|Name|FoldHeadingsPlugin|
|Source|http://www.TiddlyTools.com/#FoldHeadingsPlugin|
|Version|1.1.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|automatically turn headings into slider-like panels that can be folded/unfolded with a single click|
This plugin defines a macro that automatically converts heading-formatted content into sliders that let you expand/collapse their content by clicking on individual headings.
!!!!!Usage
<<<
{{{
<<foldHeadings opened|closed tag tag tag...>>
}}}
where: ''opened'' or ''closed'' is a keyword indicating the initial state of the sections (default: opened), and ''tag tag tag...'' is an optional list of tags to match, so that the foldable effect is only applied to tiddlers that contain one (or more) of the indicated tags.  

When you place the macro in a tiddler, any heading-formatted content (i.e, "!" through "!!!!!") in that tiddler will automatically become //'fold-able'//, allowing you to expand/collapse the content that follows each heading simply by clicking on that heading.  Each content section begins with the first element following a heading, and continues until either another heading is found or the end of the tiddler is reached.  For example:
{{{
<<foldHeadings closed>>
}}}
is embedded in ''this'' tiddler in order to make all the headings it contains 'fold-able'.  Note that the macro has been placed at the //end// of the tiddler because it only operates on *rendered* content.  Thus, only headings that //precede// it in the same tiddler will become fold-able, as any headings that //follow// it are not actually rendered until //after// the macro has been processed.

You can further limit the effect of the macro within the tiddler by surrounding several headings in a "CSS class wrapper" ("""{{classname{...}}}""") or other containing DOM element (e.g., """@@display:inline;...@@""") and then embedding the {{{<<foldHeadings>>}}} macro inside that container (at the end)... only those headings that are also within that container will be made fold-able, instead of converting ''all'' the headings in that tiddler.

Conversely, if you want the fold-able ability to apply to the headings in //all// tiddlers, ''without having to alter //any// of those individual tiddlers'', you can add the macro to the end of your [[ViewTemplate]], so that it will be invoked after the content in each tiddler has been rendered, causing all headings they contain to automatically become fold-able.  For example:
{{{
<span macro="foldHeadings closed"></span>
}}}
You can also limit this effect to selected tiddlers by specifying one or more tags as additional macro parameters.  For example:
{{{
<span macro="foldHeadings closed systemConfig"></span>
}}}
is only applied to headings contained in //plugin tiddlers// (i.e., tiddlers tagged with <<tag systemConfig>>), while headings in other tiddlers remain unaffected by the macro, even though it is embedded in the common [[ViewTemplate]] definition.
<<<
!!!!!Revisions
<<<
2009.01.06 [1.1.1] removed hijack of scrollToSection() (see [[SectionLinksPlugin]] for equivalent code)
2008.11.17 [1.1.0] added hijack of 'scrollToSection()' function (see [[CoreTweaks]] and http://trac.tiddlywiki.org/ticket/784)
2007.12.06 [1.0.2] fix handling for empty sections when checking for sliderPanel/floatingPanel
2007.12.02 [1.0.1] fix handling when content following a heading is already a sliderPanel/floatingPanel
2007.12.01 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.FoldHeadingsPlugin= {major: 1, minor: 1, revision: 1, date: new Date(2009,1,6)};

config.macros.foldHeadings = {
	guideText: "opened|closed className",
	showtip: "click to show '%0'",
	hidetip: "click to hide '%0'",
	showlabel: "more...",
	hidelabel: "[x]",
	html: "<span style='float:right;text-weight:normal;font-size:80%;' class='TiddlyLinkExisting'>%0&nbsp;</span>",
	handler: function(place,macroName,params) {
		var show=params[0] && params.shift().toLowerCase()!="closed";
		if (params.length) { // if filtering by tag(s)
			var here=story.findContainingTiddler(place);
			if (here) var tid=store.getTiddler(here.getAttribute("tiddler"));
			if (!tid || !tid.tags.containsAny(params)) return; // in a tiddler and not tagged... do nothing...
		}
		var elems=place.parentNode.getElementsByTagName("*");
		var heads=[]; for (var i=0; i<elems.length; i++) { // get non-foldable heading elements
			var n=elems[i].nodeName; var foldable=hasClass(elems[i],"foldable");
			if ((n=="H1"||n=="H2"||n=="H3"||n=="H4"||n=="H5")&&!foldable)
				heads.push(elems[i]);
			}
		for (var i=0; i<heads.length; i++) { var h=heads[i]; // for each heading element...
			// find start/end of section content (up to next heading or end of content)
			var start=end=h.nextSibling; while (end && end.nextSibling) {
				var n=end.nextSibling.nodeName.toUpperCase();
				if (n=="H1"||n=="H2"||n=="H3"||n=="H4"||n=="H5") break;
				end=end.nextSibling;
			}
			if (start && hasClass(start,"sliderPanel")||hasClass(start,"floatingPanel")) continue; // heading is already a slider!
			var span=createTiddlyElement(null,"span",null,"sliderPanel"); // create container
			span.style.display=show?"inline":"none"; // set initial display state
			h.parentNode.insertBefore(span,start); // and insert it following the heading element
			// move section elements into container...
			var e=start; while (e) { var next=e.nextSibling; span.insertBefore(e,null); if (e==end) break; e=next; }
			// set heading label/tip/cursor...
			h.title=(show?this.hidetip:this.showtip).format([h.textContent])
			h.innerHTML=this.html.format([show?this.hidelabel:this.showlabel])+h.innerHTML;
			h.style.cursor='pointer';
			addClass(h,"foldable"); // so we know it been done (and to add extra styles)
			h.onclick=function() {
				var panel=this.nextSibling; var show=panel.style.display=="none";
				// update panel display state
				if (config.options.chkAnimate) anim.startAnimating(new Slider(panel,show));
				else panel.style.display = show?"inline":"none";
				// update heading label/tip
				this.removeChild(this.firstChild); // remove existing label
				var fh=config.macros.foldHeadings; // abbreviation for readability...
				this.title=(show?fh.hidetip:fh.showtip).format([this.textContent])
				this.innerHTML=fh.html.format([show?fh.hidelabel:fh.showlabel])+this.innerHTML;
			}
		}		
	}
}

if (story.scrollToSection) {
Story.prototype.foldheadings_scrollToSection=Story.prototype.scrollToSection;
Story.prototype.scrollToSection=function(title,section) {
	var e=this.foldheadings_scrollToSection.apply(this,arguments);
	// if scrolling to a folded section heading, click to expand it
	if (e && hasClass(e,'foldable') && e.nextSibling.style.display=='none') e.onclick();
}
}
//}}}
// //<<foldHeadings closed>>
//~~(Part of the [[ForEachTiddlerPlugin]])~~//

Create customizable lists, tables etc. for your selections of tiddlers. Specify the tiddlers to include and their order through a powerful language.

''Syntax:'' 
|>|{{{<<}}}''forEachTiddler'' [''in'' //tiddlyWikiPath//] [''where'' //whereCondition//] [''sortBy'' //sortExpression// [''ascending'' //or// ''descending'']] [''script'' //scriptText//] [//action// [//actionParameters//]]{{{>>}}}|
|//tiddlyWikiPath//|The filepath to the TiddlyWiki the macro should work on. When missing the current TiddlyWiki is used.|
|//whereCondition//|(quoted) JavaScript boolean expression. May refer to the build-in variables {{{tiddler}}} and {{{context}}}.|
|//sortExpression//|(quoted) JavaScript expression returning "comparable" objects (using '{{{<}}}','{{{>}}}','{{{==}}}'. May refer to the build-in variables {{{tiddler}}} and {{{context}}}.|
|//scriptText//|(quoted) JavaScript text. Typically defines JavaScript functions that are called by the various JavaScript expressions (whereClause, sortClause, action arguments,...)|
|//action//|The action that should be performed on every selected tiddler, in the given order. By default the actions [[addToList|AddToListAction]] and [[write|WriteAction]] are supported. When no action is specified [[addToList|AddToListAction]] is used.|
|//actionParameters//|(action specific) parameters the action may refer while processing the tiddlers (see action descriptions for details). <<tiddler [[JavaScript in actionParameters]]>>|
|>|~~Syntax formatting: Keywords in ''bold'', optional parts in [...]. 'or' means that exactly one of the two alternatives must exist.~~|


''Using JavaScript''

To give you a lot of flexibility the [[ForEachTiddlerMacro]] uses JavaScript in its arguments. Even if you are not that familiar with JavaScript you may find forEachTiddler useful. Just have a look at the various ready-to-use [[ForEachTiddlerExamples]] and adapt them to your needs.

''The Elements of the Macro''

The arguments of the ForEachTiddlerMacro consist of multiple parts, each of them being optional.

<<slider chkFETInClause [[inClause]] "inClause" "inClause">>
<<slider chkFETWhereClause [[whereClause]] "whereClause" "whereClause">>
<<slider chkFETSortClause [[sortClause]] "sortClause" "sortClause">>
<<slider chkFETScriptClause [[scriptClause]] "scriptClause" "scriptClause">>
<<slider chkFETActions [[Action Specification]] "Action Specification" "Action Specification">>

''Using Macros and ">" inside the forEachTiddler Macro''

You may use other macro calls into the expression, especially in the actionParameters. To avoid that the {{{>>}}} of such a macro call is misinterpreted as the end of the {{{<<forEachTiddler...>>}}} macro you must escape the {{{>>}}} of the inner macro with {{{$))}}} E.g. if you want to use {{{<<tiddler ...>>}}} inside the {{{forEachTiddler}}} macro you have to write {{{<<tiddler ...$))}}}.

In addition it is necessary to escape single {{{>}}} with the text {{{$)}}}.

''Using {{{<<tiddler ... with: ...>>}}} to re-use ForEachTiddler definitions''

Sometimes you may want to use a certain ForEachTiddler definition in slight variations. E.g. you may want to list either the tiddlers tagged with "ToDo" and in the other case with "Done". To do so you may use "Tiddler parameters". Here an example:

Replace the variable part of the ForEachTiddler definition with $1 ($2,... $9 are supported). E.g. you may create the tiddler "ListTaggedTiddlers" like this
{{{
<<forEachTiddler 
 where 
 'tiddler.tags.contains("$1")'
>>
}}}

Now you can use the ListTaggedTiddlers for various specific tags, using the {{{<<tiddler ...>>}}} macro:
{{{
<<tiddler ListTaggedTiddlers with: "systemConfig">>
}}}
{{{
<<tiddler ListTaggedTiddlers with: "Plugin">>
}}}


See also [[ForEachTiddlerExamples]].
/***
|''Name:''|ForEachTiddlerPlugin|
|''Version:''|1.0.8 (2007-04-12)|
|''Source:''|http://tiddlywiki.abego-software.de/#ForEachTiddlerPlugin|
|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|
|''Licence:''|[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]|
|''Copyright:''|&copy; 2005-2007 [[abego Software|http://www.abego-software.de]]|
|''TiddlyWiki:''|1.2.38+, 2.0|
|''Browser:''|Firefox 1.0.4+; Firefox 1.5; InternetExplorer 6.0|
!Description

Create customizable lists, tables etc. for your selections of tiddlers. Specify the tiddlers to include and their order through a powerful language.

''Syntax:'' 
|>|{{{<<}}}''forEachTiddler'' [''in'' //tiddlyWikiPath//] [''where'' //whereCondition//] [''sortBy'' //sortExpression// [''ascending'' //or// ''descending'']] [''script'' //scriptText//] [//action// [//actionParameters//]]{{{>>}}}|
|//tiddlyWikiPath//|The filepath to the TiddlyWiki the macro should work on. When missing the current TiddlyWiki is used.|
|//whereCondition//|(quoted) JavaScript boolean expression. May refer to the build-in variables {{{tiddler}}} and  {{{context}}}.|
|//sortExpression//|(quoted) JavaScript expression returning "comparable" objects (using '{{{<}}}','{{{>}}}','{{{==}}}'. May refer to the build-in variables {{{tiddler}}} and  {{{context}}}.|
|//scriptText//|(quoted) JavaScript text. Typically defines JavaScript functions that are called by the various JavaScript expressions (whereClause, sortClause, action arguments,...)|
|//action//|The action that should be performed on every selected tiddler, in the given order. By default the actions [[addToList|AddToListAction]] and [[write|WriteAction]] are supported. When no action is specified [[addToList|AddToListAction]]  is used.|
|//actionParameters//|(action specific) parameters the action may refer while processing the tiddlers (see action descriptions for details). <<tiddler [[JavaScript in actionParameters]]>>|
|>|~~Syntax formatting: Keywords in ''bold'', optional parts in [...]. 'or' means that exactly one of the two alternatives must exist.~~|

See details see [[ForEachTiddlerMacro]] and [[ForEachTiddlerExamples]].

!Revision history
* v1.0.8 (2007-04-12)
** Adapted to latest TiddlyWiki 2.2 Beta importTiddlyWiki API (introduced with changeset 2004). TiddlyWiki 2.2 Beta builds prior to changeset 2004 are no longer supported (but TiddlyWiki 2.1 and earlier, of cause)
* v1.0.7 (2007-03-28)
** Also support "pre" formatted TiddlyWikis (introduced with TW 2.2) (when using "in" clause to work on external tiddlers)
* v1.0.6 (2006-09-16)
** Context provides "viewerTiddler", i.e. the tiddler used to view the macro. Most times this is equal to the "inTiddler", but when using the "tiddler" macro both may be different.
** Support "begin", "end" and "none" expressions in "write" action
* v1.0.5 (2006-02-05)
** Pass tiddler containing the macro with wikify, context object also holds reference to tiddler containing the macro ("inTiddler"). Thanks to SimonBaird.
** Support Firefox 1.5.0.1
** Internal
*** Make "JSLint" conform
*** "Only install once"
* v1.0.4 (2006-01-06)
** Support TiddlyWiki 2.0
* v1.0.3 (2005-12-22)
** Features: 
*** Write output to a file supports multi-byte environments (Thanks to Bram Chen) 
*** Provide API to access the forEachTiddler functionality directly through JavaScript (see getTiddlers and performMacro)
** Enhancements:
*** Improved error messages on InternetExplorer.
* v1.0.2 (2005-12-10)
** Features: 
*** context object also holds reference to store (TiddlyWiki)
** Fixed Bugs: 
*** ForEachTiddler 1.0.1 has broken support on win32 Opera 8.51 (Thanks to BrunoSabin for reporting)
* v1.0.1 (2005-12-08)
** Features: 
*** Access tiddlers stored in separated TiddlyWikis through the "in" option. I.e. you are no longer limited to only work on the "current TiddlyWiki".
*** Write output to an external file using the "toFile" option of the "write" action. With this option you may write your customized tiddler exports.
*** Use the "script" section to define "helper" JavaScript functions etc. to be used in the various JavaScript expressions (whereClause, sortClause, action arguments,...).
*** Access and store context information for the current forEachTiddler invocation (through the build-in "context" object) .
*** Improved script evaluation (for where/sort clause and write scripts).
* v1.0.0 (2005-11-20)
** initial version

!Code
***/
//{{{

	
//============================================================================
//============================================================================
//		   ForEachTiddlerPlugin
//============================================================================
//============================================================================

// Only install once
if (!version.extensions.ForEachTiddlerPlugin) {

if (!window.abego) window.abego = {};

version.extensions.ForEachTiddlerPlugin = {
	major: 1, minor: 0, revision: 8, 
	date: new Date(2007,3,12), 
	source: "http://tiddlywiki.abego-software.de/#ForEachTiddlerPlugin",
	licence: "[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]",
	copyright: "Copyright (c) abego Software GmbH, 2005-2007 (www.abego-software.de)"
};

// For backward compatibility with TW 1.2.x
//
if (!TiddlyWiki.prototype.forEachTiddler) {
	TiddlyWiki.prototype.forEachTiddler = function(callback) {
		for(var t in this.tiddlers) {
			callback.call(this,t,this.tiddlers[t]);
		}
	};
}

//============================================================================
// forEachTiddler Macro
//============================================================================

version.extensions.forEachTiddler = {
	major: 1, minor: 0, revision: 8, date: new Date(2007,3,12), provider: "http://tiddlywiki.abego-software.de"};

// ---------------------------------------------------------------------------
// Configurations and constants 
// ---------------------------------------------------------------------------

config.macros.forEachTiddler = {
	 // Standard Properties
	 label: "forEachTiddler",
	 prompt: "Perform actions on a (sorted) selection of tiddlers",

	 // actions
	 actions: {
		 addToList: {},
		 write: {}
	 }
};

// ---------------------------------------------------------------------------
//  The forEachTiddler Macro Handler 
// ---------------------------------------------------------------------------

config.macros.forEachTiddler.getContainingTiddler = function(e) {
	while(e && !hasClass(e,"tiddler"))
		e = e.parentNode;
	var title = e ? e.getAttribute("tiddler") : null; 
	return title ? store.getTiddler(title) : null;
};

config.macros.forEachTiddler.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
	// config.macros.forEachTiddler.traceMacroCall(place,macroName,params,wikifier,paramString,tiddler);

	if (!tiddler) tiddler = config.macros.forEachTiddler.getContainingTiddler(place);
	// --- Parsing ------------------------------------------

	var i = 0; // index running over the params
	// Parse the "in" clause
	var tiddlyWikiPath = undefined;
	if ((i < params.length) && params[i] == "in") {
		i++;
		if (i >= params.length) {
			this.handleError(place, "TiddlyWiki path expected behind 'in'.");
			return;
		}
		tiddlyWikiPath = this.paramEncode((i < params.length) ? params[i] : "");
		i++;
	}

	// Parse the where clause
	var whereClause ="true";
	if ((i < params.length) && params[i] == "where") {
		i++;
		whereClause = this.paramEncode((i < params.length) ? params[i] : "");
		i++;
	}

	// Parse the sort stuff
	var sortClause = null;
	var sortAscending = true; 
	if ((i < params.length) && params[i] == "sortBy") {
		i++;
		if (i >= params.length) {
			this.handleError(place, "sortClause missing behind 'sortBy'.");
			return;
		}
		sortClause = this.paramEncode(params[i]);
		i++;

		if ((i < params.length) && (params[i] == "ascending" || params[i] == "descending")) {
			 sortAscending = params[i] == "ascending";
			 i++;
		}
	}

	// Parse the script
	var scriptText = null;
	if ((i < params.length) && params[i] == "script") {
		i++;
		scriptText = this.paramEncode((i < params.length) ? params[i] : "");
		i++;
	}

	// Parse the action. 
	// When we are already at the end use the default action
	var actionName = "addToList";
	if (i < params.length) {
	   if (!config.macros.forEachTiddler.actions[params[i]]) {
			this.handleError(place, "Unknown action '"+params[i]+"'.");
			return;
		} else {
			actionName = params[i]; 
			i++;
		}
	} 
	
	// Get the action parameter
	// (the parsing is done inside the individual action implementation.)
	var actionParameter = params.slice(i);


	// --- Processing ------------------------------------------
	try {
		this.performMacro({
				place: place, 
				inTiddler: tiddler,
				whereClause: whereClause, 
				sortClause: sortClause, 
				sortAscending: sortAscending, 
				actionName: actionName, 
				actionParameter: actionParameter, 
				scriptText: scriptText, 
				tiddlyWikiPath: tiddlyWikiPath});

	} catch (e) {
		this.handleError(place, e);
	}
};

// Returns an object with properties "tiddlers" and "context".
// tiddlers holds the (sorted) tiddlers selected by the parameter,
// context the context of the execution of the macro.
//
// The action is not yet performed.
//
// @parameter see performMacro
//
config.macros.forEachTiddler.getTiddlersAndContext = function(parameter) {

	var context = config.macros.forEachTiddler.createContext(parameter.place, parameter.whereClause, parameter.sortClause, parameter.sortAscending, parameter.actionName, parameter.actionParameter, parameter.scriptText, parameter.tiddlyWikiPath, parameter.inTiddler);

	var tiddlyWiki = parameter.tiddlyWikiPath ? this.loadTiddlyWiki(parameter.tiddlyWikiPath) : store;
	context["tiddlyWiki"] = tiddlyWiki;
	
	// Get the tiddlers, as defined by the whereClause
	var tiddlers = this.findTiddlers(parameter.whereClause, context, tiddlyWiki);
	context["tiddlers"] = tiddlers;

	// Sort the tiddlers, when sorting is required.
	if (parameter.sortClause) {
		this.sortTiddlers(tiddlers, parameter.sortClause, parameter.sortAscending, context);
	}

	return {tiddlers: tiddlers, context: context};
};

// Returns the (sorted) tiddlers selected by the parameter.
//
// The action is not yet performed.
//
// @parameter see performMacro
//
config.macros.forEachTiddler.getTiddlers = function(parameter) {
	return this.getTiddlersAndContext(parameter).tiddlers;
};

// Performs the macros with the given parameter.
//
// @param parameter holds the parameter of the macro as separate properties.
//				  The following properties are supported:
//
//						place
//						whereClause
//						sortClause
//						sortAscending
//						actionName
//						actionParameter
//						scriptText
//						tiddlyWikiPath
//
//					All properties are optional. 
//					For most actions the place property must be defined.
//
config.macros.forEachTiddler.performMacro = function(parameter) {
	var tiddlersAndContext = this.getTiddlersAndContext(parameter);

	// Perform the action
	var actionName = parameter.actionName ? parameter.actionName : "addToList";
	var action = config.macros.forEachTiddler.actions[actionName];
	if (!action) {
		this.handleError(parameter.place, "Unknown action '"+actionName+"'.");
		return;
	}

	var actionHandler = action.handler;
	actionHandler(parameter.place, tiddlersAndContext.tiddlers, parameter.actionParameter, tiddlersAndContext.context);
};

// ---------------------------------------------------------------------------
//  The actions 
// ---------------------------------------------------------------------------

// Internal.
//
// --- The addToList Action -----------------------------------------------
//
config.macros.forEachTiddler.actions.addToList.handler = function(place, tiddlers, parameter, context) {
	// Parse the parameter
	var p = 0;

	// Check for extra parameters
	if (parameter.length > p) {
		config.macros.forEachTiddler.createExtraParameterErrorElement(place, "addToList", parameter, p);
		return;
	}

	// Perform the action.
	var list = document.createElement("ul");
	place.appendChild(list);
	for (var i = 0; i < tiddlers.length; i++) {
		var tiddler = tiddlers[i];
		var listItem = document.createElement("li");
		list.appendChild(listItem);
		createTiddlyLink(listItem, tiddler.title, true);
	}
};

abego.parseNamedParameter = function(name, parameter, i) {
	var beginExpression = null;
	if ((i < parameter.length) && parameter[i] == name) {
		i++;
		if (i >= parameter.length) {
			throw "Missing text behind '%0'".format([name]);
		}
		
		return config.macros.forEachTiddler.paramEncode(parameter[i]);
	}
	return null;
}

// Internal.
//
// --- The write Action ---------------------------------------------------
//
config.macros.forEachTiddler.actions.write.handler = function(place, tiddlers, parameter, context) {
	// Parse the parameter
	var p = 0;
	if (p >= parameter.length) {
		this.handleError(place, "Missing expression behind 'write'.");
		return;
	}

	var textExpression = config.macros.forEachTiddler.paramEncode(parameter[p]);
	p++;

	// Parse the "begin" option
	var beginExpression = abego.parseNamedParameter("begin", parameter, p);
	if (beginExpression !== null) 
		p += 2;
	var endExpression = abego.parseNamedParameter("end", parameter, p);
	if (endExpression !== null) 
		p += 2;
	var noneExpression = abego.parseNamedParameter("none", parameter, p);
	if (noneExpression !== null) 
		p += 2;

	// Parse the "toFile" option
	var filename = null;
	var lineSeparator = undefined;
	if ((p < parameter.length) && parameter[p] == "toFile") {
		p++;
		if (p >= parameter.length) {
			this.handleError(place, "Filename expected behind 'toFile' of 'write' action.");
			return;
		}
		
		filename = config.macros.forEachTiddler.getLocalPath(config.macros.forEachTiddler.paramEncode(parameter[p]));
		p++;
		if ((p < parameter.length) && parameter[p] == "withLineSeparator") {
			p++;
			if (p >= parameter.length) {
				this.handleError(place, "Line separator text expected behind 'withLineSeparator' of 'write' action.");
				return;
			}
			lineSeparator = config.macros.forEachTiddler.paramEncode(parameter[p]);
			p++;
		}
	}
	
	// Check for extra parameters
	if (parameter.length > p) {
		config.macros.forEachTiddler.createExtraParameterErrorElement(place, "write", parameter, p);
		return;
	}

	// Perform the action.
	var func = config.macros.forEachTiddler.getEvalTiddlerFunction(textExpression, context);
	var count = tiddlers.length;
	var text = "";
	if (count > 0 && beginExpression)
		text += config.macros.forEachTiddler.getEvalTiddlerFunction(beginExpression, context)(undefined, context, count, undefined);
	
	for (var i = 0; i < count; i++) {
		var tiddler = tiddlers[i];
		text += func(tiddler, context, count, i);
	}
	
	if (count > 0 && endExpression)
		text += config.macros.forEachTiddler.getEvalTiddlerFunction(endExpression, context)(undefined, context, count, undefined);

	if (count == 0 && noneExpression) 
		text += config.macros.forEachTiddler.getEvalTiddlerFunction(noneExpression, context)(undefined, context, count, undefined);
		

	if (filename) {
		if (lineSeparator !== undefined) {
			lineSeparator = lineSeparator.replace(/\\n/mg, "\n").replace(/\\r/mg, "\r");
			text = text.replace(/\n/mg,lineSeparator);
		}
		saveFile(filename, convertUnicodeToUTF8(text));
	} else {
		var wrapper = createTiddlyElement(place, "span");
		wikify(text, wrapper, null/* highlightRegExp */, context.inTiddler);
	}
};


// ---------------------------------------------------------------------------
//  Helpers
// ---------------------------------------------------------------------------

// Internal.
//
config.macros.forEachTiddler.createContext = function(placeParam, whereClauseParam, sortClauseParam, sortAscendingParam, actionNameParam, actionParameterParam, scriptText, tiddlyWikiPathParam, inTiddlerParam) {
	return {
		place : placeParam, 
		whereClause : whereClauseParam, 
		sortClause : sortClauseParam, 
		sortAscending : sortAscendingParam, 
		script : scriptText,
		actionName : actionNameParam, 
		actionParameter : actionParameterParam,
		tiddlyWikiPath : tiddlyWikiPathParam,
		inTiddler : inTiddlerParam, // the tiddler containing the <<forEachTiddler ...>> macro call.
		viewerTiddler : config.macros.forEachTiddler.getContainingTiddler(placeParam) // the tiddler showing the forEachTiddler result
	};
};

// Internal.
//
// Returns a TiddlyWiki with the tiddlers loaded from the TiddlyWiki of 
// the given path.
//
config.macros.forEachTiddler.loadTiddlyWiki = function(path, idPrefix) {
	if (!idPrefix) {
		idPrefix = "store";
	}
	var lenPrefix = idPrefix.length;
	
	// Read the content of the given file
	var content = loadFile(this.getLocalPath(path));
	if(content === null) {
		throw "TiddlyWiki '"+path+"' not found.";
	}
	
	var tiddlyWiki = new TiddlyWiki();

	// Starting with TW 2.2 there is a helper function to import the tiddlers
	if (tiddlyWiki.importTiddlyWiki) {
		if (!tiddlyWiki.importTiddlyWiki(content))
			throw "File '"+path+"' is not a TiddlyWiki.";
		tiddlyWiki.dirty = false;
		return tiddlyWiki;
	}
	
	// The legacy code, for TW < 2.2
	
	// Locate the storeArea div's
	var posOpeningDiv = content.indexOf(startSaveArea);
	var posClosingDiv = content.lastIndexOf(endSaveArea);
	if((posOpeningDiv == -1) || (posClosingDiv == -1)) {
		throw "File '"+path+"' is not a TiddlyWiki.";
	}
	var storageText = content.substr(posOpeningDiv + startSaveArea.length, posClosingDiv);
	
	// Create a "div" element that contains the storage text
	var myStorageDiv = document.createElement("div");
	myStorageDiv.innerHTML = storageText;
	myStorageDiv.normalize();
	
	// Create all tiddlers in a new TiddlyWiki
	// (following code is modified copy of TiddlyWiki.prototype.loadFromDiv)
	var store = myStorageDiv.childNodes;
	for(var t = 0; t < store.length; t++) {
		var e = store[t];
		var title = null;
		if(e.getAttribute)
			title = e.getAttribute("tiddler");
		if(!title && e.id && e.id.substr(0,lenPrefix) == idPrefix)
			title = e.id.substr(lenPrefix);
		if(title && title !== "") {
			var tiddler = tiddlyWiki.createTiddler(title);
			tiddler.loadFromDiv(e,title);
		}
	}
	tiddlyWiki.dirty = false;

	return tiddlyWiki;
};


	
// Internal.
//
// Returns a function that has a function body returning the given javaScriptExpression.
// The function has the parameters:
// 
//	 (tiddler, context, count, index)
//
config.macros.forEachTiddler.getEvalTiddlerFunction = function (javaScriptExpression, context) {
	var script = context["script"];
	var functionText = "var theFunction = function(tiddler, context, count, index) { return "+javaScriptExpression+"}";
	var fullText = (script ? script+";" : "")+functionText+";theFunction;";
	return eval(fullText);
};

// Internal.
//
config.macros.forEachTiddler.findTiddlers = function(whereClause, context, tiddlyWiki) {
	var result = [];
	var func = config.macros.forEachTiddler.getEvalTiddlerFunction(whereClause, context);
	tiddlyWiki.forEachTiddler(function(title,tiddler) {
		if (func(tiddler, context, undefined, undefined)) {
			result.push(tiddler);
		}
	});
	return result;
};

// Internal.
//
config.macros.forEachTiddler.createExtraParameterErrorElement = function(place, actionName, parameter, firstUnusedIndex) {
	var message = "Extra parameter behind '"+actionName+"':";
	for (var i = firstUnusedIndex; i < parameter.length; i++) {
		message += " "+parameter[i];
	}
	this.handleError(place, message);
};

// Internal.
//
config.macros.forEachTiddler.sortAscending = function(tiddlerA, tiddlerB) {
	var result = 
		(tiddlerA.forEachTiddlerSortValue == tiddlerB.forEachTiddlerSortValue) 
			? 0
			: (tiddlerA.forEachTiddlerSortValue < tiddlerB.forEachTiddlerSortValue)
			   ? -1 
			   : +1; 
	return result;
};

// Internal.
//
config.macros.forEachTiddler.sortDescending = function(tiddlerA, tiddlerB) {
	var result = 
		(tiddlerA.forEachTiddlerSortValue == tiddlerB.forEachTiddlerSortValue) 
			? 0
			: (tiddlerA.forEachTiddlerSortValue < tiddlerB.forEachTiddlerSortValue)
			   ? +1 
			   : -1; 
	return result;
};

// Internal.
//
config.macros.forEachTiddler.sortTiddlers = function(tiddlers, sortClause, ascending, context) {
	// To avoid evaluating the sortClause whenever two items are compared 
	// we pre-calculate the sortValue for every item in the array and store it in a 
	// temporary property ("forEachTiddlerSortValue") of the tiddlers.
	var func = config.macros.forEachTiddler.getEvalTiddlerFunction(sortClause, context);
	var count = tiddlers.length;
	var i;
	for (i = 0; i < count; i++) {
		var tiddler = tiddlers[i];
		tiddler.forEachTiddlerSortValue = func(tiddler,context, undefined, undefined);
	}

	// Do the sorting
	tiddlers.sort(ascending ? this.sortAscending : this.sortDescending);

	// Delete the temporary property that holds the sortValue.	
	for (i = 0; i < tiddlers.length; i++) {
		delete tiddlers[i].forEachTiddlerSortValue;
	}
};


// Internal.
//
config.macros.forEachTiddler.trace = function(message) {
	displayMessage(message);
};

// Internal.
//
config.macros.forEachTiddler.traceMacroCall = function(place,macroName,params) {
	var message ="<<"+macroName;
	for (var i = 0; i < params.length; i++) {
		message += " "+params[i];
	}
	message += ">>";
	displayMessage(message);
};


// Internal.
//
// Creates an element that holds an error message
// 
config.macros.forEachTiddler.createErrorElement = function(place, exception) {
	var message = (exception.description) ? exception.description : exception.toString();
	return createTiddlyElement(place,"span",null,"forEachTiddlerError","<<forEachTiddler ...>>: "+message);
};

// Internal.
//
// @param place [may be null]
//
config.macros.forEachTiddler.handleError = function(place, exception) {
	if (place) {
		this.createErrorElement(place, exception);
	} else {
		throw exception;
	}
};

// Internal.
//
// Encodes the given string.
//
// Replaces 
//	 "$))" to ">>"
//	 "$)" to ">"
//
config.macros.forEachTiddler.paramEncode = function(s) {
	var reGTGT = new RegExp("\\$\\)\\)","mg");
	var reGT = new RegExp("\\$\\)","mg");
	return s.replace(reGTGT, ">>").replace(reGT, ">");
};

// Internal.
//
// Returns the given original path (that is a file path, starting with "file:")
// as a path to a local file, in the systems native file format.
//
// Location information in the originalPath (i.e. the "#" and stuff following)
// is stripped.
// 
config.macros.forEachTiddler.getLocalPath = function(originalPath) {
	// Remove any location part of the URL
	var hashPos = originalPath.indexOf("#");
	if(hashPos != -1)
		originalPath = originalPath.substr(0,hashPos);
	// Convert to a native file format assuming
	// "file:///x:/path/path/path..." - pc local file --> "x:\path\path\path..."
	// "file://///server/share/path/path/path..." - FireFox pc network file --> "\\server\share\path\path\path..."
	// "file:///path/path/path..." - mac/unix local file --> "/path/path/path..."
	// "file://server/share/path/path/path..." - pc network file --> "\\server\share\path\path\path..."
	var localPath;
	if(originalPath.charAt(9) == ":") // pc local file
		localPath = unescape(originalPath.substr(8)).replace(new RegExp("/","g"),"\\");
	else if(originalPath.indexOf("file://///") === 0) // FireFox pc network file
		localPath = "\\\\" + unescape(originalPath.substr(10)).replace(new RegExp("/","g"),"\\");
	else if(originalPath.indexOf("file:///") === 0) // mac/unix local file
		localPath = unescape(originalPath.substr(7));
	else if(originalPath.indexOf("file:/") === 0) // mac/unix local file
		localPath = unescape(originalPath.substr(5));
	else // pc network file
		localPath = "\\\\" + unescape(originalPath.substr(7)).replace(new RegExp("/","g"),"\\");	
	return localPath;
};

// ---------------------------------------------------------------------------
// Stylesheet Extensions (may be overridden by local StyleSheet)
// ---------------------------------------------------------------------------
//
setStylesheet(
	".forEachTiddlerError{color: #ffffff;background-color: #880000;}",
	"forEachTiddler");

//============================================================================
// End of forEachTiddler Macro
//============================================================================


//============================================================================
// String.startsWith Function
//============================================================================
//
// Returns true if the string starts with the given prefix, false otherwise.
//
version.extensions["String.startsWith"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
String.prototype.startsWith = function(prefix) {
	var n =  prefix.length;
	return (this.length >= n) && (this.slice(0, n) == prefix);
};



//============================================================================
// String.endsWith Function
//============================================================================
//
// Returns true if the string ends with the given suffix, false otherwise.
//
version.extensions["String.endsWith"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
String.prototype.endsWith = function(suffix) {
	var n = suffix.length;
	return (this.length >= n) && (this.right(n) == suffix);
};


//============================================================================
// String.contains Function
//============================================================================
//
// Returns true when the string contains the given substring, false otherwise.
//
version.extensions["String.contains"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
String.prototype.contains = function(substring) {
	return this.indexOf(substring) >= 0;
};

//============================================================================
// Array.indexOf Function
//============================================================================
//
// Returns the index of the first occurance of the given item in the array or 
// -1 when no such item exists.
//
// @param item [may be null]
//
version.extensions["Array.indexOf"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.indexOf = function(item) {
	for (var i = 0; i < this.length; i++) {
		if (this[i] == item) {
			return i;
		}
	}
	return -1;
};

//============================================================================
// Array.contains Function
//============================================================================
//
// Returns true when the array contains the given item, otherwise false. 
//
// @param item [may be null]
//
version.extensions["Array.contains"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.contains = function(item) {
	return (this.indexOf(item) >= 0);
};

//============================================================================
// Array.containsAny Function
//============================================================================
//
// Returns true when the array contains at least one of the elements 
// of the item. Otherwise (or when items contains no elements) false is returned.
//
version.extensions["Array.containsAny"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.containsAny = function(items) {
	for(var i = 0; i < items.length; i++) {
		if (this.contains(items[i])) {
			return true;
		}
	}
	return false;
};


//============================================================================
// Array.containsAll Function
//============================================================================
//
// Returns true when the array contains all the items, otherwise false.
// 
// When items is null false is returned (even if the array contains a null).
//
// @param items [may be null] 
//
version.extensions["Array.containsAll"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.containsAll = function(items) {
	for(var i = 0; i < items.length; i++) {
		if (!this.contains(items[i])) {
			return false;
		}
	}
	return true;
};


} // of "install only once"

// Used Globals (for JSLint) ==============
// ... DOM
/*global 	document */
// ... TiddlyWiki Core
/*global 	convertUnicodeToUTF8, createTiddlyElement, createTiddlyLink, 
			displayMessage, endSaveArea, hasClass, loadFile, saveFile, 
			startSaveArea, store, wikify */
//}}}


/***
!Licence and Copyright
Copyright (c) abego Software ~GmbH, 2005 ([[www.abego-software.de|http://www.abego-software.de]])

Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.

Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or other
materials provided with the distribution.

Neither the name of abego Software nor the names of its contributors may be
used to endorse or promote products derived from this software without specific
prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.
***/

Due to the high energy backsplash of the ~FGMP-14, it can only be fired in full [[Battledress]]. Firing it inside a building is also unwise!

!!~FGMP-14
''Effect:'' EB 16d6, Penetrating, One Hex Nonselective
''Shots:'' 28 END from Power Pack
''Combat Modifiers:'' +2 OCV, +3 ~RMod
''STR Minimum:'' 18
''Range:'' 795”
''Mass:'' 13kg
''Denarii:'' 86,400
''Description:'' The ~FGMP-14 (Fusion Gun Man Portable, ~TL 14) uses a backpack power pack. 
''~FGMP-14:'' //(Total: 159 Active Cost, 32 Real Cost) EB 16d6, Area Of Effect Nonselective (One Hex; +¼), Penetrating (+½) (140 Active Points); STR Minimum 18 (STR Min. Cannot Add/Subtract Damage; -1 ½), OAF (‑1), Required Hands ~Two-Handed (½), Requires Battle Dress (½), Extra Time (Full Phase, -½), Real Weapon (¼), Reduced By Range (¼) (Real Cost: 25) plus +2 with Ranged Combat (10 Active Points); OAF (‑1), Required Hands ~Two-Handed (½), Real Weapon (¼) (Real Cost: 4) plus Penalty Skill Levels: +3 vs. Range Modifier with All Attacks (9 Active Points); OAF (-1), Required Hands ~Two-Handed (½), Real Weapon (¼) (Real Cost: 3). Total Cost: 32 Points.//
----
<<gradient vert #ffffff #ffdddd #ff8888>>
Just as in our world today, in the futuristic world of Aldeborahnn! battles are often more a high-tech, high stress game of cat and mouse than they are standing toe-to-toe with an opponent, punching him or her in the nose. And one of the key tools in the arsenal of both sides is the densitometer. And the most difficult of the three types of densitometer to understand is the passive densitometer, or GRANAR, which stands for ~GRAvimetric ~NAvigation and Ranging.

If you think of densitometers like sonar, it might make them easier to understand -- for in truth they are very similar. Just as oil explorers can detonate charges beneath the surface of the ocean and, by reading the sound wave echoes get a very clear 3D picture of what lays miles beneath the earth, so too can a active high-penetration densitometer -- but //without// the need to set off charges. And just as a powerful active sonar can penetrate as much as a quarter of a mile into the earth, so too can a low-penetration densitometer, but without the need for the deadly powerful pulse. And just as a passive sonar array can detect a whale ten miles away, so too can the passive densitometer or granar, but it detects the whale's mass, not the sound disturbances it makes in the water.

But of the three types of densitometer, only granar works from within a warp field. Once in warp the ship's only remaning working sensor is its granar. And since granar is a passive sensor, it quite naturally gets a much bigger workout than the high-pen and low-pen active densitometers. That makes understanding how it "sees" and what it "sees" critical -- not only so you can "sling the lingo" but so that you can make intelligent tactical decisions for your character in the game.

!!The Passive Array
[<img[Passive Densitometer Array|http://rpg-fusion.com/files/ALDE/Grav_Array.png]] At the bow of every ship is an array of gravimetric sensors, each designed to "see" the gravity field of space in a cone extending outward from the bow of the ship, thus allowing the the passive array to provide the operator a 3D bearing to every gravity well within range of the array.  Notice that it provides a bearing, //not// a range. It also provides some data on the kind of gravitic signal its receiving, allowing a savvy operator to determine quite a bit of information about the signal(s) received. But for all that data, there are only two ways to determine the distance to the signal source: Either by mathematical calculation from the relative bearing changes, or signal to "noise" ratios based on assumed baselines about the target. As we shall see, both methods take time. And //time// is something a wily pilot can often deny the savvy operator.

[>img[The waterfall display|http://rpg-fusion.com/files/ALDE/Waterfall_Array.png]] At right is the main data display produced by the granar. It's called "the waterfall display". When a ship is in warp, this is the display most captains prefer to see on their canopy displays, rather than the sickening "crawling crayons" of normal space, or "the black screen of hell" if they turn off the ship's main display screen. Most captains prefer to see it because it's not a particularly hard dataset to read, and it gives the bridge crew something to look at for the weeks (or months) it takes to travel from point to point. Practically, after gaining even a minimal amount of skill, the "big" waterfall display shows the passage of the world around the ship as it travels through space.

In the graphic you can see that the oldest data scrolls automatically to the bottom of the screen. The newest information appears at the top. Time is the measure by which the line is gaged; the time scale appears on most displays at the left and right sides; bearing to target at the top. The picture at left the screen shows only a 2D display. Most modern ships have a full 3D display where each target line is color coded and rotated vertically to the appropriate axis, showing each target's bearing relative to the ship not only front to back, but top to bottom as well, and changes in signal source direction relative to the ship are also rotated in 3D space on the display as the ship's bearing to each target line changes.

At its simplest, it is this data that is used to determine the distance to each target line. Notice in the graphic how the target line forms a bow over time as the relative bearings change. The computer is able to determine each target's change in bearing as the signal strength increases and and weakens on the individual sensors in the nose cone. Given known data: The ship's heading and velocity, the rate of change of the target gravity well from fixed point in time to fixed point in time, simple high school trigonometry can be used to calculate the target's range. And that is exactly what the computer does -- though in practice the operator has usually decided he or she has enough data to compute a range long before the computer feels certain. In fact, the ability to "beat the computer" to a solution on a target is a nearly universal point of honor amongst granar operators. 

Now, let's complicate things.
[<img[The mini-waterfall display|http://rpg-fusion.com/files/ALDE/Mini_Waterfall.png]]The main display, which is usually the //only// portion of the waterfall projected onto "the big screen" of the canopy or main display while in warp, only tells a portion of the story. Most experts at deciphering granar data agree that, while it definitely shows important data, in the grand scheme of things, it's the least important. The juicy bits are displayed on the narrow band //grams// display, which shows not only a much reduced version of the main waterfall, but all sorts of particulars about the nature of each gravity well displayed on the main display. 

It takes a trained eye to make any sense of the //grams//; pilots without any granar training usually order the bridge crew to delete it from the canopy display. Pilots who've "worked their way up the seats" often order just the opposite, being almost as capable of reading the //grams// as their co-pilots or granar operators. 

The //grams// shows the particulars of each detected signal. A skilled operator can not only tell a warp signature from that of a small moon, but might even be able to distinguish one class of ship (or at least manufacturer of warp generators) from another. And if an operator knows the kind of warp generators, they can often deduce a range to target based on the strength of the signal being received. Not only that, but they might also be able to detect modifications to a warp field generator, and so get an idea about what that warp generator is capable of -- or not capable of, as the case may be.

The computers on most ships are equipped with at least some AI capability that will also attempt to read the //grams//. But most experienced pilots know better than to trust it for anything more than a confirming opinion -- especially older units. An experienced granar operator uses instinct as much hard data to come to come to conclusions about targets, a capability beyond the reach of simple AI.

[<img[Warp Detection Modifiers|http://rpg-fusion.com/files/ALDE/Warp-Modifiers.png]]In HERO rules terms, a ship in warp is easier to detect than a ship not in warp. At left is a table that overlays the standard HERO range chart with warp factors and detection modifiers. What it shows is that, the higher the warp factor, and/or the closer the sensor, the easier a ship is to detect. A ship 4" (+0) away traveling at warp 6 (+2)  would be at a +2 for detection by the granar operator. A ship 6" (-2) away traveling at warp 8 (+4) would be at a +2 for detection. A ship //not// in warp (-4) and 4" (+0)  away would be at -4. Keep in mind that there are other modifiers that will adjust the chance of detection up and down: The skill of the sensor operator and any external factors such as large nearby gravity wells that may assist in masking the smaller object are but two.

!!The Baffles
Notice that above I said that the granar's sensor array was in the //bow// of the ship. A critically important piece of data because it exposes every granar's weakness: It cannot see behind itself! And the lower the Tech Level of the granar, the greater the blind spot -- affectionately referred to by humans as "the baffles". 

On lower Tech Level ships "the baffles" measure about a 60&deg; radius from dead astern ( 180&deg; from the bows). On the highest Tech Level ships the baffles measure only about 30&deg; radius. The size of the baffle dead zone on the PC's ship has yet to be determined.

The practical effect of "the baffles" is that one ship can sneak up behind another without the other knowing it's there. To address this problem captains sometimes "jog" their ships, opening their baffle area up to scrutiny by their sensors. But unless they "go active" there's only so much they can detect if the trailing ship is running under EMM  (~ElectroMagnetic Masking) and shuts down its sublight drive when it detects the lead ship's jog. So it's not uncommon for a jogging ship to circle right around a clever "tail" and never detect it.

As with so much in modern warfare, it's a game of cat and mouse; the cleverer side usually ends up winning.
The ultimate development of the slug thrower, the gauss weapon generates an electromagnetic field along the length of the barrel which accelerates a needle like "bullet" to high velocities. The round itself consists of a dense armor-piercing core surrounded by a softer metal covering, ending in a hollow point, giving the round excellent stopping power and good armor penetration.

Like the modern rifle or pistol, there are many manufacturers of Gauss weapons. Most fit into the profiles below:

!!Gauss Pistol
''Effect:'' RKA 2 ½d6, ~Armor-Piercing, +1 STUN
''Shots:'' 15
''Combat Modifiers:'' +2 OCV, +1 ~RMod
''STR Minimum:'' 10
''Range:'' 415”
''Mass:'' .82kg
''Denarii:'' 600
''Ammo Cost:'' 1.3 Denarii
''4mm Gauss Pistol:'' //(Total: 83 Active Cost, 26 Real Cost) Killing Attack - Ranged 2 ½d6, 15 Charges (+0), +1 STUN Multiplier (+¼), Armor Piercing x1 (+½) (70 Active Points); OAF (‑1), STR Minimum 10 (STR Min. Cannot Add/Subtract Damage; -1), Real Weapon (¼), Beam (¼) (Real Cost: 20) plus +2 OCV with Ranged Combat (10 Active Points); OAF (‑1) (Real Cost: 5) plus +1 vs. Range (3 Active Points); OAF (-1) (Real Cost: 1)//

!!Gauss Rifle
''Effect:'' RKA 3 ½d6, ~Armor-Piercing, +1 STUN Mult
''Shots:'' 50
''Combat Modifiers:'' +2 OCV, +1 ~RMod
''STR Minimum:'' 13
''Range:'' 820”
''Mass:'' 4.3 kg
''Denarii:'' 1,500
''Ammo Cost:'' 1 Denareas
''Description:'' Gauss rifles are also designed to fire RAM grenades.
''4mm Gauss Rifle:'' //(Total: 164 Active Cost, 44 Real Cost) Killing Attack - Ranged 3 ½d6, +1 STUN Multiplier (+¼), 50 Charges (+½), Armor Piercing x1 (+½), Autofire (5 shots; +½) (151 Active Points); OAF (-1) (STR Minimum 13 (STR Min. Cannot Add/Subtract Damage; -1), Required Hands ~Two-Handed (½), Real Weapon (¼), Beam (¼) (Real Cost: 38) plus +2 OCV with Ranged Combat (10 Active Points); OAF (‑1) (Real Cost: 5) plus +1 vs. Range (3 Active Points); OAF ((Real Cost: 1)//
----
! Detection Gear
<<slider abouthndhlddensitometer [[Handheld Densitometer]][[The Handheld Densitometer]]>>
<<slider aboutneuralscanner [[Neural Activity Sensor]][[Neural Activity Scanner]]>>
<<slider aboutimageconverterbinoculars [[Image Converter Binoculars]][[Image Converter Binoculars]]>>
<<slider aboutprisfieldglasses [["PRIS" Field Glasses]][["PRIS" Field Glasses]]>>
<<slider aboutbioscanner [[Bio-Scanner]][[Bio-Scanner]]>>

! Navigation 
<<slider aboutgyrocompass [[Gyrocompass]][[Gyrocompass]]>>
<<slider aboutmultichronometer [[Multichronometer]][[Multichronometer]]>>

! Communications
<<slider aboutLanguageTranslator [[Language Translator]][[Language Translator]]>>
<<slider aboutHandheldCommunicator [[Handheld Communicator]][[Handheld Communicator]]>>
<<slider aboutCommdots [[Commdots]][[Commdots]]>>
<<slider aboutRemoteEarpiece [[Remote Earpiece]][[Remote Earpiece]]>>
<<slider aboutLaserComRelay [[Lasercom Relay]][[Lasercom Relay]]>>

! Miscellaneous 
<<slider aboutfloater [[Floater]][[Floater]]>>
<<slider aboutDataDisplyHeadset [[Data/Display Headset]][[Data/Display Headset]]>>

! Surival Gear
<<slider aboutVacSuit [[VAC Suit]][[VAC Suit]]>>
<<slider aboutPLSS [[PLSS]][[PLSS]]>>
<<slider aboutGill [[Artificial Gill]][[Artificial Gill]]>>
<<slider aboutRescueBall [[Rescue Ball]][[Rescue Ball]]>>

! Personal Weapons & Armor
It would be impossible (time wise) for me to list all the available weapons here. So I've listed //only// the ~Sci-Fi weapons, and then only ~TL-12 version, accept where otherwise stated for reasons also either obvious or explained. 

It should also be noted that not //all// the weapons and armor here may be available to the ~PCs -- at least not at first. Higher TL weapons will be harder to come by. Weapons ~TL-14 or higher are //probably// the purview of the Imperial military, and so would only be familiar to the ~PCs from prior military experience, or because their organization got a hold of them on the black market. (The exception would be the [[Athenians]], who have back channel access to modern Imperial military equipment. The [[Empire]] knows nothing about it, of course.)

!!Weapons
<<slider aboutGAUSS [[Gauss Weapons]][[Gauss Weapons]]>>
<<slider aboutLaserPistol [[Laser Pistol]][[Laser Pistol]]>>
<<slider aboutLaserCarbine [[Laser Carbine]][[Laser Carbine]]>>
<<slider aboutLaserRifle [[Laser Rifle]][[Laser Rifle]]>>
<<slider aboutLaserAssaultRifles [[Laser Assault Rifles]][[Laser Assault Rifles]]>>
!!!Shoulder Fired
<<slider aboutPlasmaBazooka [[Plasma Bazooka]][[Plasma Bazooka]]>>
<<slider aboutPlasmaGun [[Plasma Gun]][[Plasma Gun]]>>
<<slider aboutFusionGun [[Fusion Gun]][[Fusion Gun]]>>
!!Armor
Those shown here are only the advanced ~Sci-Fi armors. (Everybody knows what chainmail or a flak vest is.)
<<slider aboutRCES [[Combat Environmental Suit]][[Combat Environmental Suit]]>>
<<slider aboutCombatArmor [[Combat Armor]][[Combat Armor]]>>
<<slider aboutBattleDress [[Battledress]][[Battledress]]>>

! Medical Equipment
<<slider aboutAutoMed [[Automed]][[Automed]]>>
<<slider aboutmedscanner [[Med Scanner]][[Med Scanner]]>>
<<slider aboutmedscannercomputer [[Med Scanner, computer]][[Med Scanner, Computer]]>>
!!Treatments
<<slider aboutMedicines [[Medicines]][[Medicines]]>>
<<slider aboutHealing [[Healing Drugs]][[Healing Drugs]]>>
<<slider aboutEnhancement [[Enhancement Drugs]][[Enhancement Drugs]]>>
/***
|Name|GotoPlugin|
|Source|http://www.TiddlyTools.com/#GotoPlugin|
|Documentation|http://www.TiddlyTools.com/#GotoPluginInfo|
|Version|1.9.2|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|view any tiddler by entering it's title - displays list of possible matches|
''View a tiddler by typing its title and pressing //enter//.''  As you type, a list of possible matches is displayed.  You can scroll-and-click (or use arrows+enter) to select/view a tiddler, or press escape to close the listbox to resume typing.  When the listbox is not displayed, pressing //escape// clears the current input.
!!!Documentation
>see [[GotoPluginInfo]]
!!!Configuration
<<<
*Match titles only after {{twochar{<<option txtIncrementalSearchMin>>}}} or more characters are entered.<br>Use down-arrow to start matching with shorter input.  //Note: This option value is also set/used by [[SearchOptionsPlugin]]//.
*To set the maximum height of the listbox, you can create a tiddler tagged with <<tag systemConfig>>, containing:
//{{{
config.macros.gotoTiddler.listMaxSize=10;  // change this number
//}}}
<<<
!!!Revisions
<<<
2009.05.22 [1.9.2] use reverseLookup() for IncludePlugin
|please see [[GotoPluginInfo]] for additional revision details|
2006.05.05 [0.0.0] started
<<<
!!!Code
***/
//{{{
version.extensions.GotoPlugin= {major: 1, minor: 9, revision: 2, date: new Date(2009,5,22)};

// automatically tweak shadow SideBarOptions to add <<gotoTiddler>> macro above <<search>>
config.shadowTiddlers.SideBarOptions=config.shadowTiddlers.SideBarOptions.replace(/<<search>>/,"{{button{goto}}}\n<<gotoTiddler>><<search>>");

if (config.options.txtIncrementalSearchMin===undefined) config.options.txtIncrementalSearchMin=3;

config.macros.gotoTiddler= { 
	listMaxSize: 10,
	listHeading: 'Found %0 matching title%1...',
	searchItem: "Search for '%0'...",
	handler:
	function(place,macroName,params,wikifier,paramString,tiddler) {
		var quiet	=params.contains("quiet");
		var showlist	=params.contains("showlist");
		var search	=params.contains("search");
		params = paramString.parseParams("anon",null,true,false,false);
		var instyle	=getParam(params,"inputstyle","");
		var liststyle	=getParam(params,"liststyle","");
		var filter	=getParam(params,"filter","");
		var html=this.html;
		var keyevent=window.event?"onkeydown":"onkeypress"; // IE event fixup for ESC handling
		html=html.replace(/%keyevent%/g,keyevent);
		html=html.replace(/%search%/g,search);
		html=html.replace(/%quiet%/g,quiet);
		html=html.replace(/%showlist%/g,showlist);
		html=html.replace(/%display%/g,showlist?'block':'none');
		html=html.replace(/%position%/g,showlist?'static':'absolute');
		html=html.replace(/%instyle%/g,instyle);
		html=html.replace(/%liststyle%/g,liststyle);
		html=html.replace(/%filter%/g,filter);
		if (config.browser.isIE) html=this.IEtableFixup.format([html]);
		var span=createTiddlyElement(place,'span');
		span.innerHTML=html; var form=span.getElementsByTagName("form")[0];
		if (showlist) this.fillList(form.list,'',filter,search,0);
	},
	html:
	'<form onsubmit="return false" style="display:inline;margin:0;padding:0">\
		<input name=gotoTiddler type=text autocomplete="off" accesskey="G" style="%instyle%"\
			title="Enter title text... ENTER=goto, SHIFT-ENTER=search for text, DOWN=select from list"\
			onfocus="this.select(); this.setAttribute(\'accesskey\',\'G\');"\
			%keyevent%="return config.macros.gotoTiddler.inputEscKeyHandler(event,this,this.form.list,%search%,%showlist%);"\
			onkeyup="return config.macros.gotoTiddler.inputKeyHandler(event,this,%quiet%,%search%,%showlist%);">\
		<select name=list style="display:%display%;position:%position%;%liststyle%"\
			onchange="if (!this.selectedIndex) this.selectedIndex=1;"\
			onblur="this.style.display=%showlist%?\'block\':\'none\';"\
			%keyevent%="return config.macros.gotoTiddler.selectKeyHandler(event,this,this.form.gotoTiddler,%showlist%);"\
			onclick="return config.macros.gotoTiddler.processItem(this.value,this.form.gotoTiddler,this,%showlist%);">\
		</select><input name="filter" type="hidden" value="%filter%">\
	</form>',
	IEtableFixup:
	"<table style='width:100%;display:inline;padding:0;margin:0;border:0;'>\
		<tr style='padding:0;margin:0;border:0;'><td style='padding:0;margin:0;border:0;'>\
		%0</td></tr></table>",
	getItems:
	function(list,val,filter) {
		if (!list.cache || !list.cache.length || val.length<=config.options.txtIncrementalSearchMin) {
			// starting new search, fetch and cache list of tiddlers/shadows/tags
			list.cache=new Array();
			if (filter.length) {
				var fn=store.getMatchingTiddlers||store.getTaggedTiddlers;
				var tiddlers=store.sortTiddlers(fn.apply(store,[filter]),'title');
			} else 
				var tiddlers=store.reverseLookup('tags','excludeLists');
			for(var t=0; t<tiddlers.length; t++) list.cache.push(tiddlers[t].title);
			if (!filter.length) {
				for (var t in config.shadowTiddlers) list.cache.pushUnique(t);
				var tags=store.getTags();
				for(var t=0; t<tags.length; t++) list.cache.pushUnique(tags[t][0]);
			}
		}
		var found = [];
		var match=val.toLowerCase();
		for(var i=0; i<list.cache.length; i++)
			if (list.cache[i].toLowerCase().indexOf(match)!=-1) found.push(list.cache[i]);
		return found;
	},
	getItemSuffix:
	function(t) {
		if (store.tiddlerExists(t)) return "";  // tiddler
		if (store.isShadowTiddler(t)) return " (shadow)"; // shadow
		return " (tag)"; // tag 
	},
	fillList:
	function(list,val,filter,search,key) {
		if (list.style.display=="none") return; // not visible... do nothing!
		var indent='\xa0\xa0\xa0';
		var found = this.getItems(list,val,filter); // find matching items...
		found.sort(); // alpha by title
		while (list.length > 0) list.options[0]=null; // clear list
		var hdr=this.listHeading.format([found.length,found.length==1?"":"s"]);
		list.options[0]=new Option(hdr,"",false,false);
		for (var t=0; t<found.length; t++) list.options[list.length]=
			new Option(indent+found[t]+this.getItemSuffix(found[t]),found[t],false,false);
		if (search)
			list.options[list.length]=new Option(this.searchItem.format([val]),"*",false,false);
		list.size=(list.length<this.listMaxSize?list.length:this.listMaxSize); // resize list...
		list.selectedIndex=key==38?list.length-1:key==40?1:0;
	},
	keyProcessed:
	function(ev) { // utility function
		ev.cancelBubble=true; // IE4+
		try{event.keyCode=0;}catch(e){}; // IE5
		if (window.event) ev.returnValue=false; // IE6
		if (ev.preventDefault) ev.preventDefault(); // moz/opera/konqueror
		if (ev.stopPropagation) ev.stopPropagation(); // all
		return false;
	},
	inputEscKeyHandler:
	function(event,here,list,search,showlist) {
		if (event.keyCode==27) {
			if (showlist) { // clear input, reset list
				here.value=here.defaultValue;
				this.fillList(list,'',here.form.filter.value,search,0);
			}
			else if (list.style.display=="none") // clear input
				here.value=here.defaultValue;
			else list.style.display="none"; // hide list
			return this.keyProcessed(event);
		}
		return true; // key bubbles up
	},
	inputKeyHandler:
	function(event,here,quiet,search,showlist) {
		var key=event.keyCode;
		var list=here.form.list;
		var filter=here.form.filter;
		// non-printing chars bubble up, except for a few:
		if (key<48) switch(key) {
			// backspace=8, enter=13, space=32, up=38, down=40, delete=46
			case 8: case 13: case 32: case 38: case 40: case 46: break; default: return true;
		}
		// blank input... if down/enter... fall through (list all)... else, and hide or reset list
		if (!here.value.length && !(key==40 || key==13)) {
			if (showlist) this.fillList(here.form.list,'',here.form.filter.value,search,0);
			else list.style.display="none";
			return this.keyProcessed(event);
		}
		// hide list if quiet, or below input minimum (and not showlist)
		list.style.display=(!showlist&&(quiet||here.value.length<config.options.txtIncrementalSearchMin))?'none':'block';
		// non-blank input... enter=show/create tiddler, SHIFT-enter=search for text
		if (key==13 && here.value.length) return this.processItem(event.shiftKey?'*':here.value,here,list,showlist);
		// up or down key, or enter with blank input... shows and moves to list...
		if (key==38 || key==40 || key==13) { list.style.display="block"; list.focus(); }
		this.fillList(list,here.value,filter.value,search,key);
		return true; // key bubbles up
	},
	selectKeyHandler:
	function(event,list,editfield,showlist) {
		if (event.keyCode==27) // escape... hide list, move to edit field
			{ editfield.focus(); list.style.display=showlist?'block':'none'; return this.keyProcessed(event); }
		if (event.keyCode==13 && list.value.length) // enter... view selected item
			{ this.processItem(list.value,editfield,list,showlist); return this.keyProcessed(event); }
		return true; // key bubbles up
	},
	processItem:
	function(title,here,list,showlist) {
		if (!title.length) return;
		list.style.display=showlist?'block':'none';
		if (title=="*")	{ story.search(here.value); return false; } // do full-text search
		if (!showlist) here.value=title;
		story.displayTiddler(null,title); // show selected tiddler
		return false;
	}
}
//}}}
/***
|Name|GotoPluginInfo|
|Source|http://www.TiddlyTools.com/#GotoPlugin|
|Documentation|http://www.TiddlyTools.com/#GotoPluginInfo|
|Version|1.9.2|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|documentation|
|Description|Documentation for GotoPlugin|
''View a tiddler by typing its title and pressing //enter//.''  As you type, a list of possible matches is displayed.  You can scroll-and-click (or use arrows+enter) to select/view a tiddler, or press escape to close the listbox to resume typing.  When the listbox is not displayed, pressing //escape// clears the current input.
!!!!!Usage/Examples
<<<
syntax: {{{<<gotoTiddler quiet search inputstyle:... liststyle:... filter:...>>}}}
All parameters are optional.
* ''quiet'' (//keyword//)<br>list will not be automatically display as each character is typed.  Use //down// or //enter// to view the list.
* ''showlist'' (//keyword//)<br>list will always be displayed, inline, directly below the input field.
* ''search'' (//keyword//)<br>adds an extra 'command item' to the list that can be used to invoke a full-text search using the entered value.  This can be especially useful when no matching tiddler titles have been found.
* ''inputstyle:'' and ''liststyle:''<br>are CSS declarations that modify the default input and listbox styles, respectively.  Note: the CSS styles must be surrounded by ({{{"..."}}} or {{{'...'}}}) or ({{{[[...]]}}}) (e.g., {{{liststyle:"border:1px dotted blue;color:green;..."}}}.
* ''filter:''<br>is a single tag value (or a boolean tag expression if MatchTagsPlugin is installed), and is used to limit the search to only those tiddlers matching the indicated tag or tag expression (e.g., {{{<<gotoTiddler filter:"faq or help">>}}})
{{{<<gotoTiddler>>}}}
<<gotoTiddler>>
{{{<<gotoTiddler search>>}}}
<<gotoTiddler search>>
{{{<<gotoTiddler showlist filter:"pluginInfo" liststyle:"height:10em;width:auto;">>}}}
<<gotoTiddler showlist filter:"pluginInfo" liststyle:"height:10em;width:auto;">>
<<<
!!!!!Configuration
<<<
*Match titles only after {{twochar{<<option txtIncrementalSearchMin>>}}} or more characters are entered.<br>Use down-arrow to start matching with shorter input.  //Note: This option value is also set/used by [[SearchOptionsPlugin]]//.
*To set the maximum height of the listbox, you can create a tiddler tagged with <<tag systemConfig>>, containing:
//{{{
config.macros.gotoTiddler.listMaxSize=10;  // change this number
//}}}
<<<
!!!!!Revisions
<<<
2009.05.22 1.9.2 use reverseLookup() for IncludePlugin
2009.04.12 1.9.1 support multiple instances with different filters by using per-element tiddler cache instead of shared static cache
2009.04.05 1.9.0 added 'showlist' parameter for inline display with listbox always visible.
2009.03.23 1.8.0 added txtIncrementalSearchMin (default=3).  Avoids fetching long lists.  Use down arrow to force search with short input.
2008.12.15 1.7.1 up arrow from input field now moves to end of droplist (search for input).  Also, shift+enter cam now be used to quickly invoke search for text.
2008.10.16 1.7.0 in macro handler(), changed to use //named// params instead of positional params, and added optional "filter:" param for tag filtering.  Removed 'insert' handling (now provided by [[QuickEditPlugin]]).
2008.10.02 1.6.1 for IE, wrap controls in a table.  Corrects placement of listbox so it is below input field.
2008.10.02 1.6.0 added 'search' param for optional "Search for:" item that invokes full text search (especially useful when no title matches are found)
2008.02.17 1.5.0 ENTER key always displays tiddler based on current input regardless of whether input matches any existing tiddler
2007.10.31 1.4.3 removed extra trailing comma on last property of config.macros.gotoTiddler object.  This fixes an error under InternetExplorer that was introduced 6 days ago... sure, I should have found it sooner, but... WHY DON'T PEOPLE TELL ME WHEN THINGS ARE BROKEN!!!!
2007.10.25 1.4.2 added onclick handler for input field, so that clicking in field hides the listbox.
2007.10.25 1.4.1 re-wrote getItems() to cache list of tiddlers/shadows/tags and use case-folded simple text match instead of regular expression to find matching tiddlers.  This *vastly* reduces processing overhead between keystrokes, especially for documents with many (>1000) tiddlers.  Also, removed local definition of replaceSelection(), now supported directly by the TW2.2+ core, as well as via backward-compatible plugin
2007.04.25 1.4.0 renamed macro from "goto" to "gotoTiddler".  This was necessary to avoid a fatal syntax error in Opera (and other browsers) that require strict adherence to ECMAScript 1.5 standards which defines the identifier "goto" as "reserved for FUTURE USE"... *sigh*
2007.04.21 1.3.2 in html definition, removed DIV around droplist (see 1.2.6 below).  It created more layout problems then it solved. :-(
2007.04.01 1.3.1 in processItem(), ensure that correct textarea field is found by checking for edit=="text" attribute
2007.03.30 1.3.0 tweak SideBarOptions shadow to automatically add {{{<<goto>>}}} when using default sidebar content
2007.03.30 1.2.6 in html definition, added DIV around droplist to fix IE problem where list appears next to input field instead of below it.  
2007.03.28 1.2.5 in processItem(), set focus to text area before setting selection (needed for IE to get correct selection 'range')
2007.03.28 1.2.4 added prompt for 'pretty text' when inserting a link into tiddler content
2007.03.28 1.2.3 added local copy of core replaceSelection() and modified for different replace logic
2007.03.27 1.2.2 in processItem(), use story.getTiddlerField() to retrieve textarea control
2007.03.26 1.2.1 in html, use either 'onkeydown' (IE) or 'onkeypress' (Moz) event to process <esc> key sooner, to prevent <esc> from 'bubbling up' to the tiddler (which will close the current editor).
2007.03.26 1.2.0 added support for optional "insert" keyword param.
2006.05.10 1.1.2 when filling listbox, set selection to 'heading' item... auto-select first tiddler title when down/enter moves focus into listbox
2006.05.08 1.1.1 added accesskey ("G") to input field html (also set when field gets focus).  Also, inputKeyHandler() skips non-printing/non-editing keys. 
2006.05.08 1.1.0 added heading to listbox for better feedback (also avoids problems with 1-line droplist)
2006.05.07 1.0.0 list matches against tiddlers/shadows/tags.  input field auto-completion... 1st enter=complete matching input (or show list)... 2nd enter=view tiddler.  "quiet" param controls when listbox appears.  handling for enter (13), escape(27), and down(40) keys.   Change 'ondblclick' to 'onclick' to avoid unintended triggering of tiddler editor).  Shadow titles inserted into list instead of appended to the end.
2006.05.05 0.0.0 started
<<<
[<img[http://rpg-fusion.com/files/ALDE/Gyrocompass.jpg]] ''Description:'' A necessary improvement in navigational equipment for other worlds is self-precessing  gyrocompass. 

The gyrocompass does not need a magnetic field to operate in. It sets itself automatically. When a landing party stops on the surface of a world, the gyrocompass senses the rotational motion and sets itself.

They gyrocompass can be linked with a hand computer or map box, thereby providing accurate information as to one's current location on the surface of a world.

''Cost:'' 1,500 Denarii
[<img[http://rpg-fusion.com/files/ALDE/Handheld_Communicator.jpg]] ''Description:'' The Handheld Communicator transmits both voice and a 2D image up to a range of 500km (Regional). This range can be extended by using a laser communicator or a vehicle radio as a repeater.

The communicator has a built-in microphone and video camera for input, and a small speaker and display for output. The video camera can be turned off if desired. Also, Commdots can be used to speak and listen while the communicator remains clipped to a belt or stuffed into a pocket, purse, etc.

The communicator can be programmed to select a group of frequencies for current use; one of these preprogrammed frequencies can then be quickly selected. The communicator can simulcast (transmit and receive at the same time).

When used with Commdots, the communicator can be used to tune the Commdot frequency to itself; it will also automatically multiplex with a Commdot for any of its active frequencies.

''Handheld Communicator:'' //High Range Radio Perception (Radio Group) (12 Active Points); OAF (‑1), Limited Power Power loses about a fourth of its effectiveness (500 km Maximum Range; -¼). Total Cost: 5 points.//

''Cost:'' 1000 Denarii
''Weight:'' 0.8 kg
------
[<img[http://rpg-fusion.com/files/ALDE/Handheld_Densitometer.jpg]] ''Description:'' The handheld densitometer is an outgrowth of gravitic technology. Using an object's natural gravitational attraction, the remote densitometer can classify an object's density.

The resulting scan is a a three-dimensional map of the scanned object or region.

''Note:'' Larger versions of this are found aboard ships; the "waterfall display" used aboard ship is based on this technology.

''Handheld Densitometer-14:'' //Detect A Single Thing 14- (Unusual Group), 1 Continuing Charge lasting 1 Day (+0) (6 Active Points); OIF Bulky Fragile (‑1 ¼), Custom Modifier (Cannot Be Used In An Artificial Gravity Field; -½), Custom Modifier (Scan Penetration Of 1 Meter; -½), Concentration (½ DCV; -¼), Custom Modifier (Produces An Audible Hum When In Operation; -¼). Total Cost: 2 points.//

''Cost:'' 1,500 Denarii
''Weight:'' 1.0 kg
---
Much more common in the modern world of medicine, these new drugs and therapies can do amazing things. Here are but two examples:

!! Medical Slow Drug
Medical Slow Drug increases the body’s healing power by 30-fold (to 1 BODY per 4 hours), but lasts only 24 hours, so multiple doses are often required over several days. The subject of the slow drug remains unconscious while healing, and there are no side effects.

''TL:'' 10
''Cost:'' 225 Denarii
''Medical Slow Drug:'' //Healing 1 BODY, Reduced Endurance (0 END; +½), Persistent (+½) (20 Active Points); Extra Time (~Regeneration-Only) 4 Hours (Character May Take No Other Actions; -2 ¾), Self Only (‑½), Limited Power One Dose lasts 24 hours (¼). Total cost: 4 points.//

!!Smart Bandage
A box of 12 bandages with a healing chemical; each bandage can only be used once.

''TL:'' 9
''Cost:'' 100 Denarii
''Smart Bandage:'' //Healing BODY 2d6 (20 Active Points); OIF (Smart Bandage; -½), 12 Charges (¼). Total cost: 11 points.//
The Hermeticans are group  psionically gifted of human dissidents that settled the planet Hermetica (Lorel V) in 2298 ([[IGC |ImperialGalacticCalendar]] [25]57197) along with a collection of non-psionically gifted humans who believed that the development of this "next evolution of humanity" was so important that they agreed (eagerly) to perform the menial tasks and support the research and development of those few humans who had been born with the extraordinary gift.

Almost immediately after securing their existence on their newly settled world, the Hermeticans began systematically segregating their society into the haves (the psionically gifted) and the have nots (those not psionically gifted).

Today the Hermeticans call the the non-psionically gifted "controls" and those of Hermeticans of lesser psionic talent are usually assigned to the Bureau of Labor Management, whose job it is to manage the "controls". Little better than slaves themselves in the Hermetia's very (talent based) hierarchical system, these "~Psi-Betas" still live much better than those under their charge.

That said, thanks to some very crude conditioning (compared to that the [[Duranaki]] provide the [[Myri]]), maintenance of a very humane (if extremely basic) standard of living, and aggressive information management -- both from the inside and the outside (visitor control) -- the Controls rarely complain. Too, as every Control learns beginning at age 5, psionic ability is the future of humanity. And as if to reinforce that, the Hermeticans quickly remove any child that evidences the talent and begins to train them. On Hermetica, psi talents are an immediate ticket to (perceived) paradise.

The truth is, while the human psi abilities are truly extraordinary for the human race, they measure up poorly when compared to the average [[Eldyri]]. And though Jan Larouk never manages to answer the question directly, the peaceful [[Eldyri]] have given the arrogant Hermeticans more than a few pointed lessons in psi talent over the years. Rumor has it that their ambassadors are lobbying the Imperial Senate on behalf of the Controls, and that they have given the famous Hermetican dissident [[Mary Felton]] asylum.

''Inside Hermetica''

Hermetican society is not only divided up into the haves and the have nots, it's also divided up amongst the haves based on their psionic ability. Psionic ability is graded as finely as the Hermeticans can do so into ranks that run from "Alpha" (lowest -- ball psionic) to Theta (very advanced/powerful¹). The psi-alphs and psi-betas are little more than slaves (or perhaps plebs) to the bulk of the population -- psi-gamma and psi-delta, while the psi-thetas and psi-epsilons make up the ruling class.

''Government:'' The //Thought Combine// is the ruling body of Hermetica. Made up only the most powerful elite of Hermetican society, these individuals are thought (and taught) that they have a special responsibility to their society. An indoctrination policy that has, with rare exceptions, worked very well. The //Thought Combine// is very similar to the old Soviet Union Pullet Bureau: "A group of old men sitting in a dingy room deciding policy for a hundred million people," as Tom Clancy once put it. The only difference is, on Hermetica it's not "a group of old men" -- there are as likely to be old women there as men -- and it's not "a dingy room". Though it might as well be.

 Law enforcement as the term is normally applied, does not exist on Hermetica. Rather, The Department of Labor Management makes sure the Controls do their job and meet the established targets, and the Office of Behavioral Studies (OBS) polices the ranks of the gifted. Dealing with offworlders and Interstellar relations (especially with the Empire) falls to the Diplomatic Corps -- unless an offworlder has psi talents. Then the OBS steps in to make sure the offworlder is kept "within bounds" while on Hermetica.

''FATE:''

* "Hermetican" Aspect Required.
* "Psi powers" kill required; abilities defined by back story.
* Ladder Max is GOOD in Psi skills

Suggested Keys: 
* Intolerant (superiority complex)
* The Master
* The Pedagogue 

----------

''Culture/Appearance/Interbreeding''

In the City, Controls will be dressed much more plainly than the Hermeticans. However, on the whole, these are humans and so their cultural proclivities, appearance, and ability to interbreed with other humanoid races is no different than any other human.

{{indent{'''Average' Hermeticans Package Deal''
|!Cost|!Skill/Power/Disad|
|>|Points to Zero //versus// limitation in one or more of the following: |
||*TK<br>*Mind Link<br>*Mind Scan <br>*Telepathy<br>*Mind Control |
|-20|~PsycLim: Arrogant, superior attitude toward other races. (Common/Total) |
| 0 |''TOTAL'' package |

----
1. While Theta status is considered "top tier" for a Hermetican, it is only slightly below //average// for the [[Eldyri]].
Of the races, humans seem to be the galaxy's innovators. They managed to do in less than 5,000 (Standard) years what it took the [[Duranaki]] 10,000 (Standard) years to do! And while the [[Magellen]] might be the most advanced by far, they also rarely interact with anyone else, being content to simply watch.

Of all the races, it is the humans who have done the most with cybernetics, bionics, robotics, and genetic engineering. In an odd way, the same creative drive that nearly destroyed their home planet is, according to some accounts, what is threatening the stability of the [[Empire]]. The influences of the [[Medraas]] and the [[Athenians]] on Imperial stability are hard to over-state. The [[Empire]] lusted over what they saw as unflappable human zeal to innovate and explore. All the while never admitting that maybe, //just maybe,// the [[Duranaki]] are not quite so superior as they thought. 

Well, they got innovation. In spades. And, from their point of view, more proof of their own superiority.

The ultimate irony would be the collapse of the [[Empire]]. For just as happened on Earth a couple hundred years ago, the last hegemony would be gone, and there would be nobody to step into the gap. Then as now, humanity is divided against itself, unable to create a political power large enough to step into the gap.

!NonHuman Abilities

While prosthetics are well known and used by all advanced races throughout the Empire, only humans can (and will) spend points extending their abilities through the use of a cybernetic or bionic device.
<<gradient vert #ffffff #ffdddd #ff8888>>
As used here, does not necessarily mean //Homo sapian// (a uniquely Terran species of humanoid).  "Humanoid" means races that look basically human (upright stance with forward knee break, similiar numbers of fingers and toes, same general sexual anatomy, etc.) and that are, to a greater or lessor degree, capable of interbreeding. "Greater" meaning easily and without medical aid.  "Lessor" meaning not easily, but with medical aid. Never-the-less, whether the races reproduce easily or with assistance, they all share sufficiently common genes to produce children with at least one other race in the list. And the child of that union will probably be able to reproduce with nearly all.

Players of ~RoleMaster might recognize two of the races: The Duranaki and the Myri. That is their origin, and their home planet Durakaan is much like the home continent of the original campaign. Obviously there have been some adaptations for this campaign. The Vertans and Yezidi are from ~StarHero -- again with adaptation. The rest are original.
<<gradient vert #ffffff #ffdddd #ff8888>>
The Imperial Galactic Calendar (ImperialGlacticCalendar -- IGC) is nothing more than the astronomical "fractional Julian Day" calendar. Day 0 for the Astronomical Julian system has been set to Noon GMT, January 1, 4712 B.C.E. "Fractional" means that the portion of the date to the right of the decimal is the fraction of the day, which gets smaller the further to the right that you go. Thus, it is (theorically) possible to compute time under the Julian system down to hundreths or even thousandths of a second simply by continuing to add digits to the right of the decimal point.

For more information, and to compute your own IGC dates, you should visit [[this website|http://murison.alpheratz.net/calculators/JulianDate]]. It uses the same system I am using in the game.

If you choose to use another website and use their converter ''please be careful!'' There's more than one Julian Date system out there. Astronomers themselves use a "modified" Julian date system sometimes. They subtract 2,400,000.5 from the dates given in this game (and the dates produced by the link above) to produce a smaller, more manageable number. But by subtracting 0.5 they //also// shift the beginning of a day from noon to midnight, thereby matching the Gregorian calendar's midnight date change.

That won't work for this game. It will produce the wrong date/time sequence!

For simplicity's sake, (i.e. for uniformity) I have stuck with the "traditional", full length, Astronomical Julian System, even though the numbers are a bit longer. Among other things, that means "days" start at noon, not at midnight.

This is is somewhat offset by the tradition of dropping the first two digits of the sequence as is explained below.>>

Imperial Naval Intelligence Service. The [[Empire]]'s version of the CIA, DIA, ~InterPol, the KGB, and/or what have you.
Where [[INIS]] serves the intelligence functions, IPOL serves a law enforcement function not dissimilar to that of the American FBI. It's IPOL that's responsible for maintaining and processing the passport records of Imperial citizens (small "c" citizens) as they move about within the [[Empire]]; it's IPOL that's responsible for inter-jurisdictional investigations of criminals, and so on and so forth.

Usually, IPOL turns the results of its investigations over to the [[Thavan]]. But if a planet has a sufficiently advanced legal system that's recognized by Imperial Law, it might turn the case over to the planet's own authorities for prosecution.

Unlike the FBI, however, IPOL also works in reverse. In addition to serving as the Emperor's intersteller police force, IPOL also acts as a liason between local law enforcement (or the citizenry) and the Emperor by providing access to Imperial records,  protection of granted rights from rogue states, governments and so on, and the assurance of  a proper hearing of one's case in accordance with one's standing in the [[Empire]] -- regardless of the will of local law.

In some cases this may mean that a person's "standing" may have to be assumed if the world is not yet a subject of the [[Empire]]. IPOL has become quite adept at turning such cases into show trials that demonstrate how much better off the planet's inhabitants would be if they joined the [[Empire]] -- and it's not afraid to call in it's big brother, the Imperial Army, to protect a (would be) subject's rights!
The Interstellar Security and Intelligence Agency (ISIA, pronounced "Isa"), is a private, non-political agency that is well known to most interstellar governments -- including The Empire! In fact, ISIA is one of [[Emperor Trægen]]'s largest pain's in the ass and the Emperor is //constantly// accusing them of lies, deceits, and in general meddling in such a fashion as to bring his [[Empire]] down.

Not surprisingly, the ISIA denies such allegations. Perhaps more surprising is that pundits agree with the ISIA far more than they do the Emperor and his Imperial Naval Intelligence Service ([[INIS]]). As one pundit put it: "The [[INIS]] gets paid to service its own bureaucracy first, the [[Empire]] second, and the Emperor third. The ISIA has to produce results if it wants to make payroll. And those results must stand up over time. Therefore it is more reasonable to assume the results produced by the ISIA are factual than it is to assume the [[INIS]] has a burning need to tell the truth. Quite the reverse, in fact."

And it is true. ISIA's patrons include most [[PAC]] member planets, most mega-corporations (and a good many smaller corporations), and even some Imperial client states who buy alternatives to the [[INIS]]'s intelligence just to check the facts they're being fed by the Imperial Bureaucracy.
[<img[http://rpg-fusion.com/files/ALDE/Image_Convertor_Binoculars.jpg]] ''Description:'' Image Converter Binoculars are sensitive to IR, visible light, and UV bands. Magnification can  be up to 20X. Images set on high intensification cuts contrast dramatically, making the resulting images unclear. Automatic polarizers cut in even in the image is bright enough to blind.

The image converter can be connected to various display devices (communicator, visual display headset, map box) so that others can see the image. Also, the image can be transferred to other devices (hand held computer, map box) for further processing.

''Image Converter Binoculars:'' //(Total: 26 Active Cost, 11 Real Cost) IR Perception (Sight Group) (5 Active Points); OAF Fragile (‑1 ¼) (Real Cost: 2) plus UV Perception (Sight Group) (5 Active Points); OAF Fragile (¼) (Real Cost: 2) plus +4 versus Range Modifier for Sight Group (6 Active Points); OAF Fragile (¼) (Real Cost: 3) plus Sight Group Flash Defense (5 points) (5 Active Points); OAF Fragile (¼) (Real Cost: 2) plus Transmit with Sight Group (5 Active Points); OAF Fragile (¼) (Real Cost: 2). Total Cost: 26 points.//

''Cost:'' 3,500 Denarii
''Weight:'' 1.25 kg
----
Imperial Law is markedly different from the English Common Law system you are familiar with.

First, under Imperial Law (as under the laws of many EU countries), an accused is presumed //guilty// until proven innocent. That doesn't mean the accused doesn't have any rights, it simply means that under the Imperial system of law, it is up to the accused to prove his or her //innocence//, rather than the [[Empire]] to prove the accused is guilty of the stated offense.

What rights one has available to them under Imperial law, and therefore what rights and obligations the [[Empire]] has in return -- and indeed even who may accuse one of a crime -- are all based on one's //legal caste//, which should not be confused with one's //social caste.// That is, one's status in one's own society on one's on planet. The President of a Planet can be of a lesser lessor legal caste than their own chief of staff, for example, if the chief of staff is an Imperial Citizen but the President only a member of the Proletariat.

It happens, and in the [[Empire]], caste is everything. 

That said, it should also be stated that what is described herein is only the mere //basics// of Imperial Law. Despite the rather simplistic three tiered system described in this entry, matters of rights and obligations and legal standing often become horribly entangled when political connections, Imperial contracts, and standing within one or more Imperial bureaucracies are thrown into the mix.

The slave of a Consul is likely to see far better treatment by the legal system than the slave of a mere shop keeper, for example. And a member of the Proletariat who also happens to be an officer in the [[Legions|Imperial Legions]] will for certain see legal treatment equal or better to that of the average citizen, even though the law does not specifically grant it.

Unlike our system, which at least make the pretense of being governed by "the rule of law, the [[Empire]] is not so foolish. Much like the //reality// of our system, in the [[Empire]] power and connections are everything.

!!The Legal Casts And Their Rights
The [[Empire]] recognizes three legal castes.

@@CITIZEN@@  A citizen of The Empire is entitled to full protection under the law. If accused of a crime, a citizen is still considered guilty until proven innocent, but the citizen does have the right to a trial by a jury of their peers. 

An accused citizen may also request a formal hearing in which he may request release on bail. (It's usually granted, unless their are extenuating circumstances.) And should a [[Thavan]] kill a citizen in the line of duty, an investigation //must// be conducted and formal hearing held to ensure the Thav's actions were justified. 

It is a felony to abduct a citizen of the [[Empire]] and hold them against their will, and the [[Empire]] usually acts swiftly and brutally when a citizen is taken hostage by an alien power.

Finally, citizens have the right to vote in local and Tribunal elections, and may appeal to their Tribune if they feel they have been wronged in some way by the government. Local (planetary) governmental officials do not much care to be contacted by their Tribune's office for questioning.  They like it even less when the Tribune calls for a formal district tribunal! Note that vote of the Tribunal Assembly can over-turn even a ruling by the Prætor!

@@PROLETARIAT@@ Like a citizen, a proletariat is a free individual in The Empire. The peoples of Earth and most other planets fall under this cast. Little is normally done to attempt to change a conquered race's customs or traditions. All that is normally asked is that they abide by Imperial Law. For that compliance they are then also protected by that same law. 

But unlike a citizen, a proletariat is //not// entitled to a trial by jury. Rather, they must appeal to the local prætoriat for a hearing of their case. If a [[Thavan]] kills a proletariat in the line of duty, the family of the slain individual can request a hearing, but one is not mandated by law and is only likely to be granted if there were irregularities in the case. 

Proletarians are also subject to permanent seizure by licensed bondsmen. The practice is common among the [[Duranaki]], who get licenses to sell [[Myri]] slaves, and on some other worlds, but is a rarity on others (the three human planets of Earth, [[Midgard]], and [[New Home]]  being but a few). Interestingly, proletarians can themselves obtain a bondsmen license, and also can have slaves of their own. (Note: licenses are issued by Censor through their local offices.)

@@SLAVE@@ Slaves have virtually no rights under Imperial Law. They are property and may be used, abused, bought, sold, or whatever, at the whim of their owner -- or so says the law. 

More-over, just as the driver of a car is accountable for the car's actions, a slave owner can be held accountable for their slave's actions -- within limits. If a slave commits a murder, for example, the owner will likely be required to pay restitution, but the slave will be put to death. 

On the other hand, if it's proven that the owner of the slave ordered the slave to commit the murder, the owner will be tried on capital charges (based on caste) and the slave will most likely be held blameless. (You don't blame the gun for the murder, you blame the shooter.)
The Imperial Legions of Durakaan came into being long before the Empire was a space fairing race.  In the early days the Legions were made up entirely of [[Myri]] soldiers, commanded by Duranaki. Every Duranaki tribe had its own legion, and the tribes were constantly waring with one another over some real or perceived grievance or another.

As tribes grew into countries the Legions grew larger and became more institutionalized. As countries grew into nations they became a vast military complex that included not only the traditional legionnaire ground forces, but air forces and naval forces as well -- though everyone still thought of them simply as "the Legions". 

As the planet unified and extended it power into space, it was only natural that the venerable Legions project Imperial power into space. And so it remains to this day.

The Legions are probably the most visible and formidable power of the [[Empire]] -- and for good reason. While it is true that the Legions are the protectors, defenders, and projectors of Imperial power, it is also well known that the Legions are, without doubt, the largest branch of Imperial Government in the [[Empire]].

Within the "Imperial Legions" are the:

* Imperial Navy
** Imperial Naval Intelligence Service ([[INIS]])
* Imperial Marines
* Imperial Army -- the tradional "legionnaires", and one of the proudest branches of the Service. 
** Imperial Police Operations Liaison  ([[IPOL]])
* Imperial Air Forces
The Imperial Galactic Calendar is the date/time standard throughout not only the [[Empire]], but pretty much everywhere else in "known space" as well.

The Imperial Galactic Calendar simply started a run of days beginning at the founding of the [[Aureleon Imperium]], over 7,000 (Earth) years ago. (For those who really want to know, day 0 of the IGC occured in 4712 B.C.)

Appended to the day is a decimial that shows what fraction of the day. For example: 2449353.0 refers to 12 pm (noon), December 31, 1993 on Earth. The IGC starts the day at noon rather than midnight, so Earth's "New Year 1994" was 2449353.5 -- the same "day" on the IGC. Also note that the further to the right of the decimal place you move, the smaller the fractions of time become. 0.001 is equal to //about// 1^^1^^/~~3~~^^rd^^ minutes.

<<slider aboutIGC IGC [[For the curious]]>>

To help you get the hang of times and dates here are some examples:

|!IGC Date & Time|!Gregorian (Earth) Date|!Time of Day|
| 2449353.0010 | December 31, 1993 | 12:01 pm |
| 2449353.0020 | December 31, 1993 | 12:02 pm |
| 2449353.0025 | December 31, 1993 | 12:03 pm |
| 2449353.0030 | December 31, 1993 | 12:04 pm |
| 2449353.0090 | December 31, 1993 | 12:12 pm |
| 2449353.0095 | December 31, 1993 | 12:13 pm |
| 2449353.0100 | December 31, 1993 | 12:14 pm |
| 2449353.0200 | December 31, 1993 | 12:28 pm |
| 2449353.0300 | December 31, 1993 | 12:43 pm |
| 2449353.1000 | December 31, 1993 | 02:24 pm |
| 2449353.2000 | December 31, 1993 | 04:48 pm |
| 2449353.5000 | January 01, 1994  | 12:00 am |
| 2449353.7500 | January 01, 1994  | 06:00 am |
| 2449533.7500 | June 30, 1994     | 06:00 am |
| 2449623.9065 | September 28, 1994 | 09:45 am |
| 2449623.9170 | September 28, 1994 | 10:00 am |

Now, you're probably thinking: 2449353 is a long number to remember, never mind to say all day long -- and it changes every damned day! And you're right. Others through out the Imperium agree with you! And they came up with an answer: To make things simpler, the first two digits are usually dropped in common use.

Back to our dates from above. 10 am September 28, 1994, or IGC 2449623.9170 would be written on forms etc. as '49623.9170. Even ship's logs use this notation, as everyone recognizes that it's going to be a long, long, time before the 24 part becomes 25. 

Or actually, in our game, before the 25 becomes a 26.

Our game is taking place early in the 24^^th^^ century. If September 28, 1994 is IGC 2449623, September 28, 2307, 313 years into the future would be day: 2563868. The 24 has become a 25. Only 1 digit of change (in the first 2 digits) in 300 years!

In cases where clarity (or a frame of reference is needed -- such as in historical documents) the first two digits are usually enclosed in parenthesis or square braces in the first reference. So in a document set in the time period referenced above (1994), the first reference might be written as (24)49623.9170, and all subseqent references would simply be written in the shorter form '49xxx.xxxx.

Another common notation is:'49 (sometimes written in the wiki as '49(xxx) for clairity). Which is about the same as us saying something happened in "the 20th century". In this case the event happened  between (circa) [24]49000 and [24]49999 -- some 999 days, or a little over 3 [[Standard]] years years span of time.

If a bit more refinement is needed, then instead of an event happening in '49, a it might be referred to as having happened in '493' -- or "forty-nine-ot-three" as it would be spoken. This give approximately the same frame of reference as saying "it happened in '04".
/***
|Name|InlineJavascriptPlugin|
|Source|http://www.TiddlyTools.com/#InlineJavascriptPlugin|
|Documentation|http://www.TiddlyTools.com/#InlineJavascriptPluginInfo|
|Version|1.9.5|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|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
<<<
2009.04.11 [1.9.5] pass current tiddler object into wrapper code so it can be referenced from within 'onclick' scripts
2009.02.26 [1.9.4] in $(), handle leading '#' on ID for compatibility with JQuery syntax
|please see [[InlineJavascriptPluginInfo]] for additional revision details|
2005.11.08 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.InlineJavascriptPlugin= {major: 1, minor: 9, revision: 5, date: new Date(2009,4,11)};

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) { // external script library
				var script = document.createElement("script"); script.src = src;
				document.body.appendChild(script); document.body.removeChild(script);
			}
			if (code) { // inline code
				if (show) // display source in tiddler
					wikify("{{{\n"+lookaheadMatch[0]+"\n}}}\n",w.output);
				if (label) { // create 'onclick' command link
					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,tiddler){"+fixup+"\n};_out(this,this.tiddler);"
					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 script immediately
					var fixup=code.replace(/document.write\s*\(/gi,'place.innerHTML+=(');
					var c="function _out(place,tiddler){"+fixup+"\n};_out(w.output,w.tiddler);";
					try	 { var out=eval(c); }
					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;
		}
	}
} )
//}}}

// // Backward-compatibility for TW2.1.x and earlier
//{{{
if (typeof(wikifyPlainText)=="undefined") window.wikifyPlainText=function(text,limit,tiddler) {
	if(limit > 0) text = text.substr(0,limit);
	var wikifier = new Wikifier(text,formatter,null,tiddler);
	return wikifier.wikifyPlain();
}
//}}}

// // GLOBAL FUNCTION: $(...) -- 'shorthand' convenience syntax for document.getElementById()
//{{{
if (typeof($)=='undefined') { function $(id) { return document.getElementById(id.replace(/^#/,'')); } }
//}}}
/***
|Name|InlineJavascriptPluginInfo|
|Source|http://www.TiddlyTools.com/#InlineJavascriptPlugin|
|Documentation|http://www.TiddlyTools.com/#InlineJavascriptPluginInfo|
|Version|1.9.4|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|documentation|
|Description|Documentation for InlineJavascriptPlugin|
''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.
!!!!!Usage
<<<
This plugin adds wiki syntax for surrounding tiddler content with {{{<script>}}} and {{{</script>}}} markers, so that it can be recognized as embedded javascript code.
<script show>
	/* javascript code goes here... */
</script>Every time the tiddler content is rendered, the javascript code is automatically evaluated, allowing you to invoke 'side-effect' processing and/or produce dynamically-generated content that is then inserted into the tiddler content, immediately following the script (see below).  By including the optional ''show'' keyword as the final parameter in a {{{<script>}}} marker, the plugin will also include the script source code in the output that it displays in the tiddler.  This is helpful when creating examples for documentation purposes (such as used in this tiddler!)

__''Deferred execution from an 'onClick' link''__
<script label="click here" title="mouseover tooltip text" key="X" show>
	/* javascript code goes here... */
	alert('you clicked on the link!');
</script>
By including a {{{label="..."}}} parameter in the initial {{{<script>}}} marker, the plugin will create a link to an 'onclick' script that will only be executed when that specific link is clicked, rather than running the script each time the tiddler is rendered.  You may also include a {{{title="..."}}} parameter to specify the 'tooltip' text that will appear whenever the mouse is moved over the onClick link text, and a {{{key="X"}}} parameter to specify an //access key// (which must be a //single// letter or numeric digit only).

__''Loading scripts from external source files''__
<script src="URL" show>
	/* optional javascript code goes here... */
</script>You can also load javascript directly from an external source URL, by including a src="..." parameter in the initial {{{<script>}}} marker (e.g., {{{<script src="demo.js"></script>}}}).  This is particularly useful when incorporating third-party javascript libraries for use in custom extensions and plugins.  The 'foreign' javascript code remains isolated in a separate file that can be easily replaced whenever an updated library file becomes available.

In addition to loading the javascript from the external file, you can also use this feature to invoke javascript code contained within the {{{<script>...</script>}}} markers.  This code is invoked //after// the external script file has been processed, and can make immediate use of the functions and/or global variables defined by the external script file.
>Note: To ensure that your javascript functions are always available when needed, you should load the libraries from a tiddler that is rendered as soon as your TiddlyWiki document is opened, such as MainMenu.  For example: put your {{{<script src="..."></script>}}} syntax into a separate 'library' tiddler (e.g., LoadScripts), and then add {{{<<tiddler LoadScripts>>}}} to MainMenu so that the library is loaded before any other tiddlers that rely upon the functions it defines. 
>
>Normally, loading external javascript in this way does not produce any direct output, and should not have any impact on the appearance of your MainMenu.  However, if your LoadScripts tiddler contains notes or other visible content, you can suppress this output by using 'inline CSS' in the MainMenu, like this: {{{@@display:none;<<tiddler LoadScripts>>@@}}}
<<<
!!!!!Creating dynamic tiddler content and accessing the ~TiddlyWiki DOM
<<<
An important difference between TiddlyWiki inline scripting and conventional embedded javascript techniques for web pages is the method used to produce output that is dynamically inserted into the document: in a typical web document, you use the {{{document.write()}}} (or {{{document.writeln()}}}) function to output text sequences (often containing HTML tags) that are then rendered when the entire document is first loaded into the browser window.

However, in a ~TiddlyWiki document, tiddlers (and other DOM elements) are created, deleted, and rendered "on-the-fly", so writing directly to the global 'document' object does not produce the results you want (i.e., replacing the embedded script within the tiddler content), and instead will //completely replace the entire ~TiddlyWiki document in your browser window (which is clearly not a good thing!)//.  In order to allow scripts to use {{{document.write()}}}, the plugin automatically converts and buffers all HTML output so it can be safely inserted into your tiddler content, immediately following the script.

''Note that {{{document.write()}}} can only be used to output "pure HTML" syntax.  To produce //wiki-formatted// output, your script should instead return a text value containing the desired wiki-syntax content'', which will then be automatically rendered immediately following the script.  If returning a text value is not sufficient for your needs, the plugin also provides an automatically-defined variable, 'place', that gives the script code ''direct access to the //containing DOM element//'' into which the tiddler output is being rendered.  You can use this variable to ''perform direct DOM manipulations'' that can, for example:
* generate wiki-formatted output using {{{wikify("...content...",place)}}}
* vary the script's actions based upon the DOM element in which it is embedded
* access 'tiddler-relative' DOM information using {{{story.findContainingTiddler(place)}}}
Note:
''When using an 'onclick' script, the 'place' element actually refers to the onclick //link text// itself, instead of the containing DOM element.''  This permits you to directly reference or modify the link text to reflect any 'stateful' conditions that might set by the script.  To refer to the containing DOM element from within an 'onclick' script, you can use "place.parentNode" instead.
<<<
!!!!!Instant "bookmarklets"
<<<
You can also use an 'onclick' link to define a "bookmarklet": a small piece of javascript that can be ''invoked directly from the browser without having to be defined within the current document.''  This allows you to create 'stand-alone' commands that can be applied to virtually ANY TiddlyWiki document... even remotely-hosted documents that have been written by others!!  To create a bookmarklet, simply define an 'onclick' script and then grab the resulting link text and drag-and-drop it onto your browser's toolbar (or right-click and use the 'bookmark this link' command to add it to the browser's menu).

Notes:
*When writing scripts intended for use as bookmarklets, due to the ~URI-encoding required by the browser, ''you cannot not use ANY double-quotes (") within the bookmarklet script code.''
*All comments embedded in the bookmarklet script must ''use the fully-delimited {{{/* ... */}}} comment syntax,'' rather than the shorter {{{//}}} comment syntax.
*Most importantly, because bookmarklets are invoked directly from the browser interface and are not embedded within the TiddlyWiki document, there is NO containing 'place' DOM element surrounding the script.  As a result, ''you cannot use a bookmarklet to generate dynamic output in your document,''  and using {{{document.write()}}} or returning wiki-syntax text or making reference to the 'place' DOM element will halt the script and report a "Reference Error" when that bookmarklet is invoked.  
Please see [[InstantBookmarklets]] for many examples of 'onclick' scripts that can also be used as bookmarklets.
<<<
!!!!!Special reserved function name
<<<
The plugin 'wraps' all inline javascript code inside a function, {{{_out()}}}, so that any return value you provide can be correctly handled by the plugin and inserted into the tiddler.  To avoid unpredictable results (and possibly fatal execution errors), this function should never be redefined or called from ''within'' your script code.
<<<
!!!!!$(...) 'shorthand' function
<<<
As described by Dustin Diaz [[here|http://www.dustindiaz.com/top-ten-javascript/]], the plugin defines a 'shorthand' function that allows you to write:
{{{
$(id)
}}}
in place of the normal standard javascript syntax:
{{{
document.getElementById(id)
}}}
This function is provided merely as a convenience for javascript coders that may be familiar with this abbreviation, in order to allow them to save a few bytes when writing their own inline script code.
<<<
!!!!!Examples
<<<
simple dynamic output:
><script show>
	document.write("The current date/time is: "+(new Date())+"<br>");
	return "link to current user: [["+config.options.txtUserName+"]]\n";
</script>
dynamic output using 'place' to get size information for current tiddler:
><script show>
	if (!window.story) window.story=window;
	var title=story.findContainingTiddler(place).getAttribute("tiddler");
	var size=store.getTiddlerText(title).length;
	return title+" is using "+size+" bytes";
</script>
dynamic output from an 'onclick' script, using {{{document.write()}}} and/or {{{return "..."}}}
><script label="click here" show>
	document.write("<br>The current date/time is: "+(new Date())+"<br>");
	return "link to current user: [["+config.options.txtUserName+"]]\n";
</script>
creating an 'onclick' button/link that accesses the link text AND the containing tiddler:
><script label="click here" title="clicking this link will show an 'alert' box" key="H" show>
	if (!window.story) window.story=window;
	var txt=place.firstChild.data;
	var tid=story.findContainingTiddler(place).getAttribute('tiddler');
	alert('Hello World!\nlinktext='+txt+'\ntiddler='+tid);
</script>
dynamically setting onclick link text based on stateful information:
>{{block{
{{{
<script label="click here">
	/* toggle "txtSomething" value */
	var on=(config.txtSomething=="ON");
	place.innerHTML=on?"enable":"disable";
	config.txtSomething=on?"OFF":"ON";
	return "\nThe current value is: "+config.txtSomething;
</script><script>
	/* initialize onclick link text based on current "txtSomething" value */
	var on=(config.txtSomething=="ON");
	place.lastChild.previousSibling.innerHTML=on?"disable":"enable";
</script>
}}}
<script label="click here">
	/* toggle "txtSomething" value */
	var on=(config.txtSomething=="ON");
	place.innerHTML=on?"enable":"disable";
	config.txtSomething=on?"OFF":"ON";
	return "\nThe current value is: "+config.txtSomething;
</script><script>
	/* initialize onclick link text based on current "txtSomething" value */
	var on=(config.txtSomething=="ON");
	place.lastChild.innerHTML=on?"enable":"disable";
</script>
}}}
loading a script from a source url:
>http://www.TiddlyTools.com/demo.js contains:
>>{{{function inlineJavascriptDemo() { alert('Hello from demo.js!!') } }}}
>>{{{displayMessage('InlineJavascriptPlugin: demo.js has been loaded');}}}
>note: When using this example on your local system, you will need to download the external script file from the above URL and install it into the same directory as your document.
>
><script src="demo.js" show>
	return "inlineJavascriptDemo() function has been defined"
</script>
><script label="click to invoke inlineJavascriptDemo()" key="D" show>
	inlineJavascriptDemo();
</script>
<<<
!!!!!Revisions
<<<
2009.02.26 1.9.4 in $(), handle leading '#' on ID for compatibility with JQuery syntax
2008.06.11 1.9.3 added $(...) function as 'shorthand' for document.getElementById()
2008.03.03 1.9.2 corrected fallback declaration of wikifyPlainText() (fixes Safari "parse error")
2008.02.23 1.9.1 in onclick function, use string instead of array for 'bufferedHTML' (fixes IE errors)
2008.02.21 1.9.0 output from 'onclick' scripts (return value or document.write() calls) are now buffered and rendered into into a span following the script.  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.
2008.02.14 1.8.1 added backward-compatibility for use of wikifyPlainText() in TW2.1.3 and earlier
2008.01.08 [*.*.*] plugin size reduction: documentation moved to ...Info tiddler
2007.12.28 1.8.0 added support for key="X" syntax to specify custom access key definitions
2007.12.15 1.7.0 autogenerate URI encoded HREF on links for onclick scripts.  Drag links to browser toolbar to create bookmarklets.  IMPORTANT NOTE: place is NOT defined when scripts are used as bookmarklets.  In addition, double-quotes will cause syntax errors.  Thanks to PaulReiber for debugging and brainstorming.
2007.11.26 1.6.2 when converting "document.write()" function calls in inline code, allow whitespace between "write" and "(" so that "document.write ( foobar )" is properly converted.
2007.11.16 1.6.1 when rendering "onclick scripts", pass label text through wikifyPlainText() to parse any embedded wiki-syntax to enable use of HTML entities or even TW macros to generate dynamic label text.
2007.02.19 1.6.0 added support for title="..." to specify mouseover tooltip when using an onclick (label="...") script
2006.10.16 1.5.2 add newline before closing '}' in 'function out_' wrapper.  Fixes error caused when last line of script is a comment.
2006.06.01 1.5.1 when calling wikify() on script return value, pass hightlightRegExp and tiddler params so macros that rely on these values can render properly
2006.04.19 1.5.0 added 'show' parameter to force display of javascript source code in tiddler output
2006.01.05 1.4.0 added support 'onclick' scripts.  When label="..." param is present, a button/link is created using the indicated label text, and the script is only executed when the button/link is clicked.  'place' value is set to match the clicked button/link element.
2005.12.13 1.3.1 when catching eval error in IE, e.description contains the error text, instead of e.toString().  Fixed error reporting so IE shows the correct response text.  Based on a suggestion by UdoBorkowski
2005.11.09 1.3.0 for 'inline' scripts (i.e., not scripts loaded with src="..."), automatically replace calls to 'document.write()' with 'place.innerHTML+=' so script output is directed into tiddler content.  Based on a suggestion by BradleyMeck
2005.11.08 1.2.0 handle loading of javascript from an external URL via src="..." syntax
2005.11.08 1.1.0 pass 'place' param into scripts to provide direct DOM access 
2005.11.08 1.0.0 initial release
<<<
Things they are a-changin' here in the wiki. First of all, the old game introduction information is now hidden beneath the slider below, as is all the old 1st game information. Instead, I've decided to use this info page to explain what's being changed.

First, I should probably warn you by saying that very little is being changed that's going to be of much general interest. I've brought some of this info up to a couple of you in chat and got the old "that's nice" (pat, pat, pat) reply. So if you're not interested in expanding your "ALDE geek" knowledge so your character sound more like they're really living in the ALDE world, don't bother reading on. You have been warned. ;)

First on the list of updates is the UWP system. It hasn't really changed, but I //have// spiffed up its presentation considerably. And I'm making minor changes to the UWP itself. There are some new and necessary codes that expand on the old Traveller system. We now have the Trade Classification "Ne", for instance, for "rare earths". The world sizes have been expanded to encompass the larger sized rocky planets we've discovered orbiting the star known in the game as the [[Vesitia]] system. "And I've added a couple of new entries into the "Supplementary Remarks" section of the trade classifications. "Nz." (Neutral Zone) is probably the one you all will be the most interested in.

Almost finished is a modification to the location entry of the [[UWP|Universal World Profile]]. In fact, the system itself is finished. But I haven't had time to update all the [[UWP|Universal World Profile]] entries all ready in the system and on the boards. 

The problem was, the old system didn't really tell you where in the 'Verse the system you were looking at was located, even with the minimal changes to 3D that I'd made. The new system locates the system specifically, by sector, subsector and parsec, making it possible for every school kid to go "look it up" on a "map". The cool thing is, the location identifier is graphical enough that saying it, or even reading it, invokes an idea of where in the freeking 'Verse the system is.

Finally, I have addressed one of my pet peeves. I've //never// liked the warp factor scale of the game. The only reason I stuck with it was because we were using Hero, and it was based on the Hero system. Now that we're using FATE I see no reason to keep the stupid system, and have [[changed the formula|Warp Velocities]]. The practical result is a drop in the warp factors commonly traveled in the game, while at the same time having a scale that allows for better descriptions. As it stands right now //Audacity// travels at warp 9.9; but every other ship in the 'Verse is traveling at between warp 9.4 and 9.8 because the difference between warp 8 and warp 9 is so massive (256x the speed of light). Under the new system the practical warp range is between warp 4 and warp 6, with warp 6.5 being the current practical upper limit of production level technology. This doesn't mean travel times diminish. //Audacity// still travels at about 500 times the speed of light. The formula just slides the velocities down the scale and spreads them out a bit so they're more usable.

<<alias Midgard "[[Midgard|Midgard: Humanity's modern center of power]]">>

!!Campaign Introductory & Rules Information
It's been twenty years since [[Aldeborahnn]] disappeared from [[Durakaan]] as a teenager. It's been ten years since she took the throne of Earth, splitting the [[Empire]] in half more completely than the [[Neutral Zone]] ever did. Abandoning both her line and her caste, [[Aldeborahnn]] is now officially the sole Empress of the (new) Terran Empire.

The [[Emperor Trægen]] is long since dead, though the [[Aureleous Imperium]] hangs on to the Imperial throne by a thread.

The great hegemony has been shattered. [[Aldeborahnn]]'s Terran Empire has neither the might nor the wealth to create the might to hold on to territories the old [[Empire]] easily controlled. But the same can be for the [[Empire]]. Once unassailable, they are now under threat on all sides. The Imperial core is shrinking, barbarianism is growing&mdash;on //both// sides of the old [[Neutral Zone]].



[[FATE 3.0 Character Creation|FATE_3.0]]

+++[Old Campaign/character creation info]

<<slider aboutTone ToneOfCampaign [[Tone of the Campaign]]>>

<<slider aboutMorality Morality [[Morality of the Campaign]]>>

<<slider aboutPolitics Politics [[Politics of the Campaign]]>>

<<slider aboutPCs ThePCs [[The PC Group and Character Creation]]>>

<<slider aboutContributions  [[Contributing To The Game & Campaign]] [[Contributing To The Game & Campaign]]>>
===
<<foldHeadings closed>>
![[UWP|Universal World Profile]]: Kapteyn 1101 ~B7665F0-3 G Wa Ic Po R223 In

Kapteyn might be considered the spinward "capital" of the [[Neutral Zone]]. It is a poor planet (as it's [[UWP|Universal World Profile]] code shows) that has the resources to be one of the richest planets in the [[Empire]]. Unfortunately, its chance at working its way from poverty to wealth are slim.

[img[http://rpg-fusion.com/files/ALDE/Kapteyn.jpg]]

The Kapteyn system is ruled -- if that is the word -- by the [[Medraas]] with an iron fist. There are basically two classes of citizen on Kapteyn: The [[Medraas]], who are the masters of everything, and the mostly human serfs who do all the work for the [[Medraas]]. 

A visit to Kapteyn is a bit like entering a time warp. The starport is a high class facility ([[UWP|Universal World Profile]] code B) capable of dealing with most issues the [[Medraas]] (and corporate ships) have to deal with. But step outside that modern facility and you've stepped back into late 19th century Earth. It's a horse drawn carriage ride from your starship to the hotel. If you're a rich visitor, you'll find the accommodations equal to any decent hotel in the [[Empire]]. (Hard [[currency|Currency]] only, please!)

If you're not rich (or don't have hard [[money|Currency]]) it's a 19th century Ritz for you -- or worse if you just a middle class traveling schmuck. In point of fact, if you're just a middle class schmuck, traveling to Kapteyn is down right dangerous! You //could// find yourself in the same position as the rest of the population: A serf (glorified slave) working for the [[Medraas]] overlords. Visitors made serfs and [[Medraas]] captives from battles, piracy, and slaving operations make up the bulk of the population. Obviously, tourism is not advised -- which is why Kapteyn is coded Red.

!!Economics
Kapteyn has two economies: The serf economy, made up of the goods and services they buy and sell amongst themselves; and the [[Medraas]] economy. The former makes up the vast bulk of the transactions that occur on the planet. The latter makes up the bulk of the //money// that changes hands on the planet.

As on most other poor planets, the basis of exchange among the serf population is the [[Imperial As|Currency]]; among the [[Medraas]] it's the [[Imperial Denarius|Currency]], which again reflects where the wealth of the planet truly lays.

Among the serfs the basis of the economy is almost totally plebeian. Banks are unheard of, and wouldn't be trusted if they did exist. More importantly, nobody has any money to deposit anyway. Money is used solely to buy the goods serfs need for their families, and some estimate that 50% of those transactions are barter based, rather than currency based.

The [[Medraas]] habit of simply taking what they want from the serfs further suppresses the serf economy,  and doesn't make their lives any easier. Among themselves, the [[Medraas]] and other space fairing scum make up the totality of the modern economy, buying, selling, and repairing everything from parts and supplies for star ships to personal military weapons and armor. And, of course, there is the ever present slave trade which, in the [[Neutral Zone]] is a very different market than in [[Imperial|Empire]] ruled space.

!!The Locale
The Kapteyn system is a veritable rock garden. Just outside the planet's orbit is a planetoid belt (or asteroid belt, if you prefer) that's almost 1 AU in width. There are so many objects in the belt that finding anything or anybody is almost impossible. And warping through the belt into Kapteyn is  a prescription for disaster. 

But the massive inner belt isn't the only protection the planet has. There's a much smaller belt outside that, even. And there are a couple dozen good sized rocks in strange orbits around the planet itself. In short, Kapteyn itself has a miniature asteroid belt around it in its inner lunar orbit.

The whole makes Kapteyn a perfect den for thieves and other undesirables. Nobody's going to approach them without them knowing it. And nobody knows what's going on behind the big rock curtain.

Just outside the main belt is a //huge// gas giant with three moons. It's probably what keeps the big planetoid belt in place by providing needed counter force to the gravitational pull of the star. A smaller gas giant exists outside the smaller belt. Just inside it's orbit is a rocky planet the locals call Mu that the star seems to have captured at some time or other, for it's orbit is extremely elliptical and its inclination to the rest of the system is over 40 degrees. Too, it's almost laying on its side with it's "north pole" pointing toward the star.

So it's a very interesting place in space. One that Imperial scientists have been itching to study for decades. But under the current circumstances, Kapteyn's mysteries, and its resources, must remain it's own.

----
[<img[http://lostcoastgaming.com/files/images/Kapteyn-M-42.jpg]] //At left you are viewing the M-42 nebula just as it comes into view around Kapteyn's moon, Bee. (The moon is barely visible in the top 3rd because we're rounding its dark side.) Though closer than it is on Earth, M-42 is still over 1,000 light years away from Kapteyn. You can also see the famous star Belteguese, and on of the twenty-five odd asteroids,  ~Ay-En that orbit Kapteyn inside of of the moon Bee.//

//This picture provides a perfect example of what I mean by fictitious elements being added to our real galaxy. M-42 is a //real// nebula, and Belteguese is a //real// star. Kapteyn's Star is also real (its also called Hip 24186). But the moon Bee, the asteroid ~Ay-En, and the entire solar system around Kapteyn's Star is something I made up.//
''L''ong ''L''ife ''S''pace ''V''ehicles. A term coined early in human space exploration to describe vehicles designed to serve for multiple missions with the need of a major refit, or even a return to Earth for maintenance. A new concept at the time, in an era where reusing a space vehicle had historically been a major undertaking. (q.v. the Space Shuttle)

By the 23rd Century the term had fallen out of popular use because all space craft were LLSV. "Single shot" vehicles were re-labeled "probes" because they were cheap and disposable.
[<img[http://rpg-fusion.com/files/ALDE/Language_Translator.jpg]] ''Description:'' The Language Translator serves as in inexpensive translator device. Normally, the translator transmits to a remote ear piece or Com Dot.

Individual mem-clips are needed for both the source and target language. The translator can hold up to 6 mem-clips. Four peripheral outlets support accessories for unique communication modes such as light, smell , ultra-high or ultra-low frequency sound, touch, and pictorial display. Internal memory allows for copying of an entire mem-clip if necessary.

This unit performs well when translating one "spoken" sentence after another in a variety of languages, however, subtle nuances of meaning may not be preserved. (For the utmost in precise language translation  one of the powerful translator robots on the market are ideal.)

''Language Translator:'' //Universal Translator 16- (25 Active Points); OAF (-1), Real Technology (-¼). Total cost: 11 points.//

''Cost:'' 2000 Denari for unit, 150 Denarii per language clip
''Weight:'' 0.5 kg
----
Again, the term "rifle" is an anachronistic  misnomer, but whatever. These weapons are the standard issue weapon for the Imperial Legions kitted out in [[Battledress]]. Obviously they're available to civilians and [[MERC]] troops "through channels", but you won't find it openly for sale on the streets.

!!Laser ~MG-14
''Effect:'' RKA 4d6, AP, AF (5 shots), +1 STUN, Inv. to Sight
''Shots:'' 64
''Combat Modifiers:'' +1 OCV, +2 ~RMod
''STR Minimum:'' 6
''Range:'' 4500”
''Mass:'' 15 kg
''Denarii:'' 15,000
''Description:'' The Laser ~MG-14 is a ~TL14 fully-automatic laser rifle. 
''Laser ~MG-14:'' //(Total: 199 Active Cost, 39 Real Cost) RKA 4d6, Invisible to Sight Group, Source Only (+¼), +1 Increased STUN Multiplier (+¼), Increased Maximum Range (4,500”; +¼), Armor Piercing (+½), 64 Charges (+½), Autofire (5 shots; +½) (195 Active Points); OAF Fragile (‑1 ¼), STR Minimum 15-17 (STR Min. Cannot Add/Subtract Damage; -1 ¼), Required Hands ~Two-Handed (½), Custom Modifier (Requires Battle Dress; -½), Custom Modifier (Cannot move and fire at same time; -½), Beam (¼), Real Weapon (¼) (Real Cost: 35) plus +1 with any single attack with one specific weapon (Real Cost: 1) plus +2 vs. Range (6 Active Points); OAF (‑1) (Real Cost: 3). Total Cost: 39 Points.//

!!Heavy Laser Rifle
''Effect:'' RKA 4d6, AP, +1 STUN, Inv. to Sight
''Shots:'' 8
''Combat Modifiers:'' +1 OCV, +2 ~RMod
''STR Minimum:'' 6
''Range:'' 3000”
''Mass:'' 25 kg
''Denarii:'' 25,000
''Description:'' The Heavy Laser ~Rifle-13 is a ~TL13 heavy combat laser rifle. Note: Heavy Sniper Weapon, also used against light vehicles
''Heavy Laser Rifle-13:'' //(Total: 141 Active Cost, 34 Real Cost) RKA 4d6, Invisible to Sight Group, Source Only (+¼), +1 Increased STUN Multiplier (+¼), Increased Maximum Range (3,000”; +¼), Armor Piercing (+½) (135 Active Points); OAF Fragile (‑1 ¼), STR Minimum 6 (STR Min. Cannot Add/Subtract Damage; -1), 8 Charges (½), Required Hands ~Two-Handed (½), Beam (¼), Real Weapon (¼) (Real Cost: 28) plus +3 with any single attack with one specific weapon (Real Cost: 3) plus +2 vs. Range (6 Active Points); OAF (‑1) (Real Cost: 3). Total Cost: 34 Points.//
Kind of an anachronism, the carbine was a short barreled rifle whose reduced size and weight made it easier and faster to fire than a "long gun", but it sacrificed accuracy at long range to do so. Likewise, the laser carbine is smaller and lighter than the [[Laser Rifle]], but it sacrifices range to gain mobility.

!!!Laser Carbine-11

''Effect:'' RKA 3d6, AP
''Shots:'' 32
''Combat Modifiers:'' +2 OCV, +2 ~RMod
''STR Minimum:'' 6
''Range:'' 420”
''Mass:'' 5 kg
''Denarii:'' 3000
''Description:'' The Laser Carbine-11 is the ~TL11 version of the laser carbine.
''Laser Carbine-11:'' //(Total: 84 Active Cost, 29 Real Cost) RKA 3d6, 32 Charges (+¼), Armor Piercing (+½) (79 Active Points); OAF Fragile (¼), Beam (¼), Custom Modifier (blocked by rain or smoke; -¼), Real Weapon (¼), Required Hands ~One-And-A-Half-Handed (¼) (Real Cost: 24) plus +2 with any single attack with one specific weapon (Real Cost: 2) plus +2 vs. Range (6 Active Points); OAF (-1) (Real Cost: 3). Total Cost: 29 points.//
Lasers are the only beam weapons available. Lasers are beams of coherent light, and are blocked by dense refractives such rain or smoke, and have significantly reduced effect in dense atmospheres.

As with most things in the game, there are different tech levels (TL) available. The higher you go in TL, the more sophisticated the weapon gets. That does //not// necessarily mean it does more damage. In the case of the laser pistol, below ~TL-15 the weapon is powered by a power pack, making it a bit more cumbersome to fire. At ~TL-15 (game average is ~TL-12) the battery pack is replaced by a magazine that holds 15 CLC (Chemical Laser Cartridges) that provide the power for the laser pulse.

!!!Laser Pistol-12

''Effect:'' RKA 2d6, AP, AF (2 shots), Inv. to Sight
''Shots:'' 12
''Combat Modifiers:'' +1 OCV, +1 ~RMod
''STR Minimum:'' 6
''Range:'' 515”
''Mass:'' 2 kg pistol / 20 kg backpack power supply
''Denarii:'' 2500
''Description:'' The Laser Pistol-12 is the ~TL12 version of the laser pistol.
''Laser Pistol-12:'' //(Total: 63 Active Cost, 17 Real Cost) RKA 2d6, Invisible to Sight Group, Source Only (+¼), Autofire (2 shots; +¼), Armor Piercing (+½) (60 Active Points); OAF Fragile (‑1 ¼), STR Minimum 6 (STR Min. Cannot Add/Subtract Damage; -1), Beam (¼), Real Weapon (¼), 12 Charges (¼), Limited Range (¼) (Real Cost: 14) plus +1 with any single attack with one specific weapon (Real Cost: 1) plus +1 vs. Range (3 Active Points); OAF (‑1) (Real Cost: 1). Total Cost: 17 points.//
The full on long reach version of the carbine.

!!Laser Rifle-12
''Effect:'' RKA 3 ½d6, AP, AF (2 shots), Inv. to Sight
''Shots:'' 32
''Combat Modifiers:'' +1 OCV, +2 ~RMod
''STR Minimum:'' 6
''Range:'' 3100”
''Mass:'' 9 kg
''Denarii:'' 6500
''Description:'' The Laser ~Rifle-12 is the ~TL12 version of the laser rifle.
''Laser Rifle-12:'' //(Total: 141 Active Cost, 36 Real Cost) RKA 3 ½d6, 32 Charges (+¼), Invisible to Sight Group, Source Only (+¼), Autofire (3 shots; +¼), Increased Maximum Range (3,100”; +¼), Armor Piercing (+½) (137 Active Points); OAF Fragile (‑1 ¼), STR Minimum 6 (STR Min. Cannot Add/Subtract Damage; -1), Required Hands ~Two-Handed (½), Beam (¼), Real Weapon (¼) (Real Cost: 32) plus +1 with any single attack with one specific weapon (Real Cost: 1) plus +2 vs. Range (6 Active Points); OAF (‑1) (Real Cost: 3). Total Cost: 36 points.//
[<img[http://rpg-fusion.com/files/ALDE/Lasercom_Relay.jpg]] ''Description:'' The laser communicator is a line-of-site device and as such is subject to atmospheric conditions. The extreme range of the laser communicator is seldom needed on a world's surface as the distance to the horizon limits range first. Still, the relay's range does allow tight-beam communications with an orbiting ship. 

The laser communicator's main advantage is it's tight beam, and therefore private means of communication. Sets of laser communicators can also be lined up to create a "repeater" network. Spaced horizon to horizon can instantly transmit a message around a world be re-transmitting from station to station.

''Lasercom Relay-10:'' //Mind Link , Machine class of minds, Specific Group of Minds, Number of Minds (x, 1 Continuing Charge lasting 1 Day (+0) (25 Active Points); OAF Bulky Fragile (‑1 ¾), Only With Others Who Have Mind Link (‑1), Custom Modifier (Range effected by atmospheric conditions; -¼), Visible (¼). Total Cost: 6 points.//

''Cost:'' 2,500 Denarii
''Weight:'' 1.5kg
----
+++^60em^[Lenle|System/Mainworld Name]
<<tiddler UWPName>>===+++^60em^[Ntl-H5704|Location in Imperial Registry]
<<tiddler UWPLocation>>===+++^60em^[C561415&mdash;C|Main World Data]
     These eight code provide data on the specific planet identified by this entry. Click on each     individual entry below to open a table describing each code:
+++^25em^[C|Star ports]<<tiddler UWPStarport>>===+++^25em^[5|Size]
<<tiddler UWPWorldSize>>===+++^35em^[6|Atmosphere]
<<tiddler UWPAtmosphere>>===+++^30em^[1|Hydrosphere]
<<tiddler UWPHydrosphere>>===+++^20em^[4|Population]
<<tiddler UWPPopulation>>===+++^25em^[1|Government]
<<tiddler UWPGovernment>>===+++^30em^[5|Law]
<<tiddler UWPLaw>>===&mdash;+++^30em^[C|Tech Level]
<<tiddler UWPTech>>===
===+++^40em^[X|Bases]<<tiddler UWPBases>>===+++^40em^[Ba De Ic Lo Na As Re Nz.|Trade Classes]
<<tiddler UWPTrade>>===+++^30em^[A103|System Information]
     These four codes provide data about the system as a whole that is important to ships planning trips into the system, as well as further refining the population data for the system's primary world. Click on each individual entry below to open a table describing each code:
+++^40em^[A|Travel Zone Code]
<<tiddler UWPTravelZones>>===+++^40em^[1|Population Multiple]
<<tiddler UWPPopMultiplier>>===+++^40em^[0|Gas Giants]
<<tiddler UWPGasGiants>>===+++^40em^[3|Planetoid (asteroid) Belts]
<<tiddler UWPBelts>>===
===+++^40em^[In|Allegiance]<<tiddler UWPAllegiance>>===


''Lenle Solar System Data''
Lenle dA6
0 Alegar ~C561415-C X Ba De Lo Na Re
&nbsp;&nbsp;  Asteroid belt
1 Salazar ~X367415-C X Ic Lo Na
&nbsp;&nbsp;  Asteroid belt
&nbsp;&nbsp;  Asteroid belt
2 Eyremar SGG
 
[img[http://lh6.ggpht.com/_Q4v13qRnaK0/SzY85TK-0BI/AAAAAAAAAbU/hZdqi7oQ-BY/s800/Lenle.jpg]]
Lenle is a very small system; what's left of what was once probably a very large system, until it's star collapsed billions of years ago causing an extraordinary amount of destruction within a system that might have looked a lot like Earth's. In the picture above the level of destruction is evident in the number of asteroids and planetoids still spinning about the system. (All the bright dots that look like a cloud swarming about the star.) This picture is taken a mere 2.6 ~AUs from the star (about the distance of Mars). Yet we're already so far away the orbit of Alegar is not visible at all, and the orbit of Eyremar, the gas giant, is completely visible.

[>img[http://lh3.ggpht.com/_Q4v13qRnaK0/SzBaHeo9fcI/AAAAAAAAAZs/v-eXD2VvFqo/s400/Lenle-Alegar.jpg]]Perhaps because it's within the [[Neutral Zone]], the Lenle system was largely ignored until a mere fifty years ago. Then [[rare earth elements|http://en.wikipedia.org/wiki/Rare_earth_element]] were discovered on the inner planet of Alegar (at right) by an exploratory expedition of the privately owned (and unscrupulous) Modal Mining Company. Unfortunately Alegar is a hot, barren, wind-swept desert world that even slaves cannot live on for very long. So Modal built a space station to service the mining operations planet side. An expensive proposition that would not be practical for most small mining companies. But  [[rare earths|http://en.wikipedia.org/wiki/Rare_earth_element]] are, if anything, even more valuable in the modern (tech level C) world than they were back in the 20th/21st century (tech level 7).

[<img[http://lh4.ggpht.com/_Q4v13qRnaK0/SzBaGDYDdGI/AAAAAAAAAZo/4iQ9DQaqKA0/s400/Lenle-Salavar.jpg]]Between Alegar and Salazar lays the first, and smallest, of the asteroid belts. (Some of the individual asteroids are visible in the picture above and at left.) But, though small, the belt is thick enough to make travel to Salazar dangerous, even though it's only .012 ~AUs outside of Alegar.

Salazar is a world frozen in ice. Liquid water is only present at certain times of the year at the equator. The planet warms just enough, just long enough, to cause the massive ice sheets to move over the frozen ground, scouring it clean of all vegetation and soil. But all that said, Salazar is a valuable resource to the system, because its ice sheets provide the only source of water available. So, in order to maintain its operations in system, water must be constantly "mined" and shipped from Salazar to the space station at Alegar.

[>img[http://lh6.ggpht.com/_Q4v13qRnaK0/SzBaElMbKDI/AAAAAAAAAZk/2K8ap3oXfxI/s400/Lenle-Eyremar.jpg]]Separating Salazar and the outer planet Eyremar are nearly .7 ~AUs of flying debris. Some of it large enough to be classified as planetoids rather than asteroids. Eyremar was probably once a usable gas giant. But when the star collapsed the hydrogen mixed with other stellar gases and dust to such an extent that, while a ship might, with patience, be able to extract enough emergency fuel to leave the system, it's impractical for regular refueling use. So the only source of readily available hydrogen lays not on Eyremar, but in the ice sheets of Salazar, well protected by .7 ~AUs worth of hurtling projectiles.

This link contains stories about people and places in the empire. It's purpose is to help you feel more "at home" in the game world.

Comments are always welcome, of course. <g>

''The Stories:''
* [[A Day on Deneb-Theta]]
* [[Star Station Regillus: X-boat Has Landed]]
* [[Seller's Regret]] A visit to [[Neutral Zone]] system [[Kapteyn]]
One of the oldest and most venerable of the ruling "families" of the [[Duranaki]] Imperium, the Line of Aureleous can trace its roots of power back to the very beginnings of the Empire itself, more than 10,000 [[Standard Years|Standard]] ago.

While the Line of Aureleous cannot claim to have ruled uninterrupted for all that time, they //can// (and do correctly) claim that they have always been power brokers in the [[Empire]], holding seats in the Imperial Senate, and in regional positions of power as Tribunes and Consuls, even when they didn't hold the Imperial Throne.

At present there are some 100 members of the Line of Aureleous in key positionsin the [[Emperor Trægen's|Emperor Trægen]] government.
''L''aw ''o''f ''A''rmed ''C''onflict.

A very old idea that has been honed to a fine science by mercenary organizations that are members of the [[MERC]], who incorporate needed portions of the ~LoAC into every contract as a matter of course.

While the document is very long and detailed, it is based on the following basic principles:

* The conflict should be limited to achieving the political goals that started it (e.g., territorial control) and should not include unnecessary destruction.
* The conflict should be brought to an end as quickly as possible.
* People and property that do not contribute to the war effort should be protected against unnecessary destruction and hardship.
* Both combatants and noncombatants should be protected from unnecessary suffering.
* Fundamental individual rights of those who fall into the hands of the enemy, particularly prisoners of war, the wounded and sick, and civilians should be preserved. (In fact, [[MERC]] members usually do not even incarcerate fellow [[MERC]] ~POWs. See their entry for more info.)
* Combatants should facilitate the restoration of peace.

By in large, the Empire agrees with and follows the ~LoAC. [[MERC]] lives (and dies) by it and has been known to gang up on organizations that flagrantly break the LoAC.
The ''MER''cenary ''C''ooperative. The largest organization in known space representing independent military organizations. And yet, according to most sources, it doesn't even exist.

Experts claim that the MERC is really a network of some 200 military organizations that have all agreed to certain standards and procedures. All, for instance, agree to abide by the Law of Armed Conflict (LoAC). All use the same awards and decorations. All are known for fulfilling their contracts to the best of their ability; all are known for having contracts with stop loss and POW treatment clauses. 

A MERC member will neither abuse nor likely even interrogate an opposing MERC soldier, and their contracts so state. MERC members understand that today's "enemy" might be tomorrow's ally, or even might even be wearing the same uniform and sharing a trench  in the next contract. Opposing POW's are usually housed in barracks and eat at the mess hall with everyone else. They're understood to be "out of the fight" until they're bought back (ransomed) by their organizations. Negotiations on the price of POW returns typically take place after the conflict. 

Things are not //nearly// so civilized when a MERC outfit fights a non-MERC. Since non-MERC organizations may not follow the LoAC, stop loss is not guaranteed, nor is civil treatment of ~POWs. It costs a great deal to get a MERC outfit to take a contract to fight non-MERC soldiers.

The Empire is entirely duplicitous when it comes to tolerance for mercenary military organizations. The Emperor has been very vocal about the illegality of private armies throughout his reign. But it is widely known that MERC troops are regularly used by the Empire when the use of the Imperial Legions would be too politically explosive.
The Magellen are one of the most mysterious races in the known Galaxy. It is rumored that the Gods of Mount Olympus were Magellen; that Isis was (or perhaps is) Magellen; that it was Magellen who taught the sciences to the Egyptians, the Astec, and the Maya; and that the Magellen were behind the industrial revolution.

The Magellen themselves are not saying, of course.

Nor are they (or the [[Eldyri]]) assisting in demystifying themselves to the Human, Duranaki, and Myri races. <<slider eldyrimagellen ElderiMagellenConnection [[The Eldyri/Magellen Connection]]>>

What //is// known is that the Magellen inhabit a planet that humans have come to call [[Eden]], some 31 parsecs from Sol. A very large system, and one that's very "busy" -- full of asteroids, asteroid belts, comets, and other space debris -- it is also one that has never been fully mapped by any Imperial (or human) ship.

The Magellen don't encourage visitors.

Rumor also has it that Eden is a paradise. A land of lush forests and gardens, rich fields of grain, orchards laden with fruit, with little to no visible technology. The settlements are said to be small' and factories are either invisible or unknown to the Magellen. Everything from clothes to the table's flatware is made by artisans rather than factory workers on an assembly line. 

It is also said that money is virtually unknown. Work is done by those who enjoy doing it, for the love of the craft. There is no want or need; poverty is as foreign a concept as money, and if there is illness or disease, it has not been reported in any of the rumors.

But it is important to emphasize: These //are// rumors!

The Magellen themselves, to the extent they interact with the other races in th e Imperium, rarely talk about their home world. And, to be frank, most races who encounter a true Magellen rarely bother to ponder the wonders of [[Eden]] for long, for they are too entranced with the "magic" the Magellen are capable of performing so off-handedly. From spinning roses out of thin air, to exploding an entire star-ship, the Magellen do indeed fit the description of the fabled Gods of Olympus, or of Thorr and his mighty hammer.

Unfortunately for the Empire, the Magellen are seldom moved to involve themselves in the affairs of others. Though "experts" label them as an extraordinarily philanthropic race, their "magical" powers apparently make much of the philanthropy either invisible to the benfactors, or so subtle as to be unknown. These same experts point to the Egyptian pyramids, the legends of Atlantis (supposedly a pre-historic Magellen outpost on Earth), and the remarkable industrial revolution that transformed Earth as examples of the subtly of Magellen philanthropy.

Others disagree. 

But there can be no doubt that a Magellen "wizard" openly assisted Emperor Trægen in putting down an upsurge in [[Medraas]] piracy in [['44 |ImperialGalacticCalendar]]. The Court Recorder documented the incident this way:

<<<
There appeared before the court a tall, aged looking male leaning heavily on a gnarled wooden staff. He was tall and thin in the manner of those of a ruling line [i.e. the Great Clans of the Duranaki], but dark skinned like a [[Myri]] or some humans. White hair passed his shoulders, and a long white beard reached his waist. His eyes shown as though some energy or fire was borne within that fraile form.

The [[Thavan]] responded immediately, but could not approach the visitor. Their weapons faired no better, for he dismissed they and their charges with a single wave of his hand, then banished the [[Thavan]] themselves with a single rap of his staff upon the flagstone floor.
<<<

The human journalist/historian and Megellen "expert" Beverly Clark later added these observations, after reading the Imperial account:

<<<
Given the Court Recorder's description of the visitor, it must be assumed that this was a Magellen of considerable age and prestige, perhaps one whose age reaches back to the very beginnings of this Current Imperium. [That would make this interesting visitor nearly 5,000 [[Standard]] years old! //Ed.//]

Why such an august personage should seek an audience with the Emperor over such a trivial seeming matter is not clearly understood. But what is clear from the displays of power evident in the Recorder's account is that the visit was purposeful, and that the Magellen entrusted with the task viewed the most powerful side-arms of the Empire as no more of a nuisance than the common house fly.
<<<

Clearly such a person does not represent the majority of the Magellen population. But what exactly //does// represent the majority of the Magellen, and what motivates them, is nearly as large a mystery.

''Non-human abilities''

The Magellen are power users, or "mages", to put it in fantasy game terms. Magellen males average 6'5" in height, the women 5'8". In their youth they can be nearly any body build. But as they age, they seem to grow frail. Sometime during the early years of puberty their power "turns on", usually to the tune of a VPP of about 25 points -- though this can vary widely based on a variety of factors. ''FATE:'' At least one power sphere skill based on childhood training.

What the young Magellen can //do// with that power is dependant entirely on their education and training. The lesser educated use their abilities for such plebeian tasks as farming, carpentry, weaving, and so on and so forth. The better educated might turn their talents to engineering and the sciences. Those capable of truely "mage" like (or god like) powers are actually fairly small in number, and are highly trained for just such purposes.

''Culture''

Though no outsider knows it, the Magellen are actually ruled by a benign autocratic governing counsel. These counsels are, in turn, served by subordinate counsels and they in turn by other subordinate counsels right down to the village level.

To the extent that any over site is needed (and little is) it is the business of these counsels to manage affairs. The counsels meet only rarely, for rarely does a matter of such import arise that such a meeting is necessary. In all other ways the Magellens manage their own affairs according to want and need.

It is true that there are no cities. It is also true that there are no factories. All manner of goods needed are produced by crafstmen who enjoy making those goods. Bliss is the standard coin of Magellen society, and it serves their needs just fine.

But that standard is also the cause of their nearly xenophobic isolation. They are probably more conversant with the ways of the Empire than many citizens, and know that official contact with the Empire at large would compromise their way of life. That they will not tolerate, and in fact go to great lengths to protect.

''Appearance''

On the whole, the Magellen tend to be rather more frail than the average human. A trait they share with the [[Duranaki]]. But some, especially those trained for such service, can be quite intimidating physically. Match their preternatural abilities to their physique and it is quite understandable how a very young and impressionable human race might view them as gods.

On the whole the Magellen are very serviceable in their dress and appearance. Those in government service or other positions of power seem to favor toga like garments. Traveling ambassadors such as the one that appeared before the Emperor usually wear a simple and serviceable traveling garb of robes and cloaks. 

Younger Magellen are usually quite attractive; the elders wizened without having withered.

''Racial Mixing and Interbreeding''

Unknown. No Magellen has ever desired tp produce offspring of another race. And even the youngest adventurous Magellen has the power to grant or withhold their own fertility.

''NOTE: Magellen characters enter this game by special permission only! Shoot me a good concept that explains why a god like character would leave Eden and enter "the world of men".''
[[Ship Tech & Operations]] [[Races]] [[Places]] [[Gear]] [[Life in the Empire]]
Mary Felton was (is?) a ~Psi-Theta, in Hermetica terms. That means she's almost average in ability even by [[Eldyri]] standards. Unfortunately, it seems a bit of evolution also gained her a bit of compassion where the Controls on Hermetica were concerned. 

Knowing the Hermetica //Thought Combine// would detect her sympathies, she fled Hermetica and escaped to [[Durakaan]]. There she gave testimony before the Imperial Senate's Systems Relations Committee on the inner workings of Hermetica and the gifted's treatment of the Controls. Predictably, shortly after her testimony went public, Hermetica denied that a person such as Felton even existed, never mind that there was a Hermetican Psi-Theta named Mary Felton.

As the Empire was in the midst of trying to get Hermetica to join the Empire peacefully (some still remembered the smarting the [[Eldyri]] gave them), they sided with Hermetica, clearing the way for the planetary government to file a series of defamation lawsuits against Felton.

Her credibility undermined and no news agency willing to buck both the Empire and the government of Hermetica, Felton disappeared. But though she failed in her attempt to improve conditions for the Controls on Hermetica, she //did// manage to raise awareness of their plight -- and some say even within the Imperial Palace itself, though sources remain mum on specifics.

At present Felton is reputed to be living on [[Yyvaan]], the [[Eldyri]]  supposedly having given her asylum. Some say she is learning a great deal about her psi talents while living amongst them, and that her abilities may now exceed even Theta level.
[<img[http://rpg-fusion.com/files/ALDE/Med_Scanner.jpg]] ''Description:'' A doctor or nurse need only press the probe against a patient's chest and moments later, the scanner accurately determines body temperature, blood pressure, pulse rate, respiration rate, level of neural activity, fluid balance, and other important data.

Once the reading is made, the device records the data in the scanner's memory. These records can be called up later for review. The scanner can be set up so that if readings reach a certain level (high or low), the scanner beeps to alert the attending physician (or nurse or med tech). Adhesive pads allow for attaching temporarily attaching the scanner to the patient's chest for this purpose.

Med Scanners are optimized for a certain race, so accuracy will deteriorate the further away from the target race one gets. Generally, if the device is optimized for "humans", it will return good results on any race close enough to humanoid to produce young without medical assistance. Performance deteriorates beyond that point.

''Medical Scanner (Pocket):'' //(Total: 37 Active Cost, 14 Real Cost) Detect Vital Signs 18- (Radio Group), Discriminatory, Analyze, Requires A System Operations Skill Roll (No Active Point penalty to Skill Roll; +0) (20 Active Points); Extra Time (1 Turn (~Post-Segment 12), -1 ¼), OAF (Med Scanner; -1) (Real Cost: 6) plus Eidetic Memory, Requires A Systems Operation Skill Roll (No Active Point penalty to Skill Roll; +0) (5 Active Points); OAF (Med Scanner; -1) (Real Cost: 2) plus Hearing Group Images 1” radius, Requires A System Operations Skill Roll (No Active Point penalty to Skill Roll; +0), Reduced Endurance (0 END; +½), Trigger (Activating the Trigger is an Action that takes no time, Trigger resets automatically, immediately after it activates; Triggered when Vital Signs fall below programmed level; +1) (12 Active Points); OAF (Med Scanner; -1) (Real Cost: 6). Total cost: 37 points.//

''Cost:'' 10,500 Denarii
''Weight:'' 0.1 kg
-----
A hand-held version of the pocket medical scanner, it therefore is a complete expert systems diagnosis computer to aid in treating illness and injury. (As Misha is not a trained physician, this is the piece of equipment she used for the initial diagnosis of Sasha in [[Seller's Regret]].)

''TL:'' 12
''Cost:'' 25,000 Denarii
''Mass:'' 1 kg

!!Medical scanner, computer
| !Val | !Char | !Cost | !Roll | !Notes |
| 13 | INT | 3 | 12- |PER Roll 12- |
| 10 | DEX | 0 | 11- |OCV 3 DCV 3 |
| 2 | SPD | 0 ||Phases: 6, 12 |
|>|>|>|>|''Total Characteristic Cost:'' 3 |
| !Cost |>|>|!Powers | !END |
| 21 |>|>|Vital Signs Monitor: Detect Vital Signs 16- (Radio Group), Discriminatory, Analyze, Sense | 0 |
|>|>|>|>|>|''Talents'' |
| 3 |>|>|Absolute Time Sense |
| 5 |>|>|Eidetic Memory |
| 3 |>|>|Lightning Calculator |
|>|>|>|>|>|''Skills'' |
| 3 |>|>|Paramedic 12- |
| 5 |>|>|Medical Programming: KS: Medicine 14- |
| 1 |>|>|Program: Diagnose Condition |
| 1 |>|>|Program: Suggest Treatment From Database |
|>|>|>|>|>|''Total Powers & Skill Cost:'' 42 |
|>|>|>|>|>|''Total Cost:'' 45 |
Medicines are, in many ways, the old fashioned way to treat disease. They include

* ''Vaccines'' against various sorts of disease.
* ''Antibiotics'' which target the disease.
* ''Metabolics'' which are applied daily until a disease is expelled from the body.

I won't bore any of you with the game stat particulars for these.
The Medraas are not really a separate "race", but rather the product of a special, scientific interbreeding program between humans and [[Myri]]. The work of the (then young human) "genetic engineer" Russell Covelle late in the 22^^nd^^ century (circa [25]23501 [[IGC |ImperialGalacticCalendar]]).

Covelle postulated that by blending the superior power and strength of the [[Myri]] male with the human intellect and innovative spirit, he could produce a superior human. Unfortunately, the only human specimens the [[New Home]] board of ethics would allow him to use for his experiments were those imprisoned for life in the [[New Home]] penitentiary. [[Myri]] subjects of both sexes were readily provided by [[New Home]]'s new Imperial masters, the [[Duranaki]], who where just as curious as to the outcome as Covelle himself.

Unfortunately, interbreeding prize [[Myri]] with hardened criminal humans proved to be a less than stellar idea. Ever impatient, Covelle tried to circumvent the proven, slow process with testing and waiting for results: Breeding his (largely enthusiastic) "specimens" repeatedly in different combinations, he then subjected each child to endless batteries of tests. And the instant the children were old enough, he then bred //them// to refine and perfect his concept of this "new and improved" human. By '41760.000 [[IGC |ImperialGalacticCalendar]] Covelle had produced literally thousands of [[Myri]]/humans.

Covelle died ten years later, in '42126 [[IGC |ImperialGalacticCalendar]], convinced his experiments had been a success, that his new breed of human was, with one minor and unimportant imperfection, far superior to anything Mother Nature had ever produced. Six months later on '42306.521 [[IGC |ImperialGalacticCalendar]] his experiment violently revolted and escaped confinement.

The "specimens," as they were still known, killed over half of the laboratory staff and burned the facility to the ground. They raided the armory, stealing both fire-arms and heavier weapons and then made their way to the star-port. In a two day orgy of robbery they stole seemingly everything in site and either enslaved or killed everyone they encountered. Of the seventy five ships on the ground at the time of the breakout, only eight escaped. The others were commandeered by the "specimens". Finally, at '42309.012 [[IGC |ImperialGalacticCalendar]], about quarter after noon, [[New Home]]'s main star-port time, they left, taking all 67 remaining starships. Ship's they'd packed with all their booty, 3,000 [[Myri]] slaves, and another 2,700 human slaves that they'd opted for reasons of their own not to kill before their departure.

By the time it was all over much of the star-port area of Galaxy City had been laid waste and some 15,000 civilians had been either raped, wounded, or killed.

''Going Home''
The "specimens" turned criminal refugees' escape was not random. Nor was their raiding of the star-port. The truth was -- and it was a truth nobody would come to understand for another decade, Covelle's breeding program had worked. Just not in the manner he'd planned. His delicate and beautiful half-breed women routinely gave birth to either equally delicate and beautiful girls or powerful, giant men. Both sexes were of at least average intelligence and both, unfortunately, were just as criminally psychotic as their progenitors. A fact Covelle had managed to successfully hide from his colleagues under the belief that he would be able to "breed out" what he believed to be "a minor psychological irregularity."

The "specimens" had been planning their escape for some time. They knew exactly what they were going to need to succeed both in human and technological capitol, and they knew exactly where they were going. In fact, amongst themselves, they had been calling themselves the Medraas for several years -- a reference to the planet they were going to call home.

At the edge of what was quickly becoming known as "[[The Neutral Zone|Neutral Zone]]," Medraas was not only habitable, but in a perfect place for the refugees to prey on passing ships. The system's name was [[Kapteyn]]. A name later generations of Medraas would eventually adopt over their ancestor's code name.


!!Medraas Society
Medraas social structure is divided into three distinct castes:

!!!!The Ruling Caste
When people speak of the Medraas, it is to this caste that they are referring.

Today the Medraas ruling caste is fractionalized into gangs that spend at least as much time fighting amongst themselves as they do anything and everything else that passes through, in, or around [[The Neutral Zone|Neutral Zone]].

The gangs are all structured in the same basic primitive way: The most powerful male is the gang leader. Lesser powerful males become lieutenants of greater or lesser power, and so on down to the lowest members of the gangs. Power in this case is represented by men, arms, money, starships, and women.

Women, being much smaller than the men, are chattel. Their status in society is entirely based on the men that claim them and protect they and their children. Not surprisingly, beauty and the things that make a woman more beautiful in men's eyes are highly prized among ambitious women.  No less ruthless or cunning than their men, female fights for the affections of a powerful man are at times more vicious than the male challenge matches, sometimes going so far as to scar or maim a rival, or killing her children! 

Since to be fought over by rival women is a status symbol for a powerful Medraas man, they not only tolerate such behavior in their women, but encourage it. Public spectacles called &ldquo;[[cat fights]]&rdquo;, where rival women fight each other for their place with &ldquo;their man&rdquo; (which automatically gives their offspring &ldquo;place&rdquo;), is a favorite form of entertainment, not only among the Medraas, but among much of the population of [[The Neutral Zone|Neutral Zone]] and even the outer areas of the [[Empire]]. Medraas [[cat fights]] are big money makers for [[book makers]], much bigger money makers than Medraas challenge fights. Recently [[cat fighting|cat fights]] has emerged as a popular new form of blood sport mainstream society outside the core [[Empire]], which has led to a new kind of Medraas gang that is at least tolerated by the mainstream population. Needless to say, this has complicated everybody's eradication efforts.

Information, too, is a huge asset, and next to sex and beauty (not necessarily in that order) is the favorite form of female capital. In fact, women //are// the information collectors of Medraas society. A woman with valuable information is guaranteed a higher &ldquo;place&rdquo; in her lord's eyes than a less clever rival. Of course, information is also valuable to other people as well. More than one oh-so delicate Medraas woman has managed to improve her place in society by having her lord (and usually her female rivals and their children) assassinated. 


''Ruling Caste Culture''
By now it should be apparent that Medraas culture is free-wheeling and if not outright immoral, then at best amoral. It is very reminiscent of 15^^th^^ and 16^^th^^ Century pirate culture. Very narcissistic, very self serving, and often times, very harsh. Like the pirating of old, the glamor is more an illusion than a reality. Daily life is full of the stresses of survival, which often means not only dodging one's enemies and rivals, but simply trying to find sufficient food, fuel, and ammunition to get on another day. Unfortunately, their pathology makes "rescue" or "rehabilitation" at best improbable, and at worst, impossible. 

The life expectancy of a Medraas is 38. Therefore boys become men and girls become women very quickly, usually around puberty. The weak and timid usually do not survive their teens.

''Appearance''
The average height of a Medraas male is 7'. They are broad shouldered and thick chested. The average height of a Medraas female is 5'2". Though the Medraas tend to be fair-haired like their [[Myri]] ancestors, it is not unheard of for them to have black hair. And unlike their [[Myri]] ancestors, they do tend to have at least a //bit// of body hair in the pubic regions and/or under the arms.

In dress and adornment the Medraas tend to be //very// provocative. From the [[Myri]] side comes a general indifference to body modesty. From their human side an understanding of the effects of "immoral displays" on moral societies. One would be hard pressed to find a Medraas who did not bear at least one tattoo; a half a dozen, each of significance and import to the bearer, would be common. Piercings and other body jewelry are equally common, as is hair died in strange colors and cut in provocative ways. The men prefer vests that show off their broad chests and powerful arms. The women spare no time or expense in trying to look as provocative as possible, lest a rival take their place, or an opportunity to gain a scrap of information be lost. 

''Racial Mixing and Interbreeding''
As the Medraas are actual [[Myri]]/human hybrids they can quite readily produce children from either race. They also suffer the same difficulties in reproducing with races their parent races have difficulty with. 


''Nonhuman Abilities''
Medraas males have an average STR=13. Medraas females have an average STR=5 and an average COM=14. While the average INT=10, the upper limit for Medraas seems to be INT=14. All Medraas have the ~PsychLim of pathological criminal."  No other differences or special powers are noted.

''FATE:'' 

* "Medraas <male|female>" Aspect required
* "Criminal Mind" Aspect required
* Suggested Keys:
** The Overlord
** Lust For Power
** The Mercenary
** Hatred
** Bloodlust



''"Average" Medraas package''

''==NONE==''

The average Medraas has a psychological profile that makes them unsuitable as a race for a PC. A half-Medraas, however, might work, depending on concept. A special package would have to be constructed to fit the concept.

!!!!The Surf Caste
The serf caste covers almost everybody else. Members of this caste are not Medraas in the truest sense of the word. They are the descendants of hundreds of years of (mostly male) war captives who were provided Myri women for wives. Many of the first captives were Myri males, so there's a lot of Myri blood in the indentured population, but it's been mixed down by the other human races providing a truly unique mongrel Kapyteyn species of human that has a lower intelligence, and is much more docile than a Terrain human. The men tend to be larger and stronger than the average human, the women tiny and endowed with a more than healthy dose of the Myri female's obsession with reproduction.

In the eyes of the ruling caste, they are almost the perfect breed for keeping the ruling caste fed, watered, and weaponed. Because of this, the serf caste have been exported to virtually every corner of Medraas society to fetch and step and serve even the lowest members of the ruling caste.

!!!!The Outcasts
Found only on [[Kapteyn]], these are people who are neither Medraas nor serf. They are often refugees from the law, are amoral by nature, or who simply like the willing ways of Kapteyn's women (and its &ldquo;laws&rdquo;&mdash;customs would be more accurate&mdash;concerning them), or what have you, so they have made [[Kapteyn]] their home. If they get along with the ruling caste, they may live in the towns and villages; if not, they establish homesteads in the country or wilderness and provide for themselves. On a planet as (relatively) sparsely populated as [[Kapteyn]], it's not hard to disappear. And since there's nothing resembling a real planetary defense system, learning where the holes are in the various gang's orbital monitoring  systems isn't real hard -- if you have the time to figure it out. So coming and going as they please isn't real hard for this caste if they have the means. (A small percentage of this caste have been dumped there. [[Kapteyn]] is a convenient place to get rid of refugees or captives a moral captor doesn't need to kill, but can't let run loose.)
<<foldHeadings closed>>
The meson subspace transceiver (MST) was the first blend of space warp field theory and a practical application of existing meson technology. Basically, the particles ejected by the meson coding accelerator, are then injected into a subspace warp field. As the particles were already moving at near light speed at the time of injection into the envelope, much greater relative velocities can be achieved than with a starship -- though early MST transmissions barely halved transmission delay times //vis a vis// the ship's transit time. It took Vanheim II's MST, six months to get a transmission back to Earth, for instance. Today, however, MST transmission speed is 1 LY/hour.
![[UWP|Universal World Profile]]: Midgard 7309 ~A666844-D A In Ag Ri G910 Im

[img[http://www.rpg-fusion.com/files/ALDE/ALPH_CenA-G-sml.png]]

Midgard, is in the Rigel Kentaurus system -- or `Alpha Centauri' (a tri-star system), as it's better known. Midgard was the first star system settled by humans after [[warpline transit|Warpline Transit]] was discovered. Today it is Midgard that is thought of as the home of humanity, not [[Earth]], though [[Earth]] is far from forgotten.  

The picture above shows a starship in far orbit around Newton, Hawking's moon in the Alpha 2 Centauri (or Rigel Kentaurus B) star system. In the distance Rigel Kentaurus A, where Midgard is located, is also shown.

Discovering an Earth-like planet in this tri-star system was actually quite a boon for humanity. The tri-star system if //full// of natural resources that, with the capability of intersteller travel, were exploitable.

Today not only is Midgard itself inhabited, but there are star stations and mining facilities and resorts and everything else you can think of dotted all over the tri-star system.

In the picture below we've made the short hop (by modern standards) to Midgard itself (shown), and are in far orbit (about as far away as our Moon is from [[Earth]]. Still hidden behind the planet is Imperial Starbase 7309. (For the curious, [[Earth]] is only 1.3 parsecs away.)

[img[http://rpg-fusion.com/files/ALDE/Midgard.png]]
<<gradient vert #ffffff #ffdddd #ff8888>>
For certain, it must be understood right away that ''this is not a four-color campaign!'' Questions of "good" and "evil" and "right" and "wrong" will be raised far more often than they are resolved. (Another Dark Champions feature.) That is not to say they cannot //be// resolved, but rather that I do not see it as my job to dictate those answers. As your GM I //raise// the questions, and may offer (role based) input through ~NPCs, but that's about it. As players it is up to //you// to answer (or leave unanswered) the rather large questions that plague the Empire, and your individual and collective roles in shaping its future.

On the more personal side (if, indeed there //is// a more personal side than the above): Issues of personal morality are also not four-color. A quick gander through [[Races]] will show you that 20^^th^^ (21^^st^^) century human personal (and religious) morality is, for better or worse, the minority position.Every race has its own ideas about right and wrong and good and evil and, if appropriate, "sin." And rarely do they square with those of Earth's //homo sapiens//.

That, in my opinion, is how it should be. Not because our terran morality is "wrong" (or "right"), but because it is intrinsically //human//. To say that human ideas about, say, body modesty are universal would be like saying that the casual brutality of [[Ackálian |Ackálians]] society is universal. Both are the unique expressions of their races. But as to whether they are "right" or "wrong" or "evil" or "sin" you'll have to decide for yourself.

I just wanted to create a interesting and challenging place to game.
<html><style>
#tiddlerMoveablePanelPackage .tagged { display:none; }
#tiddlerMoveablePanelPackage .viewer .content { max-height:999999em; height:auto; overflow:visible; }
</style></html>@@font-size:150%;''"free-range" tiddlers with room to roam...''@@
<<<
@@font-size:90%;line-height:120%;text-align:justify;display:block;<<tiddler QuickStart##badge with: moveable.html>>[[MoveablePanelPlugin]] turns tiddlers and other document content into  '''moveable panels' that can be dragged with the mouse to  //undock// them from their default //anchor points// and reposition them to almost any location on the page -- even far off screen!''  Using moveable panels, your document content can now be spread out over a wide (actually, //infinite//) area, both horizontally and vertically, allowing you to ''quickly create a complete 'web desktop' with different groupings of moveable tiddlers and menus''... all within a single TiddlyWiki document!

No matter where you place the panels, the document extents will ''automatically grow (or shrink) as needed to contain all moveable panels''.  Unfortunately, ''you can only scroll in one direction at a time when using the browser window's separate horizontal and vertical scrollbars'', making navigation between far-flung panels extremely tedious and awkward.  To address this, [[DragScrollPlugin]] allows you to ''scroll the browser window in both the horizontal and vertical directions at the same time, simply by holding down the SHIFT key while dragging the mouse across the page'' until the desired content is scrolled into view.

Of course, once you can move things around, you will want them to //stay there//.  By itself, [[MoveablePanelPlugin]] has no memory and all panels are rendered at their original, docked anchor points each time the document is loaded into the browser.  [[PanelManagerPlugin]] adds the ability to automatically ''track and record each panel's current position and size in a //panel map//, using simple wiki-formatted tables stored in tiddlers''.  The current panel map is also automatically stored as a browser-cookie, so that ''wherever you place a panel, it stays there until you move it again'', even in between document sessions.

[[PanelManagerPlugin]] also adds a popup menu with lots of functions for managing individual moveable panels (e.g., 'bring to front', 'jump to panel', 'dock/undock', etc.) plus a ''powerful, graphical panel map viewer and interactive page navigator'' that allows you to load, save, edit and view //named// panel maps stored in your document.  You can also scroll directly to any panel or other selected page location, anywhere on the page, by using the 'jump to panel' command or ''//compass navigation tool//'' from the Panel Manager popup menu.

You can access the Panel Manager popup map viewer at any time from the <<moveablePanel menu label:[[Panel Manager button (&#x2261;)]]>> that is added to the upper right corner of each undocked panel.  You can also ''open the popup menu from //anywhere// on the page simply by using ALT+CLICK on the //background// of the page'' (i.e., not on a link or other //active// element that could respond to the click!).  This permits access to the Panel Manager commands, even when there are no moveable panels visible on the screen.
@@
<<<
/***
|Name|[[MoveablePanelPlugin]]|
|Source|http://www.TiddlyTools.com/#MoveablePanelPlugin|
|Documentation|http://www.TiddlyTools.com/#MoveablePanelPluginInfo|
|Version|3.0.3|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|move/size any tiddler or page element|
Use the mouse to move/resize any specific tiddler content, page element, or [[floating slider panel|NestedSlidersPlugin]].
!!!!!Documentation
>see [[MoveablePanelPluginInfo]]
!!!!!Configuration
<<<
<<option chkMoveablePanelShowStatus>> show position/size while moving/resizing a panel
<<option chkMoveablePanelShowManager>> automatically add Panel Manager button to undocked panels (see [[PanelManagerPlugin]])
<<<
!!!!!Revisions
<<<
2008.12.24 [3.0.3] added ESC key handling to cancel panel move/size (restores previous panel state)
|please see [[MoveablePanelPluginInfo]] for additional revision details|
2006.03.04 [1.0.0] Initial public release
<<<
!!!!!Code
***/
//{{{
version.extensions.MoveablePanelPlugin= {major: 3, minor: 0, revision: 3, date: new Date(2008,12,24)};
if (config.macros.moveablePanel===undefined) config.macros.moveablePanel={};
//}}}
// // translate
//{{{
// TRANSLATORS: copy this section to MoveablePanelPluginLingoXX (where 'XX' is a language/country code)
if (config.macros.moveablePanel===undefined) config.macros.moveablePanel={};
merge(config.macros.moveablePanel,{

	foldLabel:	'\u2212', // minus
	foldTip:	'FOLD=reduce panel size',
	unfoldLabel:	'+',
	unfoldTip:	'UNFOLD=restore panel size',
	hoverLabel:	'^',
	hoverTip:	'HOVER=keep panel in view when scrolling',
	scrollLabel:	'\u2248', // asymp
	scrollTip:	'SCROLL=allow panel to move with page',
	closeLabel:	'X',
	closeTip:	'CLOSE=hide this panel',
	dockLabel:	'\u221A', // radic
	dockTip:	'DOCK=reset size/position',

	noPid:		'unnamed panel',

	statusMsg:	'%0: pos=(%1,%2)%3 size=(%4,%5) z=%6',
	hoveredMsg:	'[hovering]',
	dockedTip:	'%0: docked',
	scrollMsg:	'%0: pos=(%1,%2)',
	msgDuration:	3000,

	moveTip:	'%0DRAG EDGE=move',
	sizeTip:	'(SHIFT=resize)',
	sizeWidthTip:	'(SHIFT=resize width)',
	sizeHeightTip:	'(SHIFT=resize height)',
	clickTip:	  'CLICK=bring to front, SHIFT-CLICK=send to back',
	dblclickdockTip:  'DOUBLE-CLICK=dock',
	dblclickunfoldTip:'DOUBLE-CLICK=unfold',

	foldParam:	'fold',
	hoverParam:	'hover',
	nocloseParam:	'noclose',
	nodockParam:	'nodock',
	undockedParam:	'undocked',

	jumpParam:	'jump',
	dockParam:	'dock',
	moveParam:	'move',
	labelParam:	'label',
	promptParam:	'prompt',

	allParam:	'all',
	nameParam:	'name',
	topParam:	'top',
	leftParam:	'left',
	widthParam:	'width',
	heightParam:	'height',

	managerParam:	'manager'
});
//}}}
// // global functions (general utilities)
//{{{
// if removeCookie() function is not defined by TW core, define it here (for <TW2.5)
if (window.removeCookie===undefined) {
	window.removeCookie=function(name) {
		document.cookie = name+'=; expires=Thu, 01-Jan-1970 00:00:01 UTC; path=/;'; 
	}
}
if (window.copyObject===undefined) {
	window.copyObject=function(src)	{
		for (var i in src) this[i]=typeof src[i]!='object'?src[i]:new copyObject(src[i]);
	}
}
if (window.compareObjects===undefined) {
	window.compareObjects=function(a,b) {
		if (a===b) return true;
		if (a==undefined||b==undefined) return false;
		for (var i in a) if (typeof a[i]!='object'?a[i]!==b[i]:!compareObjects(a[i],b[i])) return false;
		return true;
	}
}
if (window.isEmptyObject===undefined) {
	window.isEmptyObject=function(src) { for (var i in src) return false; return true; }
}

// cross-browser metrics
window.findMouseX=function(ev)
	{ if (!ev) return 0; return !config.browser.isIE?ev.pageX:(ev.clientX+findScrollX()); }
window.findMouseY=function(ev)
	{ if (!ev) return 0; return !config.browser.isIE?ev.pageY:(ev.clientY+findScrollY()); }
//}}}
// // macro
//{{{
merge(config.macros.moveablePanel,{
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {

		// ALTERNATIVE OUTPUT: Panel Manager macro extensions...
		if (this.manager && this.manager.handler(place,macroName,params,wikifier,paramString,tiddler))
			return; // processed by PanelManager

		// UNPACK KEYWORD PARAMS
		var showfold	 =params.contains(this.foldParam);
		var showhover	 =params.contains(this.hoverParam);
		var showclose	 =!params.contains(this.nocloseParam);
		var showdock	 =!params.contains(this.nodockParam);
		var showmanager  =params.contains(this.managerParam);
		var startundocked=params.contains(this.undockedParam);
		var jump	 =params.contains(this.jumpParam);
		var dock	 =params.contains(this.dockParam);
		var move	 =params.contains(this.moveParam);
		var all		 =params.contains(this.allParam);

		// UNPACK VALUE PARAMS
		params=paramString.parseParams('anon',null,true,false,false);
		var label =getParam(params,this.labelParam,null);
		var prompt=getParam(params,this.promptParam,null);
		var name  =getParam(params,this.nameParam,null);
		var top   =getParam(params,this.topParam,null);
		var left  =getParam(params,this.leftParam,null);
		var width =getParam(params,this.widthParam,null);
		var height=getParam(params,this.heightParam,null);

		// COMMANDS: JUMP, MOVE, DOCK
		if (jump||move||dock) {
			if (!label||!label.length) {
				var p=this.findPanel(name);
				if (jump) { if (p) this.scrollToPanel(p,true); else window.scrollTo(left,top); }
				if (move) { this.movePanel(p,left,top,true,true); }
				if (dock) { if (all) this.forAllPanels(this.dockPanel); else if (p) this.dockPanel(p); }
				return;
			}
			var tip=(jump?this.jumpParam:move?this.moveParam:dock?this.dockParam:'')+': '+name;
			var b=createTiddlyButton(place,label,prompt||tip, function(ev) {
				var cmm=config.macros.moveablePanel; var p=cmm.findPanel(this.name);
				if (this.jump) { if (p) cmm.scrollToPanel(p,true); else window.scrollTo(this.left,this.top); }
				if (this.move) { if (p) cmm.movePanel(p,this.left,this.top,true,true); }
				if (this.dock) { if (p) cmm.dockPanel(p); else if (this.all) cmm.forAllPanels(cmm.dockPanel); }
				return cmm.processed(ev)
			},'button');
			b.jump=jump; b.move=move; b.dock=dock;
			b.name=name; b.all=all;   b.left=left; b.top=top;
			return;
		}

		// PANEL SETUP
		var p=this.getPanel(place);
		this.cachePanel(p);
		addClass(p,'moveablePanel');
		p.pid=name;
		p.showmanager=showmanager;
		p.fixedheight=height||undefined;
		p.fixedwidth=width||undefined;
		this.addPanelButtons(p,showfold,showhover,showclose,showdock,showmanager);
		this.addMouseHandlers(p);
		if (startundocked) {
			this.undockPanel(p);
			if (!startingUp) { this.bringPanelToFront(p); this.scrollToPanel(p); }
		}
		if (this.manager) { this.manager.applyMap(p); this.manager.trackMap(p); }
		this.notify(p);
	},
//}}}
// // notifications
//{{{
	quiet: 0, // flag to suspend/resume notifications
	notify: function(p) { // notify others of panel changes
		if (this.quiet) return;
		if (this.manager) this.manager.notify(p); // pass notices to manager (updates viewers)
	},
//}}}
// // general panel utilities
//{{{
	getPanel: function(place) { // find containing panel or floating slider (use current element as fallback)
		var p=place;
		while (p && !(hasClass(p,'moveablePanel')||hasClass(p,'floatingPanel'))) p=p.parentNode;
		return p||place;
	},
	getAllPanels: function(zSort) { // find 'moveablePanel' elements (optionally sort by zIndex)
		var panels=[];
		var sortByZindex=function(a,b){
			var v1=parseInt(a.style.zIndex); if (isNaN(v1)) v1=0;
			var v2=parseInt(b.style.zIndex); if (isNaN(v2)) v2=0;
			return(v1==v2)?0:(v1>v2?1:-1);
		}
		// if native browser fn is defined, use it (*much* more efficient!)
		if (document.getElementsByClassName) { 
			var elems=document.getElementsByClassName('moveablePanel');
			for (var i=0; i<elems.length; i++) panels.push(elems[i]);
			return zSort?panels.sort(sortByZindex):panels;
		}
		// otherwise, find all DIVs and SPANs with the right class
		// NOTE: IE requires use of Enumerator() to iterate over elements, or it FREEZES UP COMPLETELY!!
		var isIE=config.browser.isIE;
		var elems=document.getElementsByTagName('DIV');
		for (var i=isIE?new Enumerator(elems):0; isIE?!i.atEnd():(i<elems.length); isIE?i.moveNext():i++) {
			var panel=isIE?i.item():elems[i];
			if (hasClass(panel,'moveablePanel')) panels.push(panel);
		}
		var elems=document.getElementsByTagName('SPAN');
		for (var i=isIE?new Enumerator(elems):0; isIE?!i.atEnd():(i<elems.length); isIE?i.moveNext():i++) {
			var panel=isIE?i.item():elems[i];
			if (hasClass(panel,'moveablePanel')) panels.push(panel);
		}
		return zSort?panels.sort(sortByZindex):panels;
	},
	findPanel: function(pid) { // find a named panel
		var p=this.getAllPanels();
		for (var i=0; i<p.length; i++) { if (pid && p[i].pid==pid) return p[i]; }
		return undefined;
	},
	forAllPanels: function(callback) { // invoke a function on each panel
		var panels=this.getAllPanels();
		this.quiet++;
		for (var i=0; i<panels.length; i++) callback.apply(this,[panels[i]]);
		this.quiet--;
		this.notify('all');
	},
	cachePanel: function(p) { // save original styles and handlers
		if (!p.saved) p.saved={ 
			x:p.style.left||'', y:p.style.top||'', w:p.style.width||'', h:p.style.height||'',
			z:p.style.zIndex||'', pos:p.style.position||'', title: p.title,
			mouseover:p.onmouseover, mouseout:p.onmouseout,
			mousedown:p.onmousedown, mousemove:p.onmousemove, dblclick:p.ondblclick
		};
	},
	restorePanel: function(p) { // restore original styles
		if (!p.saved) return;
		p.style.left=p.saved.x; p.style.top=p.saved.y; p.style.width=p.saved.w; p.style.height=p.saved.h;
		p.style.zIndex=p.saved.z; p.style.position=p.saved.pos; p.title=p.saved.title;
		removeClass(p,'folded'); removeClass(p,'hover'); removeClass(p,'undocked');
	},
//}}}
// // panel metrics
//{{{
	getPanelOffset: function(p) { // adjustment for child elements inside relative/floatingPanel containers
		var r=new Object(); r.x=0; r.y=0; if (!p) return r;
		var pp=p.parentNode; while (pp && !(pp.style&&pp.style.position=='relative')) pp=pp.parentNode;
		if (pp) { r.x+=findPosX(pp); r.y+=findPosY(pp); }
		var pp=p.parentNode; while (pp && !hasClass(pp,'floatingPanel')) pp=pp.parentNode;
		if (pp) { r.x+=findPosX(pp); r.y+=findPosY(pp); }
		return r;
	},
	// PROBLEM: the offsetWidth/offsetHeight do not seem to account for padding or borders
	// WORKAROUND: subtract padding and border (in px) from width and height
	// ISSUE: I still don't understand why this is needed...
	// TBD: get padding/border values from p.style and convert to px
	// NOTE: 10.6667 seems to be about 1em...
	getPanelEdgeWidth:
	  	function(p) { return 10.6667; },
	getPanelEdgeHeight:
		function(p) { return 10.6667; },
	getPanelHeight:
		function(p) { var pad=10.6667; var border=1; return p.offsetHeight-(pad*2+border*2); },
	getPanelWidth:
		function(p) { var pad=10.6667; var border=1; return p.offsetWidth -(pad*2+border*2); },
//}}}
// // panel stacking (zIndex)
//{{{
	isStackable: function(p) { // zIndex is only effective with absolute or fixed elements
		return (['absolute','fixed'].contains(p.style.position)&&!hasClass(p,'popup'));
	},
	normalizeStack: function(panels) { // set zIndex to correspond to stack order
		for (var i=0; i<panels.length; i++) {var z=panels[i].style.zIndex;
			if (z==0||z=='auto') continue; // if not stacking (e.g., 'auto', '', or null)
			if (z<10000 || z>10000) continue; // use large values for "always in front/back"
			if (z!=i+2) panels[i].style.zIndex=i+2;
			if (this.manager) this.manager.trackMap(panels[i]);
		}
		return panels;
	},
	bringPanelToFront: function(p) { if (!p) return;
		if (!this.isStackable(p)) return; // can't be stacked
		var panels=this.getAllPanels(true);
// WFFL - normalizing every time works, but takes too long
//		if (p.style.zIndex>panels.length+2) return; // stay in front
//		this.normalizeStack(panels);
//		p.style.zIndex=panels.length+2;
// WFFL - for now, just bump up the max (ignore z>10000) and normalize much less often
		if (p.style.zIndex>1000) this.normalizeStack(panels);
		var zMax=0; if (panels.length) {
			var i=panels.length-1; zMax=parseInt(panels[i].style.zIndex);
			while (zMax>10000 && i>0) zMax=parseInt(panels[--i].style.zIndex);
			if (p==panels[i]) return; // already in front
			if (isNaN(zMax)) zMax=0;
		}
		p.style.zIndex=zMax+1;
		this.notify(p);
	},
	sendPanelToBack: function(p) { if (!p) return;
		if (!this.isStackable(p)) return; // can't be stacked
		var panels=this.getAllPanels(true);
// WFFL - normalizing every time works, but takes too long
//		if (p.style.zIndex<2) return; // stay in back
//		this.normalizeStack(panels);
//		p.style.zIndex=1;
// WFFL - for now, just bump down the min (ignore z<10000) and normalize much less often
		if (p.style.zIndex<1000) this.normalizeStack(panels);
		var zMin=0; if (panels.length) {
			var i=0; zMin=parseInt(panels[i].style.zIndex);
			while (zMin<10000 && i<panels.length-1) zMin=parseInt(panels[++i].style.zIndex);
			if (p==panels[i]) return; // already in back
			if (isNaN(zMin)) zMin=0;
		}
		p.style.zIndex=zMin-1;
		this.notify(p);
	},
	returnPanelToStack: function(p) { if (!p) return;
		p.style.zIndex=p.saved?p.saved.zIndex:'';
		this.notify(p);
	},
//}}}
// // panel scrolling 
//{{{
	noScrollX: 0, // flags to disable TW built-in scrolling behavior
	noScrollY: 0, // set by hijacks, cleared by ensurePanelVisible(), below
	// scroll view to show panel along nearest edge of window or centered (optional)
	scrollToPanel: function(p,center) { if (!p) return;
		if (hasClass(p,'popup')) return; // popup=let core scrolling handle it
		if (hasClass(p,'hover')) return; // hover=always in view=don't scroll
		var scrollSize=findWindowWidth()-document.body.offsetWidth; // width of scrollbar
		var sx=findScrollX();	var ww=findWindowWidth()-scrollSize;
		var sy=findScrollY();	var wh=findWindowHeight()-scrollSize;
		var px=findPosX(p);	var pw=p.offsetWidth;
		var py=findPosY(p);	var ph=p.offsetHeight;
		var nx=sx; var ny=sy; // assume no scrolling is needed
		// if BR is not in view, scroll to show BR
		if (px+pw>sx+ww) nx=px+pw-ww;
		if (py+ph>sy+wh) ny=py+ph-wh;
		// if TL not in view or too big... scroll to show TL
		if (px<nx || px>nx+ww || px+pw>nx+ww) nx=px;
		if (py<ny || py>ny+wh || py+ph>ny+wh) ny=py;
		// optionally, center in view (if panel fits)
		if (center && pw<ww) nx-=(ww-pw)/2;
		if (center && ph<wh) ny-=(wh-ph)/2;
		if (nx!=sx||ny!=sy) { // if we need to scroll...
			window.scrollTo(nx,ny);
			if (config.options.chkMoveablePanelShowStatus && !startingUp) {
				var id=hasClass(p,'tiddler')?p.getAttribute('tiddler'):p.pid;
				this.timedMessage(this.scrollMsg.format([id||this.noPid,px,py]),this.msgDuration);
			}
			this.notify(p);
		}
	},
	// bring to front and scroll into view (with optional ASYNC)
	ensurePanelVisible: function(p,delay) { if (!p) return;
		if (delay && !startingUp) { // wait for core animation to complete...
			if (hasClass(p,'tiddler'))
				p=config.macros.moveablePanel.findPanel(p.getAttribute('tiddler'))||p;
			if (!p.id) p.id=new Date().getTime()+Math.random(); // unique ID
			var code='config.macros.moveablePanel.ensurePanelVisible(document.getElementById("%0"));';
			setTimeout(code.format([p.id]),delay);
			return;
		}
		// unblock scrolling and bring the panel into view
		if (this.noScrollX>0) this.noScrollX--; if (this.noScrollY>0) this.noScrollY--;
		if (hasClass(p,'popup')) return; // leave popups alone!
		this.bringPanelToFront(p);
		if (this.noScrollX+this.noScrollY==0 && !startingUp) // no scroll during document startup
			this.scrollToPanel(p);
	},
//}}}
// // panel status
//{{{
	formatPanelStatus: function(p) {
		var s=p.style; var msg=this.statusMsg.format([p.pid||this.noPid,
			s.left,s.top,hasClass(p,'hover')?this.hoveredMsg:'',s.width,s.height,s.zIndex]);
		return msg.replace(/(\.[0-9]+)|px/g,''); // remove decimals and 'px'
	},
	showPanelStatus: function(p,show) { // display panel info in titlebar while moving/sizing
		if (!config.options.chkMoveablePanelShowStatus) return;
		if (show) document.title=this.formatPanelStatus(p)
		else refreshPageTitle();
	},
	timedMessage: function(msg,duration) {
		document.title=msg; setTimeout('refreshPageTitle()',duration);
	},
	getPanelTooltip: function(p) {
		return hasClass(p,'undocked')?this.formatPanelStatus(p):this.dockedTip.format([p.pid||this.noPid]);
	},
//}}}
// // panel actions
//{{{
	undockPanel: function(p,front) { // undocked with default pos/size
		if (hasClass(p,'undocked')) return; // already undocked
		// get size BEFORE undocking
		p.style.width=p.fixedwidth  ||(this.getPanelWidth(p)+'px');
		p.style.height=p.fixedheight||(this.getPanelHeight(p)+'px');
		addClass(p,'undocked');	if (!this.isStackable(p)) p.style.position='absolute'; // UNDOCK it
		// set position AFTER undocking
		var offset=this.getPanelOffset(p);
		p.style.left=findPosX(p)-offset.x+'px'; p.style.top=findPosY(p)-offset.y+'px';
		if (front) this.bringPanelToFront(p);
		this.notify(p);
	},
	dockPanel: function(p) { // reset to docked pos/size
		if (!hasClass(p,'undocked')) return; // already docked
		this.restorePanel(p); // reset panel
		// FOR FLOATING SLIDERS: trigger slider adjustment handler (if any)
		if (hasClass(p,'floatingPanel') && window.adjustSliderPos)
			window.adjustSliderPos(p.parentNode,p.button,p);
		this.quiet++; if (this.manager) this.manager.trackMap(p); this.quiet--;
		this.notify(p)
	},
	closePanel: function(p) { // dock panel, then close (for tiddlers and floating sliders)
		var t=story.findContainingTiddler(p);
		var isTiddler=t&&this.findPanel(t.getAttribute('tiddler'));
		var isFloating=hasClass(p,'floatingPanel');
		if (!isTiddler) // when closing TIDDLERS, leave them undocked (keeps size/pos)
			this.dockPanel(p);
		// FOR FLOATING SLIDERS: set focus and do a fake click on slider button
		if (isFloating) { p.button.focus(); onClickNestedSlider({target:p.button}); }
		// FOR TIDDLERS: call story.closeTiddler()
		if (isTiddler) { story.closeTiddler(t.getAttribute('tiddler')); }
	},
	movePanel: function(p,x,y,show,centered) { if (!p) return;
		this.quiet++;
		this.undockPanel(p);
		// adjust for child elements inside relative/floatingPanel containers
		var offset=this.getPanelOffset(p);
		p.style.left=x-offset.x+'px'; p.style.top=y-offset.y+'px';
		if (show) { this.bringPanelToFront(p); this.scrollToPanel(p,centered); }
		this.quiet--;
		this.showPanelStatus(p,true);
		if (this.manager) this.manager.trackMap(p);
	},
	foldPanel: function(p) { // toggle panel height
		if (hasClass(p,'folded')) removeClass(p,'folded'); else addClass(p,'folded');
		if (this.manager) this.manager.trackMap(p);
		this.notify(p);
	},
	hoverPanel: function(p) { // toggle fixed position
		if (hasClass(p,'hover')) {
			removeClass(p,'hover');
			var offset=this.getPanelOffset(p);
			p.style.left=p.offsetLeft+findScrollX()-offset.x+'px';
			p.style.top=p.offsetTop+findScrollY()-offset.y+'px';
		} else {
			var offset=this.getPanelOffset(p);
			var ww=findWindowWidth(); var wh=findWindowHeight();
			p.style.left=(p.offsetLeft-findScrollX()+offset.x)%ww+'px';
			p.style.top =(p.offsetTop -findScrollY()+offset.y)%wh+'px';
			addClass(p,'hover'); 
		}
		if (this.manager) this.manager.trackMap(p);
		this.notify(p);
	},
	resetPanel: function(p) { // reset to session starting pos/size
		if (this.manager) this.manager.resetPanel(p); else this.dockPanel(p);
	},
//}}}
// // menu buttons
//{{{
	processed: function(ev) { var ev=ev||window.event; // use to end event handling for menus and mouse actions
		if (ev) { ev.cancelBubble=true; if (ev.stopPropagation) ev.stopPropagation(); } return false;
	},
	addPanelButtons: function(p,showfold,showhover,showclose,showdock,showmanager) {
		if (p.menu) return; // only once per panel
		function cmd(menu,label,tip,callback,show,arg) {
			var fn=function(ev){return this.callback.apply(config.macros.moveablePanel,[this,ev,this.arg]);}
			var b=createTiddlyButton(menu,label,tip,fn,'moveablePanelButton');
			b.style.display=show?'inline':'none'; b.callback=callback; b.arg=arg;
			return b;
		}
		var m=createTiddlyElement(p,'div',null,'moveablePanelMenu');
		p.showfold=showfold;
		p.foldbutton= cmd(m,this.foldLabel,this.foldTip,this.foldHandler,showfold);
		p.unfoldbutton= cmd(m,this.unfoldLabel,this.unfoldTip,this.foldHandler,false);
		p.showhover=showhover;
		p.hoverbutton=cmd(m,this.hoverLabel,this.hoverTip,this.hoverHandler,showhover);
		p.scrollbutton=cmd(m,this.scrollLabel,this.scrollTip,this.hoverHandler,false);
		p.showdock=showdock;
		p.dockbutton= cmd(m,this.dockLabel,this.dockTip,this.dockHandler,showdock);
		p.showclose=showclose;
		p.closebutton=cmd(m,this.closeLabel,this.closeTip,this.closeHandler,showclose);
		p.showmanager=showmanager;
		if (this.manager) p.managerbutton=cmd(m,this.manager.buttonLabel,this.manager.buttonTip,
			this.manager.popup,showmanager,p.pid);
		p.menu=m;
	},
	togglePanelButtons: function(p,show) { if (!p||!p.menu) return;
		var undocked=hasClass(p,'undocked');
		var floating=hasClass(p,'floatingPanel');
		var hover=hasClass(p,'hover');
		var folded=hasClass(p,'folded');
		var t=story.findContainingTiddler(p);
		var tiddler=t&&this.findPanel(t.getAttribute('tiddler'));
		var show=show&&(undocked||floating);
		p.menu.style.display=show?'inline':'none';
		if (p.showfold)  p.foldbutton.style.display  =!folded?'inline':'none';
		if (p.showfold)  p.unfoldbutton.style.display= folded?'inline':'none';
		if (p.showhover) p.hoverbutton.style.display =!hover?'inline':'none';
		if (p.showhover) p.scrollbutton.style.display= hover?'inline':'none';
		if (p.showdock)  p.dockbutton.style.display =undocked?'inline':'none';
		if (p.showclose) p.closebutton.style.display=floating||(tiddler&&undocked)?'inline':'none';
		if (p.managerbutton) { // see [[PanelManagerPlugin]]
			var show=p.showmanager||config.options.chkMoveablePanelShowManager;
			p.managerbutton.style.display=show?'inline':'none';
		}
	},
	foldHandler: function(place,ev){ var p=this.getPanel(place);
		this.foldPanel(p); this.togglePanelButtons(p,true); return this.processed(ev); },
	hoverHandler: function(place,ev){ var p=this.getPanel(place);
		this.hoverPanel(p); this.togglePanelButtons(p,true); return this.processed(ev); },
	dockHandler: function(place,ev){ var p=this.getPanel(place);
		this.dockPanel(p); this.togglePanelButtons(p,true); return this.processed(ev); },
	closeHandler: function(place,ev){ var p=this.getPanel(place);
		this.closePanel(p); this.togglePanelButtons(p,true); return this.processed(ev); },
//}}}
// // mouse handlers
//{{{
	addMouseHandlers: function(p) {
		if (p.handlers) return true; // only add handlers ONCE
		p.onmouseover=function(ev) { var ev=ev||window.event;
			var r=config.macros.moveablePanel.mouseover(this,ev);
			return r&&this.saved.mouseover?this.saved.mouseover.apply(this,arguments):true;
		};
		p.onmouseout=function(ev) { var ev=ev||window.event;
			var r=config.macros.moveablePanel.mouseout(this,ev);
			return r&&this.saved.mouseout?this.saved.mouseout.apply(this,arguments):true;
		};
		p.onmousemove=function(ev) { var ev=ev||window.event;
			var r=config.macros.moveablePanel.mousemove(this,ev);
			return r&&this.saved.mousemove?this.saved.mousemove.apply(this,arguments):true;
		};
		p.ondblclick=function(ev) { var ev=ev||window.event;
			var r=config.macros.moveablePanel.dblclick(this,ev);
			return r&&this.saved.dblclick?this.saved.dblclick.apply(this,arguments):r;
		};
		p.onmousedown=function(ev) { var ev=ev||window.event;
			var r=config.macros.moveablePanel.mousedown(this,ev);
			return r&&this.saved.mousedown?this.saved.mousedown.apply(this,arguments):r;
		};
		p.handlers=true;
	},
	isEdge: function(p,ev) { // near 'edge' of panel (or child element)?
		var ev=ev||window.event; var target=resolveTarget(ev);
		if (!p) return false;
		// ignore form input fields
		if (['input','select','option','textarea'].contains(target.nodeName.toLowerCase())) return false;
		var left=findPosX(p); var top=findPosY(p);
		var width=p.offsetWidth; var height=p.offsetHeight;
		var x=findMouseX(ev); var y=findMouseY(ev);
		if (hasClass(p,'hover')) { x-=findScrollX(); y-=findScrollY(); } // window-relative panel
		if (x<left||y<top||x>=left+width||y>=top+height) { // outside of panel
			if (p==target || p!=this.getPanel(target)) return false;
			return this.isEdge(target,ev); // check target child element
		}
		var edgeW=this.getPanelEdgeWidth(p); var edgeH=this.getPanelEdgeHeight(p);
		var isT=(y-top<edgeH); var isL=(x-left<edgeW);
		var isB=(top+height-y<edgeH); var isR=(left+width-x<edgeW);
		return isT||isL||isB||isR;
	},
	// temporary element during move/size keeps document from shrinking 
	addGhost: function(p) {
		var g=document.getElementById('moveablePanelGhost');
		if (!g) g=createTiddlyElement(document.body,'div','moveablePanelGhost','moveablePanelGhost');
		var border=1; // note: must match CSS for 'moveablePanelGhost' WFFL-HACK
		g.style.left=findPosX(p)+'px';
		g.style.top=findPosY(p)+'px';
		g.style.width=((p.offsetWidth-border*2)||0)+'px';
		g.style.height=((p.offsetHeight-border*2)||0)+'px';
	},
	clearGhost: function() {
		var e=document.getElementById('moveablePanelGhost');
		if (e) e.parentNode.removeChild(e);
	},
	// MOUSEOVER=SHOW MENU
	mouseover: function(place,ev) { var ev=ev||window.event;
		var p=this.getPanel(place);
		addClass(p,'selected'); // shows toolbar-classed items
		this.togglePanelButtons(p,true);
		return true;
	},
	// MOUSEOUT=HIDE MENU
	mouseout: function(place,ev) { var ev=ev||window.event;
		var p=this.getPanel(place);
		removeClass(p,'selected'); // hides toolbar-classed items
		this.togglePanelButtons(p,false);
		return true;
	},
	// MOUSEMOVE=SHOW MENU AND SET CURSOR/TIP
	mousemove: function(place,ev) { var ev=ev||window.event;
		var p=this.getPanel(place);
		p.style.cursor='auto'; p.title=p.saved?p.saved.title:'';
		if (!this.isEdge(p,ev)) return true;
		var fw=p.fixedwidth;  if (fw==null) fw=undefined;
		var fh=p.fixedheight; if (fh==null) fh=undefined;

		p.title=this.moveTip.format([p.pid?p.pid+': ':'']);
		if (fw===undefined&&fh===undefined) p.title+=' '+this.sizeTip;
		else if  (fw===undefined) p.title+=' '+this.sizeWidthTip;
		else if  (fh===undefined) p.title+=' '+this.sizeHeightTip;
		if (hasClass(p,'undocked')) {
			p.title+=', '+this.clickTip+', ';
			p.title+=hasClass(p,'folded')?this.dblclickunfoldTip:this.dblclickdockTip;
		}
		p.style.cursor='move';
		if (ev.shiftKey&&!(fw&&fh)) { // set resizing cursor (if not fixed width/height)
			var left=findPosX(p); var top=findPosY(p);
			var width=p.offsetWidth; var height=p.offsetHeight;
			var x=findMouseX(ev); var y=findMouseY(ev);
			if (hasClass(p,'hover')) { x-=findScrollX(); y-=findScrollY(); } // window-relative panel
			var edgeW=this.getPanelEdgeWidth(p); var edgeH=this.getPanelEdgeHeight(p);
			var isT=(y-top<edgeH); var isL=(x-left<edgeW);
			var isB=(top+height-y<edgeH); var isR=(left+width-x<edgeW);
			p.style.cursor=(fh===undefined?(isT?'n':(isB?'s':'')):'')
				+(fw===undefined?(isL?'w':(isR?'e':'')):'')+'-resize';
		}
		return true;
	},
	// DOUBLE-CLICK=DOCK OR UNFOLD
	dblclick: function(place,ev) { var ev=ev||window.event;
		var p=this.getPanel(place);
		if (!this.isEdge(p,ev)) return true;
		// if folded... unfold, otherwise... undock
		if (hasClass(p,'folded')) this.foldPanel(p); else this.dockPanel(p);
		this.togglePanelButtons(p,false);
		return this.processed(ev);
	},
	// MOUSEDOWN=START MOVE/SIZE, CLICK=BRING TO FRONT, SHIFT-CLICK=SEND TO BACK
	mousedown: function(place,ev) { var ev=ev||window.event;
		var p=this.getPanel(place);

		// CLICK ALWAYS BRINGS TO FRONT
		this.quiet++;
		this.bringPanelToFront(p);
		if (this.manager) this.manager.trackMap(p);
		this.quiet--;
		if (!this.isEdge(p,ev)) return true;

		// start capturing mouse events and set mouse/key handlers
		var target=p; // if 'capture' not supported, track in panel only
		if (document.body.setCapture) // IE
			{ document.body.setCapture(); var target=document.body; }
		if (window.captureEvents) // moz
			{ window.captureEvents(Event.MouseMove|Event.MouseUp,true); var target=window; }
 		if (target.onmousemove!=undefined) target.saved_mousemove=target.onmousemove;
		target.onmousemove=this.dragmove;
		if (target.onmouseup!=undefined) target.saved_mouseup=target.onmouseup;
		target.onmouseup=this.dragstop;
 		if (target.onkeydown!=undefined) target.saved_keydown=target.onkeydown;
		target.onkeydown=this.dragkey;

		// calculate and save drag data in target element
		var x=findMouseX(ev); var left=findPosX(p); var width =p.offsetWidth;
		var y=findMouseY(ev); var top =findPosY(p); var height=p.offsetHeight;
		var sizing=ev.shiftKey;
		var edgeW=this.getPanelEdgeWidth(p); var edgeH=this.getPanelEdgeHeight(p);
		var isT=(y-top<edgeH); var isL=(x-left<edgeW);
		var isB=(top+height-y<edgeH); var isR=(left+width-x<edgeW);
		var d=new Object();
		d.panel=p; d.left=left; d.top=top;
		d.width=this.getPanelWidth(p); d.height=this.getPanelHeight(p);
		d.sizing=sizing; d.edgeW=edgeW; d.edgeH=edgeH;
		d.isT=isT; d.isL=isL; d.isB=isB; d.isR=isR; d.offset=this.getPanelOffset(p);
		d.saved={ x:p.style.left, y:p.style.top, w:p.style.width, h:p.style.height,
			z:p.style.zIndex, pos:p.style.position, classname:p.className };
		target.data=d;
		this.addGhost(p); // keep document from shrinking during move/size
		return this.processed(ev);
	},
	// MOUSEMOVE (during drag)=move/size panel
	dragmove: function(ev){ var ev=ev||window.event; var cmm=config.macros.moveablePanel;
		var d=this.data; var p=d.panel;
		if (!p) { this.onmousemove=this.saved_mousemove?this.saved_mousemove:null; return; }

		cmm.quiet++; // save all notifications until the end...

		// ensure panel is undocked and scrolled into view, THEN get starting mouse and scroll positions
		if (!hasClass(p,'undocked'))
			{ cmm.undockPanel(p,true); if (this.manager) this.manager.trackMap(p); }
		if (d.x===undefined) // first move event only
			{ cmm.scrollToPanel(p); d.x=findMouseX(ev); d.y=findMouseY(ev); }

		// get current mouse pos
		var newX=findMouseX(ev); var newY=findMouseY(ev);

		// calculate new TLWH (start with current panel pos/size)
		var startX=d.x; var startY=d.y; var offsetX=d.offset.x; var offsetY=d.offset.y;
		var L=d.left; var T=d.top; var W=d.width; var H=d.height;
		var newL=L; var newT=T; var newW=p.fixedwidth||W; var newH=p.fixedheight||H;
		if (d.sizing) { // resize panel
			var minW=d.edgeW*2; var minH=d.edgeH*2; // stay bigger than edge areas
			if (hasClass(p,'folded')) this.fold(p.foldButton,ev); // un-fold first!
			if (d.isT) newH=H-newY+startY+1;
			if (d.isB) newH=H+newY-startY+1;
			if (d.isL) newW=W-newX+startX+1;
			if (d.isR) newW=W+newX-startX+1;
			if (d.isT) newT=T-offsetY+newY-startY+1; else newT=T-offsetY; 
			if (d.isL) newL=L-offsetX+newX-startX+1; else newL=L-offsetX; 
			if ((d.isL||d.isR)&&!p.fixedwidth)  newW=(newW>minW?newW:minW);
			if ((d.isT||d.isB)&&!p.fixedheight) newH=(newH>minH?newH:minH);
		} else { // move panel
			newL=L-offsetX+newX-startX+1;
			newT=T-offsetY+newY-startY+1;
		}
		if (hasClass(p,'hover')) { // hover=stay on first screen
			var ww=findWindowWidth(); var wh=findWindowHeight();
			newL+=offsetX; newT+=offsetY; // hover=no relative offset (window-relative)
			// WFFL lower right is off... a bit too far (perhaps scrollwidth?)
			if (newL+newW>ww) newL=ww-newW; if (newT+newH>wh) newT=wh-newH; // limit lower right
			if (newL<0) newL=0; if (newT<0) newT=0; // limit upper left
		} else { // normal floating panel=limit upper left (stay on page)
			if (newL+offsetX<0) newL=0-offsetX; if (newT+offsetY<0) newT=0-offsetY;
		}

		// move the panel and scroll into view as needed
		p.style.left=newL.toString()+'px';
		p.style.top=newT.toString()+'px';
		if (d.sizing) p.style.width=newW.toString()+'px';
		if (d.sizing) p.style.height=newH.toString()+'px';
		cmm.scrollToPanel(p);

		// report new position and notify panel manager... done!
		cmm.quiet--; cmm.showPanelStatus(p,true); cmm.notify(p);
		return cmm.processed(ev);
	},
	dragkey: function(ev){ var ev=ev||window.event;
		var d=this.data; var p=d.panel;
		if (ev.keyCode==27) { // ESC=CANCEL... restore panel to previous pos/size
			p.style.left =d.saved.x; p.style.top   =d.saved.y;
			p.style.width=d.saved.w; p.style.height=d.saved.h;
			p.style.zIndex=d.saved.z;
			p.style.position=d.saved.pos;
			p.className=d.saved.classname;
			return this.onmouseup(ev);
		}
		if (this.saved_keydown) return this.saved_keydown(ev);
	},
	// MOUSEUP: END MOVE/SIZE, SHIFT-CLICK=SEND TO BACK
	dragstop: function(ev){ var ev=ev||window.event; var cmm=config.macros.moveablePanel;
		var newX=findMouseX(ev); var newY=findMouseY(ev);
		if (this.releaseCapture) this.releaseCapture(); // IE
		if (this.releaseEvents) this.releaseEvents(Event.MouseMove|Event.MouseUp); // moz
		this.onmousemove=this.saved_mousemove?this.saved_mousemove:null;
		this.onmouseup=this.saved_mouseup?this.saved_mouseup:null;
		this.onkeydown=this.saved_keydown?this.saved_keydown:null;
		var d=this.data; var p=d.panel;
		if (ev.shiftKey && d.x==newX && d.y==newY && cmm.isEdge(p,ev))
			cmm.sendPanelToBack(p); // SHIFT-CLICK *EDGE*
		cmm.togglePanelButtons(p,true);
		cmm.quiet++; if (cmm.manager) cmm.manager.trackMap(p); cmm.quiet--;
		cmm.clearGhost(); // allow document to adjust extents (if needed)
		cmm.showPanelStatus(p,false); cmm.timedMessage(cmm.formatPanelStatus(p),cmm.msgDuration);
		return cmm.processed(ev);
	},
//}}}
// // CSS definitions
//{{{
	css: '/*{{{*/\n'
		+'.moveablePanelMenu\n'
			+'\t{ display:none; position:absolute; right:.5em; top:-1em; }\n'
		+'.undocked .selected.moveablePanelMenu\n'
			+'\t{ display:inline; }\n'
		+'.floatingPanel .selected .moveablePanelMenu\n'
			+'\t{ display:inline; }\n'
		+'.hover\n'
			+'\t{ position:fixed !important; }\n'
		+'.folded\n'
			+'\t{ height:1.5em !important; overflow:hidden !important; }\n'
		+'.tiddler .folded\n'
			+'\t{ height:2em !important; }\n'
		+'.folded  .moveablePanelMenu\n'
			+'\t{ top:.5em; }	/* buttons fit in folded panel */\n'
		+'.tiddler .moveablePanelMenu\n'
			+'\t{ top:.2em; }	/* buttons fit in tiddler title */\n'
		+'.undocked .toolbar\n'
			+'\t{ padding-right:7.5em; }	/* make room for buttons next to toolbar */\n'
		+'.floatingPanel .moveablePanelMenu\n'
			+'\t{ right:1em;top:1em; } /* buttons fit in floating panel */\n'
		+'.moveablePanelButton\n {'
			+'\tbackground:#ccc !important; color:#000 !important;\n'
			+'\tborder:1px solid #666; padding:0 .25em; margin:0px 1px;\n'
			+'}\n'
		+'.moveablePanelButton:hover\n'
			+'\t{ background:#fff !important; color:#000 !important; }\n'
		+'.popup\n'
			+'\t{ z-index:9999999 !important; } /* popups MUST always be on top!  */\n'
		+'.moveablePanelGhost\n'
			+'\t{ position:absolute; border:1px dotted #999; }\n'
		+'/*}}}*/'
});
//}}}
// // load time initialization
//{{{
// defaults for options
if (config.options.txtMoveablePanelMapName===undefined)
	config.options.txtMoveablePanelMapName='DefaultMap';
if (config.options.chkMoveablePanelShowStatus===undefined)
	config.options.chkMoveablePanelShowStatus=true;
if (config.options.chkMoveablePanelShowManager===undefined)
	config.options.chkMoveablePanelShowManager=true;

// set up shadow stylesheet, then load styles (might be customized)
config.shadowTiddlers.MoveablePanelStyles=config.macros.moveablePanel.css;
var css=store.getRecursiveTiddlerText('MoveablePanelStyles',config.macros.moveablePanel.css,10);
setStylesheet(css,'moveablePanelStyles');
//}}}
// // hijacks
//{{{
// adjust popup placement to account for the current horizontal scrollbar
// offset (if any), so that popups will appear in the correct location, even
// when their 'root' element is scrolled far from the page origin.
var fn=Popup.place; fn=fn.toString(); if (fn.indexOf('findScrollX')==-1) { // only once
	fn=fn.replace(/winWidth\s*-\s*scrollWidth\s*-\s*1/,
		'findScrollX() + winWidth - scrollWidth - 1');
	fn=fn.replace(/winWidth\s*-\s*popupWidth\s*-\s*scrollWidth\s*-\s*1/,
		'findScrollX() + winWidth - popupWidth - scrollWidth - 1');
	eval('Popup.place='+fn);
}
//}}}
//{{{
// window.scrollTo() is used throughout the core (and plugins) to scroll to a *vertical*
// position as computed by ensureVisible(), in order to bring a tiddler into view.
// Unfortunately, the *horizontal* scroll position is almost always hard-coded to 0
// (i.e. a return to the left edge of the page).  Normally, this is not a problem,
// since a page is rarely scrolled horizontally.  However, when there are moveable
// panels, they can appear far from the left edge, so always scrolling to the left
// edge is very disruptive.  In addition, unwanted scrolling can occur as a side
// effect when displaying or refreshing a tiddler (e.g., switching between
// view/edit templates).  These hijacks adds control flags ('noScrollX' and 'noscrollY')
// that can be used to temporarily disable scrolling within the document.
if (window.scrollTo_moveablePanel==undefined) { // only once
window.scrollTo_moveablePanel=window.scrollTo;
	window.scrollTo=function(x,y) {
		var cmm=config.macros.moveablePanel;
		if (cmm.noScrollX&&cmm.noScrollY) return;
		x=cmm.noScrollX?findScrollX():x;
		y=cmm.noScrollY?findScrollY():y;
		window.scrollTo_moveablePanel(x,y);
	}
}
// ensureVisible() is used to calculate the y-offset of a tiddler, just before scrolling
// This tweak sets up an ASYNC timer to invoke the 'bring to front/scroll into view'
// function for 'tiddler' and 'popup' classes.  This allows the function
// to be triggered *after* core scrolling occurs, so the fixups are not
// stomped on by the core's normal scroll handling
if (window.ensureVisible_moveablePanel==undefined) { // only once
	window.ensureVisible_moveablePanel=window.ensureVisible;
	window.ensureVisible=function(e) {
		var ny=ensureVisible_moveablePanel.apply(this,arguments); // get core value

		// fixup height to account for horizontal scrollbar (if present)
		var atBottom=findPosY(e)+e.offsetHeight>=findScrollY()+findWindowHeight();
		var hasHScroll=document.documentElement.scrollWidth>findWindowWidth();
		var hScrollSize=findWindowWidth()-document.body.offsetWidth;
		if (atBottom && hasHScroll) ny+=hScrollSize;

		// defer scrolling for tiddlers and popups (except during startup)
		if (!startingUp && (hasClass(e,'tiddler')||hasClass(e,'popup'))) {
			var cmm=config.macros.moveablePanel;
			cmm.noScrollX++; if (hasClass(e,'tiddler')) cmm.noScrollY++;
			var delay=config.options.chkAnimate?config.animDuration+50:50;
			cmm.ensurePanelVisible(e,delay); // ASYNC SCROLL
		}
		return ny;
	}
}

// story.refreshTiddler()
if (Story.prototype.refreshTiddler_moveablePanel==undefined) { // only once
	Story.prototype.refreshTiddler_moveablePanel=Story.prototype.refreshTiddler;
	Story.prototype.refreshTiddler=function() {
		var cmm=config.macros.moveablePanel;
		cmm.noScrollX++; cmm.noScrollY++; // DON'T SCROLL AT ALL
		var r=this.refreshTiddler_moveablePanel.apply(this,arguments);
		cmm.noScrollX--; cmm.noScrollY--;
		return r;

	}
}
// story.displayTiddler()
if (Story.prototype.displayTiddler_moveablePanel==undefined) { // only once
	Story.prototype.displayTiddler_moveablePanel=Story.prototype.displayTiddler;
	Story.prototype.displayTiddler=function(srcElement,tiddler) {
		var cmm=config.macros.moveablePanel;
//WFFL		cmm.noScrollX++; cmm.noScrollY++;
		var r=this.displayTiddler_moveablePanel.apply(this,arguments);
		var title=(tiddler instanceof Tiddler)?tiddler.title:tiddler;
		var panel=cmm.findPanel(title); // if moveable... unfold panel (but not during startup)
		if (panel&&hasClass(panel,'folded')&&!startingUp) cmm.foldPanel(panel);
		var delay=config.options.chkAnimate?config.animDuration+50:50;
		cmm.ensurePanelVisible(this.getTiddler(title),delay); // ASYNC SCROLL
		return r;

	}
}
//}}}
//{{{
// Zoomer() displays an animated bounding box when showing a tiddler.  But this box 'zooms' to the tiddler's 'anchor point', not the current panel position, which can cause a 'scroll blink'.  This hijack redirects the zoomer's target directly to the undocked panel (if any)
if (window.Zoomer_moveablePanel==undefined) { // only once
	window.Zoomer_moveablePanel=window.Zoomer;
	window.Zoomer=function(text,startElement,targetElement,unused) {
		if (hasClass(targetElement,'tiddler')) {
			var tid=targetElement.getAttribute('tiddler');
			arguments[2]=config.macros.moveablePanel.findPanel(tid)||targetElement;			
		}
		return window.Zoomer_moveablePanel.apply(this,arguments);
	}
}
//}}}
/***
|Name|MoveablePanelPluginInfo|
|Source|http://www.TiddlyTools.com/#MoveablePanelPlugin|
|Documentation|http://www.TiddlyTools.com/#MoveablePanelPluginInfo|
|Version|3.0.3|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|documentation for MoveablePanelPlugin|
Adds move/resize mouse handling plus fold/unfold, hover/scroll, and close/dock buttons to any rendered tiddler content, page element, or [[floating slider panel|NestedSlidersPlugin]].
!!!!!Usage
<<<
Please see [[MoveablePanelPackage]] for a general overview of features as well as information about other plugins and tiddlers associated with installation and use of moveable panels.
{{{
<<moveablePanel>>
<<moveablePanel undocked fold hover noclose nodock manager name:... width:... height:...>>

<<moveablePanel move label:... prompt:... name:... top:... left:...>>

<<moveablePanel jump label:... prompt:... name:... >>
<<moveablePanel jump label:... prompt:... top:... left:... >>

<<moveablePanel dock label:... prompt:... name:... >>
<<moveablePanel dock label:... prompt:... all>>
}}}
Without any parameters, the {{{<<moveablePanel>>}}} simply adds the 'moveable panel' mouse handling and button commands to a containing element that has been marked with a CSS class of 'moveablePanel' (e.g., """{{moveablePanel{...}}}""") or 'floatingPanel' (created by [[NestedSlidersPlugin]]) .  If no containing 'moveablePanel' or 'floatingPanel' element is located, the panel handlers are added directly to the element in which the macro is contained.

__Optional macro parameters are:__
*''undocked''<br>by default, a moveable panel is rendered inline ('docked'), and only floats in front of other content ('undocked') after the user has moved it from it's 'anchor point'.  The ''undocked'' keyword indicates that the panel should be be immediately 'undocked' and brought to the front of the 'stack' of undocked panels as soon as it is rendered.
*''fold''<br>adds the fold/unfold (-/+) button
*''hover''<br>adds the hover/scroll (^/=) button
*''noclose''<br>supresses the close (X) button
*''nodock''<br>supresses the dock (&radic;) button
*''manager''<br>forces the Panel Manger button to always appear in the panel, regardless of the option setting (see below)
*''name:...''<br>specifies a unique identifier for the panel, to be used by the ''menu'', ''move'', ''jump'', or ''dock'' functions described below, as well as by the (optional) [[PanelManagerPlugin]] to create //panel maps// that track and record the size and position of named panels, so that they can remain where you put them, even in between browser sessions.
*''width:...''<br>specifies a fixed-width for the panel (using CSS dimensions).  This prevents horizontal resizing.
*''height:...''<br>specifies a fixed-height for the panel (using CSS dimensions).  This prevents vertical resizing.

In addition to adding panel handlers to a containing element, the macro can also be used to invoke several panel-specific actions, either immediately, or by clicking on an embedded command link:
*''dock''<br>returns a named panel to it's original anchor point.
*''jump''<br>scrolls the window to view a named panel or go to the specified (top,left) location on the page.  To dock all panels at once, the ''all'' keyword can be used instead of specifying a ''name:...'' parameter.
*''move''<br>moves the named panel to the specified (top,left) location on the page.
Note: when using ''dock'', ''jump'', or ''move'', if the ''label:...'' parameter is omitted, the action is performed immediately upon rendering the macro.  Otherwise, a command link is created using the specified ''label:...'' and (optional) ''prompt:...'' values.

__Mouse handling:__
When the mouse is just inside the edges of a moveable panel, the cursor will change to 'crossed-arrows'.  Grab (click-hold) the panel anywhere in the edge area and then drag the mouse to reposition it.  To resize the panel, hold the ''shift'' key before grabbing the panel: the cursor will change to a 'double-arrow' resizing symbol.  Drag a side edge of the panel to stretch horizontally or vertically, or drag a corner of the panel to stretch in both dimensions at once.  Double-clicking the edge of a panel resets it to its original 'docked' size and location.  Clicking (anywhere) in a moveable panel brings it to the top of the 'zIndex' stack (if overlapping with other panels).  Shift-click (along an edge) sends the panel to the back.

__Panel buttons:__
When the mouse is anywhere over a panel (not just near the edge), a special 'panel menu' appears in the ''upper right corner'' of the panel, with the following command buttons:
* &minus;/+ (fold/unfold): ''fold'' temporarily reduces the panel height to just one line.  ''unfold'' restores the panel height.
*^/= (hover/scroll): ''hover'' causes the panel to remain in view (i.e., 'fixed position') even when scrolling the rest of the page content.  ''scroll'' allows the panel to revert to scrolling with the page content (the usual behavior)
*X (close): ''close'' hides a panel from the page display.  If you have moved/resized a panel, closing it restores its default position and size.
*&radic; (dock): When a moveable panel has actually been moved from its default position, the ''close'' command is replaced with ''dock'', which restores the tiddler to its default //non-floating// location on the page.
*&#x2261; (manager): If [[PanelManagerPlugin]] is installed, this button provides instant access to the entire Panel Manager popup menu and interactive, graphical panel map viewer.

__Adding panel handlers to all tiddlers__
You can apply {{{<<moveablePanel ...>>}}} to //all// tiddlers by customizing the [[ViewTemplate]] definition to wrap the entire tiddler layout within a span that invokes the macro.  To uniquely name each moveable tiddler panel (i.e., so its position/size will be remembered by the Panel Manager), you can use a 'computed parameter' to dynamically assign the tiddler's title as the value of the 'name:...' parameter, like this:
{{{
<div class='moveablePanel'>
	... rest of tiddler layout template (i.e., everything from the normal ViewTemplate)
	<div macro='moveablePanel name:{{tiddler?tiddler.title:""}} height:auto'></div>
</div>
}}}
//Note: reference to 'tiddler.title' in this way requires installation of TiddlyTools'// [[CoreTweaks##444]] or use of TW2.5 (not yet available)
<<<
!!!!!Configuration
<<<
<<option chkMoveablePanelShowManager>> automatically add<<moveablePanel menu label:[[Panel Manager Popup Menu]]>>in undocked panels
{{{<<option chkMoveablePanelShowManager>>}}}
<<option chkMoveablePanelShowStatus>> show position/size while moving/resizing a panel
{{{<<option chkMoveablePanelShowStatus>>}}}
<<<
!!!!!Revisions
<<<
2008.12.24 3.0.3 added ESC key handling to cancel panel move/size (restores previous panel state)
2008.12.20 3.0.2 addGhost()/clearGhost(): shows panel outline during move/size (prevents document from shrinking until move/size is done)
2008.12.15 3.0.1 handling for 'hovered' elements: adjust for fixed vs. absolute (no relative offsets, no scroll offsets), translate movement to top-left screen, restrict movement within screen bounds
2008.12.10 3.0.0 total rewrite: extensive code refactoring and improved event handling for cross-browser compatibility, manage zIndex 'stacking' of panels, added shadow tiddler for customizable CSS, named panels, macro commands for embedding jump, dock, or move command links, complete I18N/L10N-readiness, {{{ensureVisible()}}} 'fixups' for horizontal scrolling, and hooks for optional [[PanelManagerPlugin]] (panel map 'memory' and interactive graphical viewers)
2008.11.17 2.6.0 added optional 'height:...' and 'width:...' macro params for fixed size dimensions (use 'height:auto' for moveable tiddlers).  Added CSS for moveablePanelMenu and moveablePanelButton styles (for easier customization)
2008.11.16 2.5.2 small fixes to mouseover/isEdge() handling.  some code cleanup as well
2008.11.15 2.5.1 changed stored panel data format to be compatible with Project Cecily map format (space-separated, strip decimals and 'px').  Also, moved slider-specific adjustPanel() logic into [[NestedSlidersPlugin]].
2008.11.12 2.5.0 more major code changes (lots of event handling fixes and code refactoring)
2008.11.09 2.4.0 major re-write to fix mouse event handling issues and isEdge() logic for nested moveable panels
2008.11.06 2.3.0 added CLICK/SHIFT-CLICK for 'move to top / return to stack' panel zIndex handling
2008.11.03 2.2.0 automatically store/recall position/size of named panels using a cookie and/or tiddler
2008.09.11 2.1.2 corrected caching of transient attribute (use =='true' to convert string to boolean)
2008.01.08 [*.*.*] plugin size reduction: documentation moved to ...Info tiddler
2007.12.30 2.1.0 added 'noedges' option for alternative 'grab handles' (top=move, bottom-right=resize)
2007.12.17 2.0.0 code reduction and feature cleanup: when the macro is not in a floating panel, it will make it's containing element moveable.  Removed 'maximize' functionality (which was badly broken), and replaced it with 'double-click=DOCK' (resets size/position without hiding panel). Use hasClass() test function to allow additional classes to be used with moveable floating panels (to apply extra custom CSS styles).
2007.06.10 1.3.7 in handler(), mouse event handlers now use apply() to correctly invoke any previous mouse handler functions.  Also, clear the existing 'snap panel back to button location' mouseover/out event handlers for floating panels (defined by NestedSlidersPlugin).  Extends fix from v1.3.5. 
2007.06.08 1.3.6 in getPanel(), remove unneeded check for 'moveable' tag.  Also, added support for 'noclose' macro param, and updated documentation accordingly.
2007.06.02 1.3.5 in handler(), remove onmouseover handler from NestedSlider button elements, to prevent automatic 'snap to original location' behavior.  This allows *moveable* floating panels to maintain their placement when they have been manually re-positioned.  This change is made for compatibility with [[NestedSlidersPlugin]] use of onmouseover (see entry for version 2.0.4)
2006.10.17 1.3.4 when moving panel, adjust position for relative containing DIV
2006.05.25 1.3.3 in closePanel(), use p.button.onclick() so that normal processing (updating slider button tooltip, access key, etc.) is performed
2006.05.11 1.3.2 doc update
2006.05.11 1.3.1 re-define all functions within moveablePanel object (eliminate global window.* function definitions (and some 'leaky closures' in IE)
2006.05.11 1.3.0 converted from inline javascript to true plugin
2006.05.09 1.2.3 in closePanel(), set focus to sliderpanel button (if any)
2006.05.02 1.2.2 in MoveOrSizePanel(), calculate adjustments for top and left when inside nested floating panels
2006.04.06 1.2.1 in getPanel(), allow redefinition or bypass of 'moveable' tag (changed from hard-coded 'tearoff')
2006.03.29 1.2.0 in getPanel(), require 'tearoff' tag to enable floating tiddlers
2006.03.13 1.1.0 added handling for floating tiddlers and conditional menu display
2006.03.06 1.0.2 set move or resize cursor during mousetracking
2006.03.05 1.0.1 use 'window' vs 'document.body' so mousetracking in FF doesn't drop the panel when moving too quickly
2006.03.04 1.0.0 Initial public release
<<<
[<img[http://rpg-fusion.com/files/ALDE/Multichronometer.jpg]] ''Description:'' An important device, but one often overlooked by those who have never left their home planet. This time piece sets itself in one planetary rotation, to local zero meridian time, local solar time, and local sidereal time. A setting allows for automatic time zone corrections (as the user travels from time zone to time zone) according to world size. The multichronometer also keeps Imperial Standard Time.

The sidereal and zero meridian times are mainly of interest to astronomers and navigators, giving them the spin plane of the world, its year length, and other information.

''Cost:'' 250 Denarii
In stark contrast to their subterranean counterparts, the gentle Myri live their comparatively simple lives on the surface of [[Durakaan]] (and other planets they now inhabit), indirectly guided by the Duranaki or other more sophisticated races.

It should be pointed out that the vast majority of the Myri are not slaves. Perhaps only 1 in 100 Myri youths on any planet the [[Duranaki]] inhabit or visit will be taken for conditioning. (The same cannot be said for other planets not under Imperial rule, however. There are places where the Myri are mercilessly exploited.) The rest live as Imperial Proletarians under the applicable laws of the Jarhaad Council.

It should also be stated that this is not an oppressive relationship, at least, not as the Myri see it. From the Myri point of view, they exist as a race today because of the ruler-ship of the [[Duranaki]], and owe much, if not all that they own, to the [[Duranaki]]'s wise leadership.

Part of this rather simplistic seeming view may stem from the fact that the Myri are a race that is somewhat limited in its intellectual development, or as some scientists have dubbed it, the Myri suffer from "persistent racial conceptual torpidity." In other words, they seem to have reached a plateau in brain development that has not changed in millennium. Their ability to deal with abstract concepts is very limited, as is evident by the culture's art, music, and social construction, which has changed little among the Myri in thousands of years.

This makes the Myri very nearly the perfect proletarians. If one is predisposed to believe in a god or gods, one would think that the deity engineered the Myri from the beginning for just such a need. In factories, foundries, in the fields, in processing plants, in construction work one would be hard pressed to find a better worker.

This might explain why they are less than angry when one of their children is taken by the [[Duranaki]]. They lack the imagination to understand the myriad of ways an enslaved child could be abused. Too, the gentle Myri trust the [[Duranaki]], and most other races that approach them kindly, implicitly. 

These facts about the Myri now being widely known, more and more races are exploiting the gentle Myri. Others are seeking to protect them from abuse. Though scientists outside The Empire have yet to duplicate the [[Duranaki]] conditioning process, other ways have been found to take advantage of the Myri's limited intelligence, gentleness, and native loyalty to those who treat them well. Others say any use of the Myri that does not fairly compensate them for their labors is racial exploitation that must be stopped.


!Political Structure

The Myri are usually quite content to follow whatever political structure exists in the culture they are living. On [[Durakaan]] and throughout [[The Empire]] they are subject to Imperial Law as part of the Proletariat. When no government exists they usually fall back on a clan-based tribal society, with each tribe led by elders. Central government, such as it is, is usually simply a meeting of the elders of the families living in the colony several times a year.

!Social Structure

The old Myri social structure has universally given way to a simplified form of the [[Duranaki]] social system due to eons of ruler-ship by the [[Duranaki]]. Marriage is a bond to a clan and tribe, not to a specific individual. Whether the man marries into the woman's clan or the woman into the man's is a matter negotiated between the individuals involved and the elders of the two clans. Once married into the clan, the new spouse is considered married to every other man or woman in the clan, and is encouraged to produce children by as many of them as possible.

 While women are considered equal to men socially and politically, their primary job in society is seen as the producing and rearing of young. And in truth, due to their diminutive size, they're suitable in the simple Myri agrarian culture for little else. Too, a pregnant female is a thing of beauty to a Myri, a woman not pregnant is a woman desiring to become so -- which is really not too far from the truth. Shortly after menarche, Myri females go into what can only be described as a mild "heat," and will stay in this condition until they conceive. Within a few months of weening a baby, the condition will return. The cycle will continue throughout the woman's child-bearing years.

Obviously, given this social and biological structure the Myri reproduce at a ferocious rate. The birth rate is not hurt by the fact that left to their own devices they use neither birth control, nor do they abstain from sexual activity. This is no doubt partly due to the pheromones the women emit when in heat, and partly due to the natural attraction both sexes have for pregnant females. This can be readily seen in their art, and entertainment. (If they had such things, a Myri commercial wouldn't feature a slender, elfin like semi-naked info babe pushing a product; it would feature an obviously pregnant attractive semi-naked -- or totally naked, as the Myri are not body conscious -- info babe pushing the product.) So pronounced is their fetish for pregnant women that female entertainers often *fake* the pregnant look to appear more sexy.

!Law Enforcement

As in politics, law enforcement is provided by whomever is in political power. In [[The Empire]], the [[Thavan]] provide the law enforcement, and conditioned Myri slaves make up a portion of that organization. On [[PAC]] member planets planetary and interplanetary governments are free handle planetary law enforcement in any manner they wish, and Myri follow along as they normally do.

In colonies where the Myri are the sole or (in the rare event that they) are the ruling race of a colony, they resort to the simple expedient of using their elders as judges, or the council of elders if a crime was committed against another clan or tribe. The laws are normally enforced by all adults as necessary. Obviously this doesn't work very well when populations grow large and races are mixed. But the Myri have considerable trouble managing complex police organizations and so usually transfer control to another race, even if they make up a much smaller percentage of the population, and let their government handle the complex business of administration.

!Dress and Appearance

Blond haired and blue-eyed, Myri men are a powerfully built individuals of amazing size. The men range from 6'2" to 7'0" in height, their weight usually between 200 and 300 lbs. -- all of it muscle. The women seem the reverse. At 5' in height and around 90 lbs., they are very petite and weak (compared to the men). With lovely hour-glass figures when not pregnant, Myri women tend to have larger breasts and wider hips than a [[human]] female of the same size. The men are beardless and tend to allow their hair to grow until it gets in the way; thus most have mop-like cuts which grow to just above the eyebrows, over the ears, and on to the neck in back. Myri women take more care, and often braid their hair in attractive ways.

Clothing is utilitarian. A simple tunic reaching to mid-thigh seems the universal "uniform". In colder weather a heavier tunic is worn as are pants. In hot weather it is not uncommon for the Myri to simply disrobe; thus during warm weather Myri are usually uniformly tanned.

Makeup and jewelry are "special day" things for the Myri. Even then, in stark contrast to the [[Duranaki]], their use is sparse and limited.

!Interracial Mixing and Interbreeding

Another stark contrast to the [[Duranaki]], the Myri seem capable of breeding with almost anything and everything even nominally human -- except for their [[Duranaki]] sister race on [[Durakaan]]. The [[Duranaki]] and Myri cannot interbreed, even with help! [[Human]]s and Myri quite readily reproduce. (See the [[Medraas]].)

!NonHuman Abilities

Max EGO 5; (Male) MAX PRE 5; Min COM 16; (Male) Min STR 16, Max 24; (Female) Avg STR 0; (Female) Seduction 11-.

''FATE:'' Myri <male|female> Aspect required; Seduction skill required; Pacifist Key required

The following are minimums:

* Endurance-1
* Strength-2

!"Average" Myri Package

''==NONE==''

A full blooded Myri does not have the intelligence to be a productive part of a PC group, though half-bloods of various mixes certainly do.
These plugins help make it easier to navigate within a TiddlyWiki document.  They provide several different ways to interact with your document to search, explore, and display specific tiddlers of interest and then rearrange/fold those tiddlers, save/restore 'stories' (lists of displayed tiddlers), or quickly back-track to previously viewed tiddlers, even after closing them!
/***
|Name|NestedSlidersPlugin|
|Source|http://www.TiddlyTools.com/#NestedSlidersPlugin|
|Documentation|http://www.TiddlyTools.com/#NestedSlidersPluginInfo|
|Version|2.4.9|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|show content in nest-able sliding/floating panels, without creating separate tiddlers for each panel's content|
!!!!!Documentation
>see [[NestedSlidersPluginInfo]]
!!!!!Configuration
<<<
<<option chkFloatingSlidersAnimate>> allow floating sliders to animate when opening/closing
>Note: This setting can cause 'clipping' problems in some versions of InternetExplorer.
>In addition, for floating slider animation to occur you must also allow animation in general (see [[AdvancedOptions]]).
<<<
!!!!!Revisions
<<<
2008.11.15 - 2.4.9 in adjustNestedSlider(), don't make adjustments if panel is marked as 'undocked' (CSS class).  In onClickNestedSlider(), SHIFT-CLICK docks panel (see [[MoveablePanelPlugin]])
|please see [[NestedSlidersPluginInfo]] for additional revision details|
2005.11.03 - 1.0.0 initial public release.  Thanks to RodneyGomes, GeoffSlocock, and PaulPetterson for suggestions and experiments.
<<<
!!!!!Code
***/
//{{{
version.extensions.NestedSlidersPlugin= {major: 2, minor: 4, revision: 9, date: new Date(2008,11,15)};

// options for deferred rendering of sliders that are not initially displayed
if (config.options.chkFloatingSlidersAnimate===undefined)
	config.options.chkFloatingSlidersAnimate=false; // avoid clipping problems in IE

// default styles for 'floating' class
setStylesheet(".floatingPanel { position:absolute; z-index:10; padding:0.5em; margin:0em; \
	background-color:#eee; color:#000; border:1px solid #000; text-align:left; }","floatingPanelStylesheet");

// if removeCookie() function is not defined by TW core, define it here.
if (window.removeCookie===undefined) {
	window.removeCookie=function(name) {
		document.cookie = name+'=; expires=Thu, 01-Jan-1970 00:00:01 UTC; path=/;'; 
	}
}

config.formatters.push( {
	name: "nestedSliders",
	match: "\\n?\\+{3}",
	terminator: "\\s*\\={3}\\n?",
	lookahead: "\\n?\\+{3}(\\+)?(\\([^\\)]*\\))?(\\