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

.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]];}
.readOnly {background:[[ColorPalette::TertiaryPale]];}

#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:0; top:0;}

.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:0 3px 0 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:0; padding-bottom:0;}

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

.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>>
//''Recap:'' [[Chamber of Missteps]] session, [[Nikkel|NikkelCharacterSheet]] enters the first chamber after studying the Watchers movements, only to climb down behind one she had not seen. She dispatches it quickly and makes her way to the conveyor belt platform just as the hover cart pushes off to unknown locations. She found a control panel and hoped she could force the next cart to depart before it was actually full. Unfortunately, another Watcher shows up and drivers her off the platform and destroys the panel in the process. She lands hard, but relatively unharmed until the Watcher leapt on her and pierces her shoulder with it's taloned foot. She forced the machine off, but in doing so hurts herself further. Now on the ground, face to face with the Watcher...//

!!!INT: A BLUE GLOWING MECHANICAL CAULDRON
<<<
''Watcher'' (Troublesome) ''[X] [X] [X] [  ] [  ] [  ] [  ] [  ] [  ] [  ]''
''Nikkel'' Edge:3, Iron:1, Heart:2, Shadow:2, Wits:1
Momentum: +5, Health: +2, Spirit: +2, Supply: +0 (Unprepared)
<<<
Unable to draw her bow, NIKKEL eyes the //Watcher// carefully as the blood from her shoulder begins to soak into her wool shirt under her leather armor. She had never had such a difficult time taking machines before, especially this kind. Doubt began to take hold. She attempts to shake it of, and goes for her spear as she backs up...
<<<
__''Secure An Advantage:''__
''Action'' | ''[8]'' ([6]+2 Adds: Heart)
''Challenge'' | ''[6] / [10]''
''Result'' | Weak Hit: your advantage is short-lived or you face a danger or complication. Envision what happens (Ask the Oracle if unsure), and take +1 Momentum. (Momentum now +5)
//I'll rule she only gets part of what she wants; some space, but not her spear out.//
<<<
She clears a few paces back as she goes for the spear. The spear haft slides though her bloodied hands as she tried to pull it from it's straps. The //Watcher// swishes it's tail, lunges, and come at her.

Unable to draw her bow, NIKKEL eyes the //Watcher// carefully as the blood from her shoulder begins to soak into her wool shirt under her leather armor. She had never had such a difficult time taking machines before, especially this kind. Doubt began to take hold. She attempts to shake it of, and goes for her spear as she backs up...
<<<
__''Face Danger:''__
''Action'' | ''[5]'' ([2]+3 Adds: Edge)
''Challenge'' | ''[3] / [6]''
''Result'' | Weak Hit: you do it, but encounter a minor cost, complication, or delay. Envision what happens, and suffer -1 Momentum, Health, Spirit, or Supply as appropriate to the circumstances.  (Momentum now +4)
//I'll rule she only gets part of what she wants; some space, but not her spear out.//
<<<
Nikkel sees the machine's advance and sidesteps it's charge as she finally clears the spear from it's holder. It passes just inches from her, whirling about abruptly with the failed attack. Having only one hand on the spear, she tucks the shaft under her armpit like a lance as slices, twisting her torso with as much strength as she can muster.
<<<
__''Clash:''__
''Action'' | ''[4]'' ([3]+1 Adds: Iron)
''Challenge'' | ''[2] / [9]''
''Result'' | Weak Hit: inflict your Harm, but then Pay the Price. Your foe has initiative. 
''Watcher'' (Troublesome) ''[X] [X] [X] [X] [X] [X] [X] [X] [X] [  ]''
//Really starting to wonder if she is going to make it out of the Chamber alive...//
__''Pay The Price''__
''Result'' | 14; Something of value is lost or destroyed!
//The spear!?//
__''Turn The Tide''__
''Result'' | Steal initiative, gain +1, and take +1 Momentum (Momentum now +5) //I am going to assume I can add the +1 to the Progress here?//
__''End The Fight''__
''Progress'' | ''[10]''
''Challenge'' | ''[1] / [6]''
''Result'' | Strong Hit: this foe is down.
<<<
As she swipes with the spear, the //Watcher// steps inside her guard and the shaft the spear smashes into the shoulder of the machine.

(Crack!)

The head of the spear goes flying over the back of the //Watcher// even as the blow stands the machine straight up with the impact. Feeling the handle shatter even as the vibration of the impact ripples up her arm, Nikkel steps in even closer and drives the foot long piece of shaft forcefully up into what would normally be considered the jaw of a living beat.

(Pop!)

An audible sound rings true and she knows she has it even before the life leaves it's blue eye. It shudders and falls, and with it her. Flat on her back she still clutches to the spear handle impaled in the machines head.

Lying there, her surrounding seem surreal as she watches the next cart pull up to the platform above. The now unmistakable sound of another //Scrapper// unloading onto the belt barely registers. Slowly she released her grip on the shaft and rolled to her side, her shoulder sending a spike of pain up her neck as she did. If she groaned, she did not know. Pressing up she rose to her feet. She had taken down two of six //Watchers// and there was no telling how many //Scrappers// were about waiting their turn to extrude their shavings onto the conveyor belt.

She took a few tender steps, the haze and adrenaline starting to wear off, and retrieved her bow.

She had a choice to make. She looked back to the ledge that she had climbed down from, and then from there to the platform. Her head slumped heavily. For a long moment she stood behind the platform mulling her options, then finally her head raised. She would face whatever came her way, she was an appointed //Seaker//. Her decision final, she knocked an arrow to her bow, dreading having to draw it, and moved quietly around the base of the platform.
<<<
__''Face Danger:''__
''Action'' | ''[5]'' ([3]+2 Adds: Shadow)
''Challenge'' | ''[2] / [4]''
''Result'' | Strong Hit: you do what you set out to, and take +1 Momentum. (Momentum now +6)
<<<
The //Scrapper// was gone that she heard previously and she reached the top of the platform without incident. Not stopping, she toppled over into the cart and waited, her back resting in the corner of the cart. It seemed to take forever as she waited, unable to manually activate the propulsion arms. Periodically she would have to squirm herself on top of the next load of shavings that were dumped.

Finally the arms lowered and pushed the cart with a lurch onward along the path. She road in silence as the cart rose and fell with the unevenness of the cavern ceiling. She watched uneasily as the blue octagonal wall of energy got closer and closer. She would have to drop out of the cart at just the right moment to land on the rock outcropping. She tried to gauge the speed and distance of the drop... She had to be precise.
<<<
__''Face Danger:''__
''Action'' | ''[4]'' ([1]+3 Adds: Edge)
''Challenge'' | ''[1] / [7]''
''Result'' | Weak Hit: you do it, but encounter a minor cost. //Wow... Dang all the '1's!//
<<<
She pulls herself up onto the side of the cart. Her strength seemed to fade with every moment. Rather than jumping, as she had hoped to do, she rolled out, her body falling like a rag-doll.

NIKKEL
(Surrendering)
All Mother, be with me.

She lands hard on the rock outcropping (//-1 Health, Health now +1//). Her body tumbles and the rolls, coming to rest nest to the wall of the cavern.
<<<
__''Endure Harm:''__
''Action'' | ''[6]'' ([5]+1 Adds: Both Iron and Health are at +1)
''Challenge'' | ''[2] / [2]''
''Result'' | Strong Hit & Match: choose one. //-1 Momentum for +1 Health//
<<<
Her eyelids closes, the world still spinning around her.

FADE OUT

!!!INT: A BLUE GLOWING MECHANICAL CAULDRON

NIKKEL's eyes flicker and she sits up, resting her back to the wall. She doesn't know how long she was out, but she looked down at her shoulder. She knew the blood had dried and clotted. She could feel her wool tunic stuck to it even when she moved. There was that, and she had made it to the ledge, she thought.

//Taking a progress on The Linn Pass journey and stopping there tonight. A headache threatens to crack my skull open...//
''Journey:'' The Linn Pass
[X] [X] [X] [X] [X] [  ] [  ] [  ] [  ] [  ]
//''Recap:'' [[Fire Burn and Cauldron Bubble]] session, [[Nikkel|NikkelCharacterSheet]] continued on up The Linn Pass. She attempted to resupply but didn't fair well. Cresting the top, and expecting to start the decent, she discovered that the trail ended at a Cauldron. I am retroactively taking an advancement on the "Find Aloy’s Focus and Punish the Thief!" vow. Once for clearing the rise and discovering the Cauldron and second for making the discovery that the thieves needed the Focus to get into it. The first may be a bit cheesy, but an "Extreme" vow may have been a tad above my anticipation.//

!!!INT: A BLUE GLOWING MECHANICAL CAULDRON
NIKKEL stops, realizing that the echoing of her booted foot falls may alert others to her presence. She pulls off her pack and digs within it to find something to muffle the noise...
<<<
__''Secure An Advantage:''__
''Action'' | ''[8]'' ([6]+2 Adds: Shadow)
''Challenge'' | ''[1]/[3]''
''Result'' | Strong Hit; I choose to: Take control: Make another move now (not a progress move); when you do, add +1
<<<
She finds some pieces of soft leather patches and cordage. She sets about lashing it to the bottom of her boots to muffle the sound. Satisfied she secures her pack, stows her spear, knocks an arrow to her bow string, and continues on.
<<<
__''Face Danger:''__
''Action'' | ''[4]'' ([1]+2+1 Adds: Shadow, Secure An Advantage)
''Challenge'' | ''[2]/[7]''
''Result'' | Weak Hit; I choose to: //Burn my Momentum. Tired of hording it and I don't want to take any further hits to my stats right now. So Strong Hit, zeros Momentum to +2, take a +1 Momentum for the Strong hit, so Momentum now +3.//
<<<
<<<
__''Undertake A Journey:''__
''Action'' | ''[6]'' ([5]+1 Adds: Wits)
''Challenge'' | ''[5]/[9]''
''Result'' | Weak Hit;  you reach a waypoint and mark progress, but suffer -1 Supply. //She is out of Supplies!//
<<<
<<<
__''Journey:''__ The Linn Pass
''[X] [X] [X] [X] [X] [  ] [  ] [  ] [  ] [  ]''
Formidable (*) 
<<<
<<<
__''Out of Supplies:''__
''Result'' | -1 Spirit in lieu of the -1 Supply! Spirit now +2.
<<<
As she continues on the temperature within the Cauldron begins to rise, absently she reaches down for her waterskin. Her brow furrows as the realization comes to pass that she had just drained it just outside. Disheartened she licks her lips, slides the waterskin back under her belt, and in a crouch continues on.

(CLICK... CLICK... CLICK...)

A mechanical clicking sound reaches Nikkel's ears. She crouches lower as she realizes that the triangular tunnel she is moving through opens up just a few meters to her front. Almost on her belly, the entrance she has taken opens at a cliff to a large chamber of rock, stone, and mechanical machinery. 

NIKKEL
(Quietly to herself she wonders)
What is this place?

<<<
__''Gather Information:''__
''Action'' | ''[4]'' ([3]+1 Adds: Wits)
''Challenge'' | ''[3]/[6]''
''Result'' | Weak Hit; the information complicates your quest or introduces a new danger. Envision what you discover (Ask the Oracle if unsure) and take +1 Momentum. Momentum now +4.
<<<
Some twenty feet below her dim blue florescent lights illuminated the cavern opening. Here and there she saw the blue lighted eyes of Watchers bobbing and moving about. At least five in total moved about the cavern floor, searching and watching for anything out of the ordinary.
[img[Watcher|https://vignette.wikia.nocookie.net/horizonzerodawn/images/0/04/Watcher-Render.png/revision/latest/scale-to-width-down/310?cb=20170623042110]]
As she scanned across the expanse, she identified the noise that had triggered her caution. The clicking was coming from a long conveyor belt that ran from the floor up to a platform, where it dumped it's contents into hovering carts that appeared to follow rails suspended from the ceiling. 

She watched as a Scrapper regurgitated metal shavings onto the belt. Almost as it completed, another Scrapper emerged from the shadows from her left and moved toward the conveyor belt. Finished, the first turned and loped off in the direction that the second had come from. She had wondered what the Scrapper had done with all the machine carcases that they had ground up. Now she knew, but she was no closer to knowing or understanding why.

[img[Scrappers|https://vignette.wikia.nocookie.net/horizonzerodawn/images/e/e3/Scrapper-Render.png/revision/latest/scale-to-width-down/310?cb=20170623042955]]

Full now, the cart at the top of the conveyor belt platform floated off along the rail, propelled by two mechanical arms that came down from the ceiling on either side of the cart, the ends of which had large round discs on the end of them that hummed and lit up as they seemed to push the cart forward as if by magic.

A look of wonder mixed with fear passed over Nikkel's face. She watched the cart move along the ceiling to the far side of the cavern where it passed through another triangular opening on the far wall. The opening, glowed a brighter blue and had a honeycomb pattern within it. She did not know how she knew, but she knew she couldn't pass through it even though the cart had. On closer observation, she did notice that there was a small outcropping of stone just outside and slightly below where the cart disappeared through the glowing wall...

NIKKEL
(Again, quietly to herself)
That is the only other way they could have gone...
But how do I get there from here?

<<<
//Daughter in to visit, so this seems like as good a place to stop as any.//
<<<
//''Recap:'' [[Cavern of the Cauldron]] session, [[Nikkel|NikkelCharacterSheet]] finds an entrance to what she discovers is a Cauldron at the end of the The Linn Pass. She gains entry and muffles her foot falls with makeshift pads for her boots to sneak in and have a look around. She comes to a large underground chamber, bathed in a mechanical fluorescent blue light. Guarded by //Watchers//, //Scrappers// enter and leave, dumping their ground metal shavings onto a conveyor belt that halls the scrap up to a platform where it is dumped into hovering 'mining carts', which is transfered out of the chamber through another opening on the far side.//

!!!INT: A BLUE GLOWING MECHANICAL CAULDRON
NIKKEL studies the ''Watcher's'' paths. She knew from experience that machines, for whatever reason, tended to figure out a path and would stick to it until something, or someone, caused them to alter their routine.
<<<
__''Secure An Advantage:''__
''Action'' | ''[6]'' ([5]+1 Adds: Wits)
''Challenge'' | ''[10] / [10]''
''Result'' | Miss & Match: you fail or your assumptions betray you. Pay the Price.
//I just switched to physical dice from a dice App, go figure!//
<<<
She feels like she has a pretty good idea of the path and timing of the five //Watchers// below and secures her bow and spear to her back. She will need both hands free to descend to the stone floor of the large chamber. She lowers herself over the edge...

Slowly she climbs down the rock face, occasionally looking over her shoulder at the chamber below, keeping one eye out for foot and hand holds and the other on the //Watchers.// The //Watchers// had a rhythm, but //Scrappers// had no such rhyme. She had just hoped for the best where they were concerned.

Just feet from the bottom, she dropped. Landing silently she turned, and there before her, just feet away, with it's back to her stood a sixth //Watcher// that she had missed. It's head swiveled left, then right, and left again as if it sensed something was amiss.

(Swoomp... Swoomp... Swoomp...)

He could hear the servo motors go as it's head moved about. That's when she decided, it was now or never. In a flash she vaulted over a nearby stalagmite...
<<<
__''Face Danger:''__
''Action'' | ''[6]'' ([3]+3 Adds: Edge)
''Challenge'' | ''[1] / [3]''
''Result'' | Strong Hit: you do what you set out to, and take +1 Momentum (Momentum Now +5)
<<<
Even as she cleared the small rock cropping, she lowered herself and pressed her back to it. She heard the //Watcher// turn.

(Clank... Click... Clank... Click...)

Its metallic claws making noise as it did on the stone. She tried to slow her breathing, but it was hard, the additional machine had caught her off guard and her timing was thrown off because of it. It took a few steps and stood, right where Nikkel had landed as if it could feel her presence.\

She glanced around attempting to reacquire the others she had lost in the start... She focused on the conveyor belt, then the landing, and finally the hover carts that transported the raw metal the //Scrappers// brought. He path was clear, but could she make it with so many unknowns!? She had to try...

She picked up a small fist sized rock at her feet and flung it sidearm, out were the latest //Watcher// was watching when she landed. Hearing the clatter of the stone, she hear it turn.

(Click... Clank... Swoomp... Swoomp...)

And off she sprang, keeping low and to the shadows as best she could, retrieving her spear as she moved...
<<<
__''Face Danger:''__
''Action'' | ''[3]'' ([1]+2 Adds: Shadow)
''Challenge'' | ''[3] / [8]''
''Result'' | Miss: you don’t do it. Pay the Price.
<<<
Even as she took her first steps she knew her plan did not succeed.

(Skeeeek!)

She heard it call out.

(Clank. Clank. Clank. Clank)

It's metaled claws sang out as it pursued her. She turned in an instant, spear at the ready...
<<<
__''Enter The Fray:''__
''Action'' | ''[5]'' ([4]+1 Adds: Wits)
''Challenge'' | ''[1] / [9]''
''Result'' | Weak Hit: Choose one: Take initiative.
''Watcher'' (Troublesome) ''[  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ]''
<<<
The machine, at a sprint now, was bearing down on her fast. She barely had a moment to set her spear to the charge, bracing it against her foot and the floor...
<<<
__''Strike:''__
''Action'' | ''[6]'' ([5]+1 Adds: Iron)
''Challenge'' | ''[5] / [6]''
''Result'' | Weak Hit: inflict your Harm and lose Initiative. 
''Watcher'' (Troublesome) ''[X] [X] [X] [X] [X] [X] [  ] [  ] [  ] [  ]''
<<<
The blade of the spear struck true, catching the charging //Watcher// just between were the neck went into the torso and the shoulder. Sparks flew and it's head flailed, but the force of the charge staggered Nikkel as well, knocking her off balance. She wished for range and her bow, as she was a much better with it than a spear, but fortune did not present her such an option.

She tried to whirl, moving with the impact, in the hope to gain a thrust at the machine's side. They clashed...
<<<
__''Clash:''__
''Action'' | ''[7]'' ([6]+1 Adds: Iron)
''Challenge'' | ''[1] / [4]''
''Result'' | Strong Hit: inflict your Harm and choose one: bolster your position: Take +1 Momentum. (Momentum Now +6)
//I am SO much more appreciating the physical dice over the Dice Roller App I was using!!//
''Watcher'' (Troublesome) ''[X] [X] [X] [X] [X] [X] [X] [X] [X] [X]''
<<<
<<<
__''End The Fight:''__
''Progress'' | ''[10]''
''Challenge'' | ''[4] / [4]''
''Result'' | Strong Hit & Match: this foe is down AND none the other //Watchers// any wiser!
<<<
The spear once again struck true, cutting deeply into what would be the ribcage of the machine, as she drove it into the stalagmite she had used for cover. The light faded from it's eye, and it's neck slumped. She lowered the machine to the floor, even as she squatted and looked around for additional threats herself. 

None came. Nikkel took out the //Watcher// quickly and quietly enough that none of the others took notice. She pulled her spear free, and no longer restricted to a confined space, she switched it out with her bow.

Now to just make it to the other side...

//I am going to make a Face Danger roll to get to the top of the conveyor belt platform and then another to catch a ride on a cart.//
<<<
__''Face Danger:''__
''Action'' | ''[3]'' ([1]+2 Adds: Shadow)
''Challenge'' | ''[2] / [9]''
''Result'' | Weak Hit: you do it, but encounter a minor cost, complication, or delay. Envision what happens, and suffer -1 Momentum, Health, Spirit, or Supply as appropriate to the circumstances. (Momentum seems logical: Momentum Now back to +5)
<<<
Nikkel crept toward the conveyor belt, scanning diligently as she moved. A lone //Scrapper// was unloading it's haul onto the belt as she approached. It did not notice her, it's programming keeping it focused, at least for now, on it's sole objective. It turned and loped off, into the darkness.

Nikkel began to ascend the conveyor belt even as the shards of steel that the //Scrapper// had dropped ascended with her. Even as she reached the top, the hovering cart she had hoped to garner a ride from filled and lurched as the the propulsion arms came down and sent it on its way.

She was transfixed by the sight. Kneeling as she was on the platform, she was going to be exposed waiting on another cart to arrive and then for it to be filled... she looked around the platform as she saw the motion of the next cart coming into view. She needed something, something that would get her off this platform and on her way as soon as possible!
<<<
__''Secure An Advantage:''__
''Action'' | ''[7]'' ([6]+1 Adds: Wit)
''Challenge'' | ''[3] / [10]''
''Result'' | Weak Hit: your advantage is short-lived or you face a danger or complication. Envision what happens (Ask the Oracle if unsure), and take +1 Momentum. (Momentum now +6)
<<<
She notices a small panel on the edge of the platform. Moving, she discovers that it appeared to be some form of manual override, which she hoped would cause the cart to continue on without requiring it to be full.

(Clank... Click.. Clank... Click...)

Another //Watcher// was moving up the catwalk beside the conveyor belt! She crotched low, next to the panel, quickly drawing her bow in one fluid motion as she did...
<<<
__''Face Danger:''__
''Action'' | ''[4]'' ([1]+3 Adds: Edge)
''Challenge'' | ''[6] / [8]''
''Result'' | Miss: Pay the Price! (Roll on Table: 23, You are separated from something or someone.) //The most obvious thing to be separated from would be the platform or the panel... I'll work that in somehow.//
<<<
//Taking some liberties with this part, but it fits the narrative I have in mind.//
The //Watcher's// glowing blue eye cleared the platform edge. Nikkel loosed her arrow as it did, missing it by only a fraction of an inch! The machine's head rose as it discovered her, and it came at her in a rush, plowing into her and the panel. The force of the impact sheered off the panel and sent Nikkel toppling off the landing. She fell...landing fifteen feet or so below on the hard floor of the chamber with a thud. The air was knocked out of her lungs. Her vision swirled. 

//One Harm, Health now +4//
<<<
__''Endure Harm:''__
''Action'' | ''[5]'' ([1]+4 Adds: Health)
''Challenge'' | ''[6] / [6]''
''Result'' | Miss & Match: you also suffer -1 Momentum. If you are at 0 Health, you must mark Wounded or Maimed (if currently unmarked) or roll on the following table. (Momentum now +5)
<<<
Even as she regained her faculties she saw the machine perched above her, ready to strike... She could do nothing but watch what was to come. //Ruling the Match precludes her from taking any advantage on the following roll.//
<<<
__''Enter The Fray:''__
''Action'' | ''[7]'' ([6]+1 Adds: Wits)
''Challenge'' | ''[7] / [10]''
''Result'' | Miss: combat begins with you at a disadvantage. Pay the Price. Your foe has initiative.
''Watcher'' (Troublesome) ''[  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ]''
<<<
It did not hesitate. It leapt from the platform, legs outstretched, talons spread wide. It crashed into Nikkel as it landed, one taloned claw embedded in her shoulder. The pain was excruciating and she yelled out, pinned to the ground by the heavy metal monstrosity.

//One Harm, Health now +3//
<<<
__''Endure Harm:''__ 
''Action'' | ''[5]'' ([2]+3 Adds: Health)
''Challenge'' | ''[6] / [7]''
''Result'' | Miss: you also suffer -1 Momentum. If you are at 0 Health, you must mark Wounded or Maimed (if currently unmarked) or roll on the following table. (Momentum now +4)
<<<
The //Watcher// lifted it's other leg, claw flexing as it prepared to drive it home. Nikkel, scrambling to survive brought up both her legs between it's own and kicked with all she had...
<<<
__''Clash:''__
''Action'' | ''[6]'' ([5]+1 Adds: Iron)
''Challenge'' | ''[2] / [9]''
''Result'' | Weak Hit: inflict your harm, but then Pay the Price. Your foe has initiative. //Unarmed damage: 1 Harm//
''Watcher'' (Troublesome) ''[X] [X] [X] [  ] [  ] [  ] [  ] [  ] [  ] [  ]''
<<<
The force of her upward kick sent the //Watcher// flying backward into the platform's base. The crunch and grinding of some internal mechanization could be heard as it struck. It landed back on it's feet, and Nikkel paid dearly for the maneuver. As the machine was forced back, it's claw ripped from her flesh, opening the wound further as it did.

Nikkel knelt on one knee, panting, clasping her shoulder with her free hand...

//One Harm, Health now +2//
<<<
__''Endure Harm:''__
''Action'' | ''[8]'' ([6]+2 Adds: Health)
''Challenge'' | ''[3] / [9]''
''Result'' | Weak Hit: You press on. //Death spiral with this Health score anyone!?//
<<<
She managed to regain her feet clumsily before the fracas was renewed... 

//Wow, after all this and I may lose Nikkel to a series of Troubling enemies? And I thought the physical dice would help! But hey, have to leave it there for the time being...//

.
1
2
3
4
5
6
1
2
3
4
5
6
7
8
9
10
! Session Title

[img[SessionImage|https://worldofukarea.files.wordpress.com/2018/01/hzd-banuk-hunters-female.jpg?w=604]]

''Words ahg gaeihoihj[ao9ergjo agoihojajergo  o;agijjpoijgrao joj avoaoijo agr agoijhgoaierhoi arog9h 99 jga[r9horahjo9jar[g9o hjo9a er ga p9hpafh[049[3  \\a ahfrahgg32lknfag o auf p8q3lkih o;w {{menubox{ufpou 98uo}}} awjf;lij;lihf ff blah blah blah la fricken blah ''

{{menubox{TEST}}}

<<<
__''Move Name:''__ Descriptor
''Action | [4]'' ([2]+1+1 Adds: add1, add2, etc)
''Challenge | [6]/[2]''
''Result | Weak Hit''; Definition
//Personal thoughts on the Move//
<<<
<<<
__''Journey:''__ The Linn Pass
''[X] [X] [X] [&nbsp; ] [&nbsp; ] [&nbsp; ] [&nbsp; ] [&nbsp; ] [&nbsp; ] [&nbsp; ]''
[&nbsp; ] Troublesome (***), [&nbsp; ] Dangerous (**), [X] Formidable (*), [  ] Extreme (+), [&nbsp; ] Epic (/)
<<<

<<<
__''Move Name:''__ Descriptor
''Action'' | [4] ([2]+1+1 Adds: add1, add2, etc)
''Challenge'' | [6]/[2]
''Result'' | Weak Hit; Definition
<<<
<<<
[[Intro]]
[[Home Page]]
//''Recap:'' [[An Unintended Rest]] session, [[Nikkel|NikkelCharacterSheet]] crossed the first chamber of the Cauldron by lowering herself down to the floor of the large chamber, where she quickly dispatched a machine she had not accounted for prior to her discent. Working her way over to the conveyor belt platform she climbed up, hoping to catch a ride across the expanse in a hover cart. She was immediately set upon by another machine. This Watcher wounded her shoulder and pushed her from the platform. Finally defeating it when it leapt down, but not before it sunk its talons into her. Exhausted she finally made it to a cart and road across, only to have to plummet from it to the far ledge. Unconscious from the wound and fall, Nikkel now comes to, some time later...//

!!!INT: A BLUE GLOWING MECHANICAL CAULDRON
<<<
''Nikkel'' Edge:3, Iron:1, Heart:2, Shadow:2, Wits:1
Momentum: +6, Health: +2, Spirit: +1, Supply: +0 (Unprepared)
__''Journey:''__ The Linn Pass
[X] [X] [X] [X] [X] [  ] [  ] [  ] [  ] [  ]
<<<
Seated on the floor, back against the wall on a ledge yards above the floor, Nikkel looked around the large expanse of the large chamber and its mechanical blue ambiance. She tried to reflect on the proceeding few days. 'Had it only been just?' she thought to herself. In just a matter of days her life seemed to have changed course, thrusting her onto a new vector she did not plan for, and now, not prepared for it would seem. She was out of supplies, hurt, and her resolve was waining.

She stuck her hand under her armor and felt at the dry clotted tunic beneath. While she slept it had stuck to the wound from the //Watcher// she fought earlier...

At that thought she looked around quickly. It wasn't a dream as she had hoped, she had lost her spear. Her head sank from the realization. She did not want to press on, nor did she want to go back. Both represented a destination in her life that she did not desire to see come to fruition. Forward, she was i'll prepared, behind, she was... 

Nikkel shook her head lightly, "No, I must go on. I am a Seeker. Appointed by Nisus, the village elder, and blessed by The All Mother," she said weakly to no one.

Almost as a discovery, she realized her hand was still within her armor groping at the tunic. She new she couldn't pull it free or it would reopen the wound, at least not while it was dry, but she also remarked that she had no water. She removed her hand and used it to get to her feet. She needed many a thing, but water seemed to be the most pressing. She began walking along the ledge, hoping she would find something that would renew her.

<<<
//I faltered between 'Gather Information' and 'Secure An Advantage'. I resolved that this is assessing the situation more than a direct search, so will go with 'Secure An Advantage' and since it is all heart, will roll with that as the add.//
__''Secure An Advantage:''__
''Action'' | ''[8]'' ([6]+2 Adds: Heart)
''Challenge'' | ''[5]'' / ''[5]''
''Result'' | Strong Hit & Match:Take control: Make another move now (not a progress move); when you do, add +1 
//I'll say she finds something, but not sure what. I could ask the Oracle, but I'll go with 'Gather Information' instead.//'
__''Gather Information:''__
''Action'' | ''[4]'' ([2]+2 Adds: Will and Secure An Advantage hold)
''Challenge'' | ''[2]'' / ''[8]''
''Result'' | Strong Hit & Match: the information complicates your quest. Take +1 Momentum (Momentum now +6)
//It could complicate her journey, but I think/feel that her 'quest' at the moment is more of survival than pushing on with the 'journey', so I'll complicate that.//
<<<
As she traversed the ledge, she realized  it ran around approximately a quarter of the far wall from where she entered the cauldron chamber. Following it around into the shadow she discovered that, running vertically and perpendicular to the ledge, were three steel pipes. The were not much larger in diameter than her upper arm. She touch all three in turn. They were cool to the touch, but the third vibrated slightly. She pressed her ear to the pipe and was excited to hear what sounded like flowing water. 

She looked up and down the pipe. It came out of the stone wall just above her knee, ran up some twenty feet and returned back into the wall. She noticed a small nodule down near the lower elbow. She bent to examine it. It appeared to have been some form of valve previously, many years ago, but now it was missing any way to turn it. Nikkel cursed, she had found what may be water, but she had no way of getting to it. 

Nikkel looked around the ledge, almost panicked. She took several strides and found a rock, just slightly larger than the palm of her hand. She tested its weight. 'Maybe', she thought, and strode back to the pipe. She looked at the pipe again and then down at the floor of the chamber. Machines were still roaming about, more set in routine, but oblivious to her. She looked back at the pipe, "Until I start beating on this," she said.

Caution prevailed, for only a moment, before she struck with all the might she had left.

(CLANG! CLANG! CLANG!)

Echoed the sound of rock being hammered against the old steel pipes...
<<<
//I realized the narrative options even after I wrote the above. There were other options, she could have muffled the sound by covering the pipe, but her desperation must have rubbed off on me and overcome my own ability to game the system. Cool.//
__''Secure An Advantage:''__
''Action'' | ''[4]'' ([3]+1 Adds: Iron - definitely an aggressive action!)
''Challenge'' | ''[5]'' / ''[7]''
''Result'' | Miss: you fail or your assumptions betray you. Pay the Price
//Balls!//'
<<<
On the third strike the old pipe gave way to the force and resilience of the stone and Nikkel's efforts. Fluid began to spray out from a small hole she had made in the pipe at the joint. 

She dropped the stone and stuck her cupped hand out into the stream. Something was amiss. It was not clear like water. It had a yellowish color and was tinted with a rusty orange color. She brought the liquid up to her face. Nikkel perceived a strong sweet smell. She un-cupped her hands and let the liquid fall to the ground, whatever it was she could not risk drinking it. Her shoulders slumped and any sense of relief fled her expression as quickly as it came.
<<<
//I was hoping for a Resupply, all I got out of that was -1 Spirit. Spirit now +1.
And my free time has came to and end...//
//''Recap:'' [[Food For Thought]] session, [[Nikkel|NikkelCharacterSheet]] discovered a scene of carnage and followed the blood to a cave were she finds a dying Banuk Huntress. Her search discovers that the Huntress had a memento from Meddle woven into her hair. Leaving the cave, she discovers that the scene was most likely caused by a giant Snow Leopard, which she quickly dispatches. Following the fight, she continues on up The Linn Pass, stopping shortly and noting she was short on supplies (+1 Supply).//
<<<
__''Journey:''__ The Linn Pass
''[X] [X] [X] [X] [  ] [  ] [  ] [  ] [  ] [  ]''
Formidable (*) //Damn you +1 Wits!//
<<<
!!!EXT: IN THE PASS HALF WAY? - MID MORNING. EARLY SPRING, 3059
NIKKEL finished and stood, glancing at her pack and taking note of her dwindling supplies, then looked further up the pass. She felt she was probably halfway up the ascent, but knew that it could very well be deceiving her. Indecision shown on her face. Should she search for food and water? Probably, but every delay put her target that much further in front of her...
<<<
__''Ask The Oracle:''__ Will Nikkel stop to resupply? Likely.
''Roll'' | ''[46]''
''Result'' | Yes! //I really didn't want to ask this personally, as I just wanted to push on, but realistically she was likely to do it.//
<<<
Nikkel left her pack at the edge of the pass and secured her weapons. Preferring the bow over the spear as she ventured out into the wooded side of the mountain...
<<<
__''Resupply:''__
''Action'' | ''[2]'' ([1]+1 Adds: Wit)
''Challenge'' | ''[4]/[10]''
''Result'' | Miss; you find nothing helpful and must Pay the Price.
<<<
!!!EXT: IN THE PASS HALF WAY? - LATE MORNING. EARLY SPRING, 3059
NIKKEL spent the better part of the morning searching for food and water, with no luck. The lack of game should have been apparent considering the Snow Leopard prowled nearby, but she was pretty disappointed in not finding any water. As she ascended, the air was thinner and was starting to take its toll on her due to dehydration. She knew better, but disheartened she gathered what she had and pack secured, pressed on...
//-1 Spirit, Now 3//
<<<
__''Undertake A Journey:''__
''Action'' | ''[6]'' ([5]+1 Adds: Wit)
''Challenge'' | ''[2]/[10]''
''Result'' | Weak Hit;  you reach a waypoint and mark progress, but suffer -1 Supply. (Now 0!)
<<<
<<<
__''Journey:''__ The Linn Pass
''[X] [X] [X] [X] [X] [  ] [  ] [  ] [  ] [  ]''
Formidable (*)
<<<
Nikkel rounded a switchback in the pass and it leveled out. A look of utter surprise feel across her face. Before her the pass just ended in the side of the mountain. She had assumed that it would climb a bit further and then perhaps start down the other side of the mountains. Where it ended a large triangular shape was inset into the stone of the side of the mountain. Unconsciously she pulled her waterskin from her belt and drained it. The surprise was quickly replaced by the realization of what she had done. Perhaps it was the altitude, or the strange shape in the side of the mountain, but she regretted finishing off the last of her water just as soon as she swallowed the last bit.
<<<
__''Out Of Supply:''__
''Result'' | Mark Unprepared. If you suffer additional -Supply while Unprepared, you must exchange each additional -Supply for any combination of -Health, -Spirit or -Momentum as appropriate to the circumstances.
<<<
She stuck the empty water skin up under her belt, hefted her spear and advanced toward the inset triangle. As she moved forward she scanned to her left and right. Snow more prevalent now, it crunched beneath her feet. She did notice tracks in the snow before her and they had preceded her to the odd shape. She moved about the shape and tried to make out what it was, and what it meant...
<<<
__''Gather Information:''__ What is this triangular shape inset into the mountain?
''Action'' | ''[3]'' ([2]+1 Adds: Wit)
''Challenge'' | ''[3]/[6]''
''Result'' | Miss; your investigation unearths a dire threat or reveals an unwelcome truth that undermines your quest. Pay the Price.
<<<
With the realization of what she had discovered, curiosity got the better of Nikkel.

NIKKEL
(Amazed)
A Cauldron, I thought...

She rested her hand upon the stone face of the entrance...

[img[Cauldron|https://vignette.wikia.nocookie.net/horizonzerodawn/images/1/19/Erik-van-helvoirt-cauldron-prop-02.jpg/revision/latest/scale-to-width-down/640?cb=20170704173439]]

as she did the triangle center split into two smaller triangles and retracted back into the mountain.

NIKKEL
(Shocked)
I have heard of these...
Why would Meddle come here? And how did they figure out how to open it!

She wondered out loud. Blue light within the walls of the triangular entrance illuminated it with a mechanical glow that gave her pause and caused the hairs on her neck to stand up on end. She new from the tails told of Aloy, that that the cauldrons were difficult to breach, and now here before her, one just seems to open of it's own accord...

NIKKEL
(Realizing)
Ah, the Focus. They needed it to enter... but why?

She took a few pensive steps into the opening. The echo of her booted foot falls echoing as she did.

//Going to have to leave it there unfortunately. Meds are kicking in...//
//''Recap:'' Nikkel has began her journey up The Linn Pass East of Mother's Heart in search of Aloy's stolen Focus, the thief, Meddle, and a cure for the Braves back at the village. Part way up the pass she found a Banuk Huntress in a cave who died shortly after finding her from wounds she received out in the pass. She had a memento of Meddle's in her possession. Exiting the cave, Nikkel runs nearly headlong into a giant Snow Leopard!//
<<<
__''Journey:''__ The Linn Pass
''[X] [X] [X] [  ] [  ] [  ] [  ] [  ] [  ] [  ]''
[  ] Troublesome (***), [  ] Dangerous (**), [X] Formidable (*), [ ] Extreme (+), [  ] Epic (/)
<<<

[img[SessionImage|https://upload.wikimedia.org/wikipedia/commons/thumb/1/19/Snow_leopard_portrait.jpg/220px-Snow_leopard_portrait.jpg]]

!!!EXT: IN THE PASS OUTSIDE THE CAVE - EARLY MORNING. EARLY SPRING, 3059
NIKKEL readies herself, not sure what to expect from the giant Snow Leopard. They weren't unheard of in The Expanse, but they were rare. She remains facing the threat but begins backing up, continuing up the pass backwards.
<<<
__''Ask The Oracle:''__ Will the Snow Leopard attack? Likely.
''Roll'' | ''[26]''
''Result'' | Yes! //Just missed it by 1 point//
<<<
As she does, the Snow Leopard stalks forward at first, then lunges into a sprint. Her heart begins to race...
<<<
__''Enter The Fray:''__ Combat with the Snow Leopard begins.
''Action'' | ''[7]'' ([5]+2 Adds: Heart)
''Challenge'' | ''[6]/[7]''
''Result'' | Weak Hit; Take Initiative.
<<<
<<<
__''Snow Leopard:''__ Dangerous (**)!
''[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]''
<<<
The cat is much larger and faster than she anticipates. It is on her in a blink of an eye. She sidesteps and thrusts with her, even as the leopard arches and swipes with its off paw.
<<<
__''Strike:''__ Combat with the Snow Leopard begins.
''Action'' | ''[8]'' ([5]+3 Adds: Iron)
''Challenge'' | ''[1]/[5]''
''Result'' | Strong Hit; inflict +1 harm (3 Harm at 2 Progress each for Dangerous equals 6 total Progress). You retain initiative.
<<<
<<<
__''Snow Leopard:''__ Dangerous (**)! 
''[X] [X] [X] [X] [X] [X] [ ] [ ] [ ] [ ]''
<<<
She drives her spear point deep within the leopard just behind it's planted front left leg. 

(HOWL)

The force of the blow unbalances the beast. She drives forward, trying to drive the off balanced cat to the ground and pinning it with her spear!
<<<
__''Strike:''__ Combat with the Snow Leopard begins.
''Action'' | ''[8]'' ([5]+3 Adds: Iron) //Back to back fives!//
''Challenge'' | ''[7]/[7]'' //Match! And to think I almost went with End The Fight. Glad I didn't, it would have been a totally different result!//
''Result'' | Strong Hit; inflict +1 harm (3 Harm at 2 Progress each for Dangerous equals 6 total Progress). You retain initiative.
<<<
<<<
__''Snow Leopard:''__ Dangerous (**)! 
''[X] [X] [X] [X] [X] [X] [X] [X] [X] [X]''
<<<
The giant cat topples under the continued pressure of Nikkel's spear. I collapses to it's side. Large razor sharp claws flash as the leopard slashes out widely.

(HISS)

Nikkel steps forward and uses her body weight to drive the spear home...
<<<
__''Finish The Fight:''__ 
''Progress'' | ''[10]'' //No 10s, No Whammies!//
''Challenge'' | ''[3]/[3]'' //Match! Not sure how that influences the ending...//
''Result'' | Strong Hit; Leopard dies!
<<<
The spear tip cuts it's way through the cat's flesh, sliding easily past the ribs and into the ribcage with the weight of Nikkel driving it down. The cat exhales sharply. The fight over nearly as quickly as it began!
<<<
//Not sure if I should mark progress on the journey for overcoming the Snow Leopard. It feels significant, but I don't think it necessarily progress the travel. Your thoughts?//
<<<
She pulls the spear free, noticing the steam rise into the cool air from the wound. Squatting, she cleans the weapon on the cat's fur and finishes up with wiping it down with some snow.

Nikkel rises, looking at the Snow Leopard sprawled out before her. Her eyebrows lift, impressed at just how truly large it is, pushing ten plus feet from nose to tail. It looks majestic, even in death. Her face shows a flash of regret, before resolving herself to the fact it was either her or it.

Turning, Nikkel loses no time continuing on her journey. There was just too far to travel and too little time to catch up to her prey, to delay...
<<<
__''Undertake A Journey:''__ Further up the pass we go.
''Action'' | ''[5]'' ([4]+1 Adds: Wits) //If she could just fight the whole time maybe? Wits will be higher on my next character.//
''Challenge'' | ''[1]/[6]'' 
''Result'' | Weak Hit; you reach a waypoint and mark progress, but suffer -1 Supply. (Now 1!) 
<<<
<<<
__''Journey:''__ The Linn Pass
''[X] [X] [X] [X] [  ] [  ] [  ] [  ] [  ] [  ]''
Formidable (*) //And yes it is! Almost wish I could burn my Momentum to clear this pass!//
<<<
!!!EXT: IN THE PASS HALF WAY? - MID MORNING. EARLY SPRING, 3059
NIKKEL stops atop a rise and looks back. She strains her eyes trying to see if she could make out Mother's Heart from this elevated vantage point. The climb had been rather uneventful since she fought the Snow Leopard. She looked up the pass and decides to stop for a break, lowering her pack to the ground, and rummages through it for some food. Finding some dried meat, she sits and begins tearing pieces off with her teeth. After a few bites she loosens her water skin and takes a drink. She shakes it momentarily and puts it back, noting she was getting short on supplies, both food and water. She grimaces at the thought.
<<<
//Going to leave it there for now. Rather excited about the session. "Formidable" is REALLY that, especially with low Wits. I wish something other than Wits could be used for traveling, as Heart or maybe Iron, is what I would use for Nikkel now considering how she and I both will have to muster both to keep ticking away at a Formidable journey like this! LOL The wiki is a ton easier for me to write in, thankfully, no issues yet with formating!//
<<<
! Horizon Event Zero
CS:  NikkelCharacterSheet
S01: [[An Early Morning Hunt|https://worldofukarea.wordpress.com/2017/12/16/an-early-morning-hunt/]]
S02: [[A Clearing of the Mind|https://worldofukarea.wordpress.com/2017/12/17/40/]]
S03: [[Troubling Decisions|https://worldofukarea.wordpress.com/2017/12/19/troubling-decisions/]]
S04: [[The Focus of Many|https://worldofukarea.wordpress.com/2017/12/22/the-focus-of-many/]]
S05: [[An Unwelcome Pass|https://worldofukarea.wordpress.com/2017/12/28/an-unwelcome-pass/]]
S06: [[A Bloodied Remembrance|https://worldofukarea.wordpress.com/2017/12/31/a-bloodied-remembrance/]]
S07: [[Snow is Not Always White|https://worldofukarea.wordpress.com/2018/01/02/snow-is-not-always-white/]]
S08: [[Food For Thought]]
S09: [[Fire Burn and Cauldron Bubble]]
S10: [[Cavern of the Cauldron]]
S11: [[Chamber of Missteps]]
S12: [[An Unintended Rest]]
S13: [[Drinking In The Darkness]]

! Steel Caskets
[[Character Sheet|Steel Caskets CS]]
Issue: #01 [[Pending]]

Admin Quick Reference Links
[[WelcomeToTiddlyspot]]
[[GettingStarted]]
! Horizon Event Zero
CS:  NikkelCharacterSheet
S01: [[An Early Morning Hunt|https://worldofukarea.wordpress.com/2017/12/16/an-early-morning-hunt/]]
S02: [[A Clearing of the Mind|https://worldofukarea.wordpress.com/2017/12/17/40/]]
S03: [[Troubling Decisions|https://worldofukarea.wordpress.com/2017/12/19/troubling-decisions/]]
S04: [[The Focus of Many|https://worldofukarea.wordpress.com/2017/12/22/the-focus-of-many/]]
S05: [[An Unwelcome Pass|https://worldofukarea.wordpress.com/2017/12/28/an-unwelcome-pass/]]
S06: [[A Bloodied Remembrance|https://worldofukarea.wordpress.com/2017/12/31/a-bloodied-remembrance/]]
S07: [[Snow is Not Always White|https://worldofukarea.wordpress.com/2018/01/02/snow-is-not-always-white/]]
S08: [[Food For Thought]]
S09: [[Fire Burn and Cauldron Bubble]]
S10: [[Cavern of the Cauldron]]
S11: [[Chamber of Missteps]]
S12 [[An Unintended Rest]]
S13: [[Drinking In The Darkness]]
[img[RuinCity|https://img00.deviantart.net/9ead/i/2015/222/3/8/stone_jungle_1__august__by_solarsouth-d956h4a.jpg]]
Recently, I found out about the wonderful world of solo roleplaying. I was doing some actual plays and was having a hard time fighting the formating on Word Press, so I have decided to transition to a wiki hosting site, which I understand a bit better and can manipulate to my liking.

It all started when I found the G+ Group: [[Lone Wolf Roleplaying|https://plus.google.com/u/1/communities/116965157741523529510]]. I got pretty keen on trying it out. That's when I read about [[Ironsworn|https://www.ironswornrpg.com]] by //Shawn Tomkin//. As of this writing, the rules were free to download, so I did just that, and immediately became enamored with the system. So I started playing solo and the blog went up, followed soon by this wiki. Ironsworn has since gotten it's own [[Ironsworn G+ Group|https://plus.google.com/u/1/communities/104501626579912652597]] with a lot of talented writers, play-testers, and an active author. Go check it out!

I have since found/bought other solo roleplaying games, but I haven't done much more than read them. Currently Ironsworn scratches all my itches, though I will probably be testing some of the others out and writing about them here as well. I am also milling a conversion to one of the rule sets I bought around in my head for a potential WWII tank crew hack. I don't know if I will ever get around to it, but if I do, stay tuned to find out here. You'll be able to follow my Ironsworn AP and any other endeavors from the [[Home Page]] tiddly if your interested.

Now it's off to the salt mines for me!
<<rollon table:"DeSix" separator:"|" times:1>> 
/***
|''Name:''|LoadRemoteFileThroughProxy (previous LoadRemoteFileHijack)|
|''Description:''|When the TiddlyWiki file is located on the web (view over http) the content of [[SiteProxy]] tiddler is added in front of the file url. If [[SiteProxy]] does not exist "/proxy/" is added. |
|''Version:''|1.1.0|
|''Date:''|mar 17, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#LoadRemoteFileHijack|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0|
***/
//{{{
version.extensions.LoadRemoteFileThroughProxy = {
 major: 1, minor: 1, revision: 0, 
 date: new Date("mar 17, 2007"), 
 source: "http://tiddlywiki.bidix.info/#LoadRemoteFileThroughProxy"};

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

bidix.core.loadRemoteFile = loadRemoteFile;
loadRemoteFile = function(url,callback,params)
{
 if ((document.location.toString().substr(0,4) == "http") && (url.substr(0,4) == "http")){ 
 url = store.getTiddlerText("SiteProxy", "/proxy/") + url;
 }
 return bidix.core.loadRemoteFile(url,callback,params);
}
//}}}
[[Intro]]
[[Home Page]]
[[Horizon Event Zero]]
[[Steel Caskets]]
''Name:'' Nikkel
''Game:'' Horizon Event Zero
''System:'' [[Ironsworn|https://www.ironswornrpg.com]]

''Experience:'' [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ]

Edge:3   Iron:1   Heart:2   Shadow:2   Wits:1

''Momentum:'' +6 (Max +10 / Reset +2)
''Health:'' +2
''Spirit:'' +2
''Supply:'' +0

''Conditions:'' [  ] Wounded [  ] Shaken [X] Unprepared [  ] Encumbered
''Burdens:'' [  ] Marked [  ] Haunted
''Banes:'' [  ] Maimed [  ] Corrupted

''Bonds:'' [X] [X] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ]
Meddle – Fellow Brave, Bond forged during The Proving
Nora Tribe – Hunter / Gatherer tribe in The Embrace which Nikkel grew up in

''Journey:'' The Linn Pass
[X] [X] [X] [X] [X] [  ] [  ] [  ] [  ] [  ]
[  ] Troublesome (***), [  ] Dangerous (**), [X] Formidable (*), [  ] Extreme (+), [  ] Epic (/)

''Vow:'' Find Aloy’s Focus and Punish the Thief!
[X] [+] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ]
[  ] Troublesome (***), [  ] Dangerous (**), [  ] Formidable (*), [X] Extreme (+), [  ] Epic (/)

''Vow:'' Save the Stricken Braves of Mother’s Heart!
[  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ]
[  ] Troublesome (***), [  ] Dangerous (**), [X] Formidable (*), [  ] Extreme (+), [  ] Epic (/)

''Vow:'' Find out the Cause of the Scrapper Incursion into Tribal Lands!
[X] [X] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ]
[  ] Troublesome (***), [X] Dangerous (**), [  ] Formidable (*), [  ] Extreme (+), [  ] Epic (/)

''Assets:''

''Archer'' (Martial Focus)
If you wield a bow…
[X] When you Secure an Advantage with +Wits by taking a moment to aim, add +1 and take +1 Momentum on a Strong Hit.
[  ] Once per combat, when you Strike or Clash, you may suffer -1 Supply to reroll any dice. Then, take +1 Momentum on a Strong Hit.
[  ] When you Resupply by hunting, add +1.

''Scavenger'' (Path) – Custom Asset
[X] When you Resupply by looting a machine, add +1. If you score a hit, you may exchange -1 Momentum for +1 Supply.
[  ] When you attempt to Compel by trading something of value, add +1 and take +1 Momentum on a Strong Hit.
[  ] When you Resupply in the field by looting a machine, and score a Strong Hit, you may clear the Unprepared condition.

''Machinist'' (Path) – Custom Asset
[X] When you use scavenged machine materials to augment a weapon, suffer -2 Supply. Then, roll +Wits. On a Strong Hit, choose your augment. It will persist until you roll a 1 on the Action Die when using the weapon. On a Weak Hit, a 1 or 2 on the Action Die will exhaust the augment.
Precise: Add +1 when you Strike or Clash
Empowered: Inflict 3 harm (instead of 2)
[  ] As above, but you may instead augment your armor. If you do, add +2 when you Endure Harm until the augment is exhausted.
[  ] Add +1 when you create an augment

''~NPCs''
Meddle - Fellow Brave
Nisus - Village Elder
Kania - Village Healer
Servan - Village Senior Brave
/***
|''Name:''|PasswordOptionPlugin|
|''Description:''|Extends TiddlyWiki options with non encrypted password option.|
|''Version:''|1.0.2|
|''Date:''|Apr 19, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#PasswordOptionPlugin|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0 (Beta 5)|
***/
//{{{
version.extensions.PasswordOptionPlugin = {
	major: 1, minor: 0, revision: 2, 
	date: new Date("Apr 19, 2007"),
	source: 'http://tiddlywiki.bidix.info/#PasswordOptionPlugin',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	license: '[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D]]',
	coreVersion: '2.2.0 (Beta 5)'
};

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

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

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

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

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

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

merge(config.optionsDesc,{
		pasPassword: "Test password"
	});
*/
//}}}
/***
|''Name''|RollonPlugin|
|''Description''|A plugin to "Roll" on Tables, creating tiddlers containing random elements of lists, extracted from other tiddlers|
|''Icon''||
|''Author''|Joshua Macy|
|''Contributors''||
|''Version''|1.02|
|''Date''|2009-03-11|
|''Status''|@@beta@@;|
|''Source''|http://rollon.tiddlyspot.com#RollonPlugin|
|''CodeRepository''|http://rollon.tiddlyspot.com|
|''Copyright''|Joshua Macy, 2009|
|''License''|Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License|
|''CoreVersion''|2.4.1|
|''Requires''||
|''Overrides''|Adds String methods for trim, rtrim and ltrim|
|''Feedback''|joshua.macy@gmail.com|
|''Documentation''|http://rollon.tiddlyspot.com|
|''Keywords''|rollon|
!Description
A Plugin to roll on tables (formatted as lists). The plugin provides a rollon macro that has two functions, depending on the context where it's called.
*If the macro is in a tiddler that lacks the rollonResult tag, it creates a text label describing the table and a button to press to roll on that table. Pressing the button creates a new tiddler with the 
rollonResult tag and places the macro in that tiddler
*If the macro is in a tiddler that has a rollonResult tag it looks at the named tiddler as a table and to chooses a random element from that table and places it in the current tiddler
Thus, if you click on the roll button, you get a new tiddler with a random element from the table that you named.
Note that rollon calls can call other rollon calls!  If the entry selected from the table contains another rollon macro, that rollon macro is executed to select a random entry from ''it's'' table, and so on
until it bottoms out with an entry that contains no other rollon macros.  The results of all these calls are placed in order in the tiddler that originated the call, allowing you to build up complete sentences
and paragraphs of results, almost like a Mad-Lib.

You can control many parameters to the rollon call, or allow it to default to (hopefully sensible) values.
!Notes
Doesn't yet support entries that have sub-lists
!Usage
{{{
<<rollon tiddlername times>>
}}}
tiddlername - name of a tiddler containing a list of entries.
times - the number of times to roll.  May be a dice expression like 1d6 or 2d3+2

for more control you can use named parameters:
{{{
<<rollon table:tiddlername times:n separator:sep-char result:prompt>>
}}}

A complete list of parameters:
* table -  the name of the table to roll on.  "prompt" will cause it to prompt the user for a table name.  If the table name doesn't exist but appears to be a dice expression, like 1d6+2, it will evaluate the dice expression and return the value instead
* times - the number of times to roll on the table.  "prompt" will cause it to prompt the user for a number of times.  If the number of times appears to be a dice expression, it will evaluate the expression and roll that number of times.  The results are separated in the tiddler by a character (default is comma). ''Defaults to 1.''
* dice - a dice expression, such as 1d20, 3d6+1, 1d4+1d6, etc.  If no table is provided, the macro will return the result of the roll.  If a table is provided, the macro will roll that dice expression on the table.  ''Defaults to the highest number in the table.''  E.g. a table with 30 entries will have one of them selected at random, as if a 1d30 had been rolled.
* separator - the character used to separate multiple results.  ''Defaults to comma.''  Use {{{<br>}}} to separate results by line breaks
* resultName - the name of the new tiddler to create to hold the results.  ''Defaults to the name of the current tiddler, plus " Result" plus a numeric suffix, such as (1) or (3) to ensure the tiddler name is unique.''
* force - to force the result of the die roll to be a particular number.  Generally this is used for debugging. ''No default.''
* overWrite - make the results overwrite the previous results instead of adding a new tiddler with a numeric suffix

The first two parameters are assumed to be table and times, if named parameters aren't used.  Named parameters are required for all the others, and can be used for table and times for clarity.
If any parameter is set to the string &quot;prompt&quot;, then the user will be prompted for the appropriate value when the roll button is pushed.

Tables are any Tiddler that contains a list (ordered or unordered), or
a series of lines each starting with a number.  If the tiddler has text
prior to the beginning of the list, the text will be copied into the result,
trimmed of leading and trailing spaces.  If you want new lines in the preamble,
use <br> elements. Whitespace between the * or # or number at the beginning of a
line is preserved.
<...>
{{{
!!Examples
<<rollon "Bar Names">>

<<rollon table:"Bar Names" separator:"," times:3d6>>

<<rollon BarNames 3d6 separator:->>

!Configuration Options
None
!Revision History
!!v<1.02> (2009-12-15) bugfix release: fixed definition table to offset for the lowest value if it doesn't start with 1
!!v<1.0rc1> (2009-03-11) release candidate 1
* 
!To Do
add setting and consulting variables
add formatting options (first letter capitalization, gender agreement helpers, etc)
!Code
***/
//{{{
if(!version.extensions.RollonPlugin) { //# ensure that the plugin is only installed once
version.extensions.RollonPlugin = { installed: true };

if(!config.extensions) { config.extensions = {}; } //# obsolete from v2.4.2

config.macros.delTagged = {
	handler: function (place, macroName, params, wikifier, paramString, tiddler) {
        wikify("Deleted Tagged Tiddlers", place);
        btn = createTiddlyButton(place,"delete","Deletes Tiddlers Tagged with VAR", config.macros.delTagged.onClick);
    
    },
	onClick: function(ev) {
		if (!ev) {
			ev = window.event;
		}
        story.forEachTiddler(function(title,element) {
            var t = store.getTiddler(title);
            if (t) {
                if (t.isTagged("VAR")) {
                    alert(title);
                    store.removeTiddler(title);
                    story.closeTiddler(title, true);
                    //autoSaveChanges();
                }
            }
		});
    }
};

config.macros.rollon = {
	suffixText: ' (%0)',
	suffixPattern: / \(([0-9]+)\)$/,
	zeroPad: 0,
	sparse: false,
	diceRE : /(\d+)[dD]([\d]+)([tT])?/g,
	listRE : /^(?:[\*#]|\d+\.?)([^\*#].+)$/gim,
	defRE : /^([:;])(.+)$/gim,
	rangeRE : /^(\d+)(?:-(\d+))?\s*/,
	handler: function (place, macroName, params, wikifier, paramString, tiddler) {
		var t = r = result = btn = preamble = temp = null;
		var html = "";
		var resultList = [];
		var entries = [];
		var low = high = range = rangeEntry = dieRoll = 0;
		var taggedResult = tiddler.isTagged("rollonResult");
		var prms = paramString.parseParams("anon", null, true);
		var table = getParam(prms, "table", null) || params[0];
		var times = getParam(prms, "times") || params[1] || 1;
		var dice = getParam(prms, "dice");
		var sep = getParam(prms, "separator", ",");
		var resultName = getParam(prms, "resultName", tiddler.title + " Result");
        var overWrite = getParam(prms, "overWrite", false);
		var force = getParam(prms, "force", null);
        var set = getParam(prms, "set", null);
		if (taggedResult) {
			if (times === "prompt") {
				times = prompt("Enter number of times to roll", "1");
			}
			if (dice === "prompt") {
				dice = prompt("Enter the dice expression to roll");
			}
			if (table === "prompt") {
				table = prompt("Enter the table name to roll on");
			}
			if (sep === "prompt") {
				sep = prompt("Enter the separator character(s)");
			}
			if (force === "prompt") {
				force = prompt("Force the die to roll the following number");
			}
            if (set === "prompt") {
                set = prompt("Name of the variable to set");
            }
		}
		if (taggedResult) {
			if (times) {
				if (dice && params[1] && params[1].indexOf("dice:") > -1) {
					// dice: was passed as 2nd param, so times needs to be reset
					times = 1
				} else {
					if (/^\d+$/.test(times)) {
						//all digits
						times = parseInt(times);
					} else {
						this.diceRE.lastIndex = 0;
						result = this.diceRE.exec(times);
						if (result) {
							times = this.rollExpr(times);
						}
						else {
							times = 1;
						}
					}					
				}
			} else {
				times = 1;
			}			
			if (table) {
				t = store.getTiddler(table);
				if (t) {
					this.listRE.lastIndex = 0;
					result = this.listRE.exec(t.text);
					if (result) {
						preamble = result.input.substring(0, result.index);
						while (result != null) {
							entries.push(result[1]);
							result = this.listRE.exec(t.text);
						}
						if (preamble) {
                            // don't wikify the preamble until you've dealt with the table, lest the preamble contain a rollon macro that will update
                            // the current tiddler's text when it completes
							html = wikifyStatic(preamble.trim(), null, tiddler);
						}
						for (i = 0; i < times; i ++) {
							if  (!force) {
								if (!dice) {
									r = Math.floor(Math.random() * entries.length);								
								} else {
									r = Math.min(this.rollExpr(dice), entries.length);
									r = r - 1; // entries starts at 0, even though dice start at 1
								}
							} else {
								r = Math.min(force, entries.length);
							}
							temp = wikifyStatic(entries[r], null, tiddler);
							resultList.push(temp);
						}
						html += resultList.join(sep);
						html = html.replace(/<[\/]*span>/igm, '');
						wikify(html, place, null, tiddler);
					} else {
						this.defRE.lastIndex = 0;
						result = this.defRE.exec(t.text);
						if (result) { // definition list
							preamble = result.input.substring(0, result.index);
							while (result != null) {
								if (result[1] === ';') {
									// definition
									temp = result[2];
									this.rangeRE.lastIndex = 0;
									range = this.rangeRE.exec(temp);
									if (range) {
										low = range[1];
										high = null;
										if (result[2]) {
											high = range[2];
										}
										entries.push([low, high]);
									} else {
										wikify("Definition doesn't seem to be a valid range: " + temp, place, null, tiddler);
									}
								} else if (result[1] === ':') {
									// term, prior must have been a definition (we hope)
									// we should now have a series of triples: [low, high, term]
									entries[entries.length-1].push(result[2]);
								}
								result = this.defRE.exec(t.text);
							}
							// find lowest range
							temp = entries[0];
							low = parseInt(temp[0]);
							// find highest range
							temp = entries[entries.length-1];
							if (temp[1]) {
								high = temp[1];
							} else {
								high = temp[0];
							}
							sizeOfRange = high - low;
							if (preamble) {
								html = wikifyStatic(preamble.trim(), null, tiddler);
							}
							for (i = 0; i < times; i ++) {
								if  (!force) {
									// don't require tables to start with number 0
									r = Math.ceil(Math.random() * sizeOfRange);
								} else {
									r = Math.min(force, high);
								}
                                                                r = r + low;
								// find the entry that r falls within
								rangeEntry = "Couldn't find range encompassing value " + r;
								for (var j = 0; j < entries.length; j++) {
									if (r < entries[j][0]) {
										// too high, not going to see anything with the proper range any more
										break;
									}
									rangeEntry = entries[j][2];
									if (entries[j][1] && r <= entries[j][1]) {
										break;
									}
								}
								temp = wikifyStatic(rangeEntry, null, tiddler);
								resultList.push(temp);
							}
							html += resultList.join(sep);
							html = html.replace(/<[\/]*span>/igm, '');
							wikify(html, place, null, tiddler);
						} else {
							if (t.text.trim().length > 0) {
								for (i = 0; i < times; i++) {
									temp = wikifyStatic(t.text, null, tiddler);
									resultList.push(temp);
								}
								html += resultList.join(sep);
								html = html.replace(/<[\/]*span>/igm, '');
								wikify(html, place, null, tiddler);
							} else {
								wikify("Table " + t.title + " appears to be empty", place, null, tiddler);
							}							
						}
					}
                    // by this point html should contain something worthwhile
                    if (set) {
                        this.saveVar(table, set, html);
                    }
				} else {
					// see if dice were defined
					if (!dice) {
						// see if it's a dice string
						result = this.diceRE.test(table);						
						if (!result) {
                            // see if it's a variable
                            t = store.getTiddler("Rollon_" + table);
                            if (t) {
            					wikify(t.text, place, null, tiddler);
                                return;
                            } else {
                                wikify("No Tiddler named " + table + " found", place);
                                return;
                            }
						} else {
							dice = table;
						}
					}
					for (i = 0; i < times; i++) {
						dieRoll = this.rollExpr(table);
						resultList.push(dieRoll);
					}
					dieRoll = resultList.join(sep).toString();
					wikify(dieRoll, place, null, tiddler);
				}
			} else {
				wikify("rollon requires at least one parameter", place);
			}
		} else {
			if (table) {				
				wikify("roll on [[" + table + "]]", place);
				btn = createTiddlyButton(place,"roll","<<rollon " + paramString + ">>", config.macros.rollon.onClick);
				btn.resultName = resultName;
				btn.suffixText = this.suffixText;
				btn.suffixPattern = this.suffixPattern;
				btn.zeroPad = this.zeroPad;
				btn.sparse = this.sparse;
                btn.overWrite = overWrite;
			} else {
				wikify("rollon macro requires at least one parameter", place);			
			}
		}
	},
    substVariables : function (expr) {
        var variableRE = /{([^}]+)}/g;
        var text = "";
        var t = null;
        var replaceVariable = function(match, name) {
            if (name.substr(0, 2) !== "*#") {
                t = store.getTiddler(name);
            } else {
                // try to find a match
                var varNameRE = new RegExp("#" + name.substr(2) + "$");
                var variableTiddlers = store.filterTiddlers("[tag[rollonVar]]");
                for (var i = 0; i < variableTiddlers.length; i++) {
                    if (varNameRE.test(variableTiddlers[i].title) ) {
                        alert("Found match=" + variableTiddlers[i].title)
                        t = variableTiddlers[i];
                        break;
                    }
                }
            }
            if (t) {
                text = t.text;
            }
            return text;
        };
        expr = expr.replace(variableRE, replaceVariable);
        return expr;
    },
	rollExpr: function (expr) {
        expr = this.substVariables(expr);
		this.diceRE.lastIndex = 0;
		var match = this.diceRE.exec(expr);
		var diceExpr, result;
		if (match && match[3]) {
			this.diceRE.lastIndex = 0;
			diceExpr = expr.replace(this.diceRE, "this.rollSpecial($1, $2, '$3')");
		} else {
			this.diceRE.lastIndex = 0;
			diceExpr = expr.replace(this.diceRE, "this.roll($1, $2)");
		}
		result = 0;
		result = eval(diceExpr);
		return result;
	},
	roll: function(dice, sides) {
		var result = 0, i = 0;
		for (i = 0; i < dice; i++) {
			result += Math.ceil(Math.random() * sides);
		}
		return result;
	},
	rollSpecial: function(dice, sides, option) {
		var result = 0;
		if (option.toLowerCase() === 't') {
			return this.rollTT(dice, sides);
		}
		return result;
	},
	rollTT: function(dice, sides) {
		// Tunnels & Trolls: doubles or triples add and roll over
		var result = 0, die = 0, i = 0;
		var allSame = true;
		var previous;
		if (dice === 2 || dice === 3) {
			while (allSame === true) {
				previous = 0;
				for (i = 0; i < dice; i++ ) {
					die = Math.ceil(Math.random() * sides);
					result += die;
					if (die !== previous && previous !== 0) {
						allSame = false;
					}
					previous = die;
				}
			}
		} else {
			return this.roll(dice, sides);
		}
		return result;
	},
    saveVar: function(namespace, name, value) {
        var nameSpaceRE = /^([^#]+)#/;
        var title;
        if (nameSpaceRE.test(name)) {
            // provided namespace
            title = name;
        } else {
            title = namespace + "#" + name; // default namespace
        }
        var tags=["rollonVar", "excludeLists"];
        var fields={}; // an empty object
        var who="Rollon"; // current username
        var when=new Date(); // current timestamp
        var tid=store.getTiddler(title);
        if (tid) { fields=tid.fields; }
        store.saveTiddler(title,title,value,who,when,tags,fields);
    },
	onClick: function(ev) {
		if (!ev) {
			ev = window.event;
		}
		var button = this;
        var t;
		var macroText = button.title;
        var newTitle;
		var resultName = button.resultName || "Default Roll Result";
		if (button.resultName === "prompt") {
			resultName = prompt("Name for Result?");
		}
        if (button.overWrite === false) {
            var root=resultName.replace(this.suffixPattern,''); // title without suffix..unlikely to have it at this point, but let's be safe
            // find last matching title
            var last=root;
            if (this.sparse) { // don't fill-in holes... really find LAST matching title
                var tids=store.getTiddlers('title','excludeLists');
                for (t=0; t<tids.length; t++) if (tids[t].title.startsWith(root)) last=tids[t].title;
            }
            // get next number (increment from last matching title)
            var n=1; var match=this.suffixPattern.exec(last); if (match) n=parseInt(match[1])+1;
            newTitle=root+this.suffixText.format([String.zeroPad(n,this.zeroPad)]);
            // if not sparse mode, find the next hole to fill in...
            while (store.tiddlerExists(newTitle)||document.getElementById(story.idPrefix+newTitle))
                { n++; newTitle=root+this.suffixText.format([String.zeroPad(n,this.zeroPad)]); }

        } else {
            newTitle = resultName;
            store.removeTiddler(newTitle);
            story.closeTiddler(newTitle, true);
        }
		//t = store.getTiddler(newTitle);
		t = store.createTiddler(newTitle);
		t.set(newTitle, macroText);
		t.tags = ["rollonResult"];
		t.modifier = "Rollon";
		story.displayTiddler(null, newTitle);
		var tiddlerHTML = story.getTiddler(newTitle).innerHTML;
		var viewerClass = '<div class="viewer">';
		var viewerPos = tiddlerHTML.indexOf(viewerClass);
		if (viewerPos > -1) {
			var endDivPos =  tiddlerHTML.indexOf("</div>", viewerPos);
			var displayedText = tiddlerHTML.substring(viewerPos + viewerClass.length, endDivPos);
			displayedText.replace(/<[\/]*span>/igm, '');
			t.set(null,displayedText);			
		}		
		ev.returnValue = false;
		
	}
	
};

String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}
String.prototype.ltrim = function(){
	return this.replace(/^\s+/, "");
}
String.prototype.rtrim = function(){
	return this.replace(/\s+$/, "");
}

} //# end of "install only once"


//}}}
Where I Attempt To Play With Myself
I Roll Solo
!Steel Caskets
[[Character Sheet|Steel Caskets CS]]
ISSUE #01
ISSUE #02
[img[Betty|http://www.tanks-encyclopedia.com/ww2/US/Light/M3/M3A1_Stuart_torch_HD.jpg]]
!!!Info
''Name:'' Betty aka "The Haunted Tank" ([[M3A1 Stuart Mk.III|http://www.tanks-encyclopedia.com/ww2/US/M3_stuart.php]])
''Unit:'' 2nd Platoon / D Co / 1 Battalion / 67th Armored Regiment / 2nd Armored Division
''In Support Of:'' 2nd Battalion / 7th Infantry Regiment / 3rd Infantry Division
''Operation:'' Torch (Operation Brushwood - Fedala Landing Site)
''Game:'' Steel Caskets
''System:'' [[Ironsworn|https://www.ironswornrpg.com]]

''Experience:''
[  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ]
[  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ]
[  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ]
!!!Stats
''Edge:'' 3 Maneuver: Fast tanks with a quick firing 37mm gun. (quickness, agility, and prowess in ranged combat)
''Iron:'' 1 Survivability: Doesn't take a hit real well, especially at close range. (physical strength, endurance, aggressiveness, and prowess in close combat)
''Heart:'' 2 Reliability: Runs like a top mechanically. (courage, willpower, sociability, and loyalty)
''Wits:'' 2 Observation: Built as a Reconnaissance tank after all. (expertise, knowledge, and observation)
''Shadow:'' 1 Profile: High profile made stealth an issue. (sneakiness, deceptiveness, and cunning)
<<<
''Initial Stats Assigned''
''Edge:'' 1 (quickness, agility, and prowess in ranged combat)
''Iron:'' 1 (physical strength, endurance, aggressiveness, and prowess in close combat)
''Heart:'' 2 (courage, willpower, sociability, and loyalty)
''Wits:'' 2 (expertise, knowledge, and observation)
''Shadow:'' 3 (sneakiness, deceptiveness, and cunning) //''Tactics?''//
<<<
''Momentum:'' +2 (Max +10 / Reset +2)
''Health:'' +5
''Spirit:'' +5
''Supply:'' +5
!!!Effects
''Conditions:'' [  ] Wounded [  ] Shaken [  ] Unprepared [  ] Encumbered
''Burdens:'' [  ] Marked [  ] Haunted
''Banes:'' [  ] Maimed [  ] Corrupted
!!!Bonds
''Bonds:'' [X] [X] [X] [  ] [  ] [  ] [  ] [  ] [  ] [  ]
//The Crew//
<<<
Staff Sergeant (SSG) James "Rickets" Rodgers (Commander)
[  ] [  ] [  ]
Sergeant (SGT) Joseph "Big Joe" Johnson (Gunner)
[  ] [  ] [  ] [  ]
Private First Class (PFC) Paul "Paulie" Rossi (Driver)
[  ] [  ] [  ]
Private (PVT) Nicholas "Rook " Bridges (Assistant Driver)
[  ] [  ]
<<<
//Delta Two Three// (Sergeant William "Bill" Wright) - Betty's //Wingman// (M3A1 Stuart Mk III).
[  ] [  ] [  ] [  ]
//"The Old Man"// (Delta Company Commander, Captain Joshua Lance)
!!!Vows
''Vow:'' Survive the War and Get My Crew Home!
[  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ]
Epic (/)

''Vow:'' Take Casablanca!
[  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ]
Dangerous (**)

''Vow:''
[  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ]
[  ] Troublesome (***), [X] Dangerous (**), [  ] Formidable (*), [  ] Extreme (+), [  ] Epic (/)
!!!Tank Assets
''Swift''
When you //Face Danger// with +Edge using your speed and agility, or when you //Undertake a Journey//, add +1.
''Shield Bearer''
When forced to suffer -Health, you may sacrifice your Companions Health instead, passing on the damage, ignore up to 3 Harm. If you do, suffer -1 Momentum and check //Companion Endure Harm.//
!!!Companion Assets
''Delta Two Three'' //Betty's 'Wingman'//
When you //Strike// or //Clash// and your wingman can help engage the same target, you may suffer -1 Momentum before the roll and inflict +1 Harm on a hit.
!!!Pending Experience Assets?
''Veteran'' SSG James "Rickets" Rodgers (Commander)
Once per combat, when you //Secure an Advantage// (with +Wits) by studying your foe’s fighting technique and envisioning where you need to be to be at an advantage, you may reroll any dice and take +1 Momentum on a Strong Hit.
''Brawler'' SGT Joseph "Big Joe" Johnson (Gunner)
When you //Secure an Advantage// with +Iron by engaging in close-quarters fighting or flanking (hit & run tactics), and score a Strong Hit, you may also inflict 1 Harm.



//Names, characters, businesses, places, events, locales, and incidents are either the products of the author's imagination or used in a fictitious manner. Any resemblance to actual persons, living or dead, or actual events is purely coincidental.//
/***
Description: Contains the stuff you need to use Tiddlyspot
Note, you also need UploadPlugin, PasswordOptionPlugin and LoadRemoteFileThroughProxy
from http://tiddlywiki.bidix.info for a complete working Tiddlyspot site.
***/
//{{{

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

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

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

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

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

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

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

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

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

});
//}}}
| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |
| 17/01/2018 18:44:36 | JohnRisus | [[/|http://irollsolo.tiddlyspot.com/]] | [[store.cgi|http://irollsolo.tiddlyspot.com/store.cgi]] | . | [[index.html | http://irollsolo.tiddlyspot.com/index.html]] | . | ok |
| 17/01/2018 21:05:42 | JohnRisus | [[/|http://irollsolo.tiddlyspot.com/]] | [[store.cgi|http://irollsolo.tiddlyspot.com/store.cgi]] | . | [[index.html | http://irollsolo.tiddlyspot.com/index.html]] | . | ok |
| 18/01/2018 11:57:40 | JohnRisus | [[/|http://irollsolo.tiddlyspot.com/]] | [[store.cgi|http://irollsolo.tiddlyspot.com/store.cgi]] | . | [[index.html | http://irollsolo.tiddlyspot.com/index.html]] | . | ok |
| 18/01/2018 13:03:43 | JohnRisus | [[/|http://irollsolo.tiddlyspot.com/]] | [[store.cgi|http://irollsolo.tiddlyspot.com/store.cgi]] | . | [[index.html | http://irollsolo.tiddlyspot.com/index.html]] | . |
| 18/01/2018 15:45:25 | JohnRisus | [[/|http://irollsolo.tiddlyspot.com/]] | [[store.cgi|http://irollsolo.tiddlyspot.com/store.cgi]] | . | [[index.html | http://irollsolo.tiddlyspot.com/index.html]] | . | ok |
| 18/01/2018 15:46:35 | JohnRisus | [[/|http://irollsolo.tiddlyspot.com/]] | [[store.cgi|http://irollsolo.tiddlyspot.com/store.cgi]] | . | [[index.html | http://irollsolo.tiddlyspot.com/index.html]] | . |
| 20/01/2018 22:35:17 | JohnRisus | [[/|http://irollsolo.tiddlyspot.com/]] | [[store.cgi|http://irollsolo.tiddlyspot.com/store.cgi]] | . | [[index.html | http://irollsolo.tiddlyspot.com/index.html]] | . | ok |
| 20/01/2018 22:36:07 | JohnRisus | [[/|http://irollsolo.tiddlyspot.com/]] | [[store.cgi|http://irollsolo.tiddlyspot.com/store.cgi]] | . | [[index.html | http://irollsolo.tiddlyspot.com/index.html]] | . |
| 20/01/2018 22:37:26 | JohnRisus | [[/|http://irollsolo.tiddlyspot.com/]] | [[store.cgi|http://irollsolo.tiddlyspot.com/store.cgi]] | . | [[index.html | http://irollsolo.tiddlyspot.com/index.html]] | . |
| 01/02/2018 21:28:01 | JohnRisus | [[/|http://irollsolo.tiddlyspot.com/]] | [[store.cgi|http://irollsolo.tiddlyspot.com/store.cgi]] | . | [[index.html | http://irollsolo.tiddlyspot.com/index.html]] | . |
/***
|''Name:''|UploadPlugin|
|''Description:''|Save to web a TiddlyWiki|
|''Version:''|4.1.3|
|''Date:''|Feb 24, 2008|
|''Source:''|http://tiddlywiki.bidix.info/#UploadPlugin|
|''Documentation:''|http://tiddlywiki.bidix.info/#UploadPluginDoc|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0|
|''Requires:''|PasswordOptionPlugin|
***/
//{{{
version.extensions.UploadPlugin = {
	major: 4, minor: 1, revision: 3,
	date: new Date("Feb 24, 2008"),
	source: 'http://tiddlywiki.bidix.info/#UploadPlugin',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	coreVersion: '2.2.0'
};

//
// Environment
//

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

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

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

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

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

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

//
// uploadOptions Macro
//

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

//
// upload functions
//

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

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

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

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

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

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

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

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

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

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

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

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

//
// Utilities
// 

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

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

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

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

//
// Initializations
//

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

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

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

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


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


//}}}

JohnRisus