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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

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

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
/***
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes.
***/
/*{{{*/
body {font-size:0.8em;}
#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}
.subtitle {font-size:0.8em;}
.viewer table.listView {font-size:0.95em;}
/*}}}*/
/*{{{*/
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none ! important;}
#displayArea {margin: 1em 1em 0em 1em;}
/* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
noscript {display:none;}
}
/*}}}*/
<!--{{{-->
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar [[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'></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>>
//Back to [[Gear]]//

|!''Adventuring Gear''|>|>|>|
|!Item |!Description/Notes | !Cost | !Weight |
|Backpack|Capacity 40 lbs.| 25 gp| 2^^1^^|
|Bedroll|Sleeping bag; winterized| 25 gp| 4|
|Blanket|| 10 gp| 4|
|Candle|Lights area 2" radius| 1 gp| 1/2|
|Crowbar||10 gp| 2|
|Flask|Ceramic| 5 gp| 1|
|Flask|Metal| 10 gp| 1|
|Garlic|| 25 gp| 1/10|
|Grappling Hook|| 50 gp| 2|
|Hammer|Small| 10 gp| 1|
|Holy symbol|| 100 gp| 1/10|
|Holy water|Breakable vial| 50 gp| 1/10|
|Iron spikes|10 spikes| 10 gp| 10|
|Lantern|Burns oil| 25 gp| 3|
|Mirror|Hand-sized, steel| 25 gp| 1|
|Oil|For lantern; one flask| 2 gp| 1|
|Parchment|(1 sheet)| 1 gp| 1/20|
|Pole|Wooden, 3" long| 5 gp| 10|
|Quiver|Holds 20 arrows or 30 quarrels| 10 gp| 2^^1^^|
|Rations|1 week's food for 1 person| 25 gp| 10|
|Rope|10" length| 10 gp| 15|
|Pick/Shovel|| 5 gp| 5|
|Sack, small|Capacity 20 lbs.| 5 gp| 1/10^^1^^|
|Sack, large|Capacity 60 lbs.| 10 gp| ½^^1^^|
|Saddle|| 10 gp| 10|
|Shovel|| 5 gp| 5|
|Soap|| 1 gp| 1/5|
|Stakes (3) and mallet|| 15 gp| 1|
|Thieves’ tools|Lockpicks, wire, etc.| 100 gp| 1|
|Tinder box|Flint, steel, kindling| 3 gp| 1|
|Torch|One torch; 1 hour, lights area 4" radius | 5 gp| 1|
|Waterskin/wineskin|One-quart capacity; 3 lbs. when filled| 5 gp| 1|
|Whetstone|| 5 gp| 1|
|Whistle|| 2 gp| --|
|Wine|One quart, wineskin not included| 5 gp| 3|
|Wolfsbane|One bunch| 50 gp| 1/10|
^^1^^//This is the item's weight when empty. When goods placed inside it, the weight includes both the item's weight and the weight of the goods inside. Thus, a full backpack has a weight of 42 lbs.//

//Back to [[Gear]]//
back to [[Powers]]
!!!Arcane Background (Magic)
''Arcane Skill:'' Spellcasting (Smarts)
''Starting Power Points:'' 10
''Starting Powers:'' 3

Magicians range from powerful wizards to vile cultists. They draw on raw supernatural energy to fuel their eldritch fires. This energy often infuses the worlds in which they live, and is drawn forth with elaborate rituals, words of power, runes, or perhaps even dark sacrifices.

Wizards are often quite weak early in their careers, but are forces to be reckoned with as they become powerful sorcerers.
*''Backlash:'' When a wizard rolls a 1 on his Spellcasting die (regardless of his Wild Die), he is automatically Shaken. This can cause a wound.
back to [[Powers]]
back to [[Powers]]
!!Arcane Background (Miracles)
''Arcane Skill:'' Faith (Spirit)
''Starting Power Points:'' 10
''Starting Powers:'' 2

Those who draw on miracles are priestly types or holy champions. Their power comes from a divine presence of some sort, including gods, nature, or spirits. Their powers are usually invoked with a few words of prayer or by performing established rituals.
*''Protector:'' Those who cast miracles are champions of their particular religions. Good priests vow to protect the innocent, fight evil, and obey all other tenets of their particular religion. Evil priests typically vow to defeat those who oppose their religion, or  imply to cause as much misery and strife as possible.

The player and Game Master should come up with a simple list of what is important to the character’s religion and use this as a guide.

Champions who violate their beliefs are temporarily or permanently forsaken by their chosen deity. Minor sins give the character a -2 to his Faith rolls for one week. Major sins rob him of all arcane powers for one week. Mortal sins cause the character to be forsaken until the penitent hero completes some great quest or task of atonement to regain his lost powers.

''Codex of the Immortals''
Clerics of Mystara may choose from the following Immortals or philosophies:
''Philosophy:''
*[[Good]]
*[[Neutral]]
''Immortals''
*[[Ordana]]

Some ideas for the ''Protector'' aspect of AB: Miracles depends on the pantheon of the setting, but some ideas include:
*''Battle:'' Protect warriors, soldiers, always be the last to leave a battle.
*''Death:'' Protect cemeteries, crypts, help spirits to their final rest, and combat undead.
*''Healing:'' Protect all who need healing and show mercy to all.
*''Honor:'' Protect those who follow their duty. Always keep your word.
*''Sun/Moon/Light:'' Protect those who depend on light and combat darkness. This may also represent metaphorical light and darkness of knowledge and ignorance.
*''Nature:'' Protect the natural order and the circle of life.
These represent “good” versions of these deities, but darker versions could exist simply by reversing the ideals presented. For example, an evil god of disease and poison would simply be a reversed Healing deity who seeks to swell the ranks of those sick and injured, and shows no mercy at all.

back to [[Powers]]
back to [[Powers]]
!!!Arcane Skill
Each type of power has a particular arcane skill: Faith for Miracles and Spellcasting for Magic. You need to take the skill for your character’s particular Arcane Background and put points into it as usual. You’ll find the attribute the skill is linked to in parentheses beside the skill itself.
!!!Power Points
Arcane characters energize their powers with “Power Points.” As soon as you buy an Arcane Background Edge, your hero gets the listed number of Power Points. Using a power requires that you spend a number of these points. Some powers allow you to pay additional points for better effects, and some allow you to maintain the effect by spending Power Points each round. Heroes recover 1 Power Point per hour.
!!!Starting Powers
Arcane characters start with a number of powers dictated by their particular Arcane Background. See the Arcane Background list for specifics.
!!!Learning New Powers
An arcane character can learn a new power by selecting the New Power Edge. As soon as he levels up and chooses this Edge, he can instantly begin using whichever power he chooses.
!!!Using Powers
As an action, a character may use a single power by declaring the power he’s using, spending the desired number of Power Points, and making an arcane skill roll. If the roll is failed, there’s no effect but the Power Points are lost. If successful, consult the particular power to determine the results.

Some powers have variable effects depending on how many Power Points are used to cast them. The player must spend the desired Power Points before rolling his character’s arcane skill to see if he’s successful.
!!!Maintaining Powers
Some powers may be maintained, as listed in the power’s Duration description. This is a free action. The number following the duration is the cost in Power Points to keep the power going. No new skill roll is needed to maintain a power.

For each power currently being maintained, the caster suffers a -1 to future arcane skill rolls (but not other Trait tests). A wizard maintaining armor and charm, for example, suffers a -2 penalty to his Spellcasting rolls until he allows those powers to lapse. He does not suffer penalties to his Fighting (or other) rolls while these spells are being maintained.
!!!Disruption
A character who is actively maintaining a power may be disrupted if he suffers damage. To maintain concentration for all of his powers, the hero makes one opposed arcane skill roll versus the damage he suffered. If his roll is higher, he maintains all of his spells. If he fails, he instantly drops all of his powers after the attack that caused the disruption is resolved.

A character who is Shaken by non-damaging means (such as a Test of Wills) must make a simple Smarts roll to maintain his powers.

back to [[Powers]]
!Archetypes
Here's a few basic archetypes inspired by the classes from Basic D&D:
!!Humans
*[[Cleric]]
*[[Fighter]]
*[[Mage]]
*[[Thief]]
!!Demi-Human
*[[Dwarf|Dwarf (Archetype)]]
*[[Elf|Elf (Archetype)]]
*[[Halfling|Halfling (Archetype)]]
!!Special
*[[Druid]]
*[[Mystic]]
back to [[Gear]]
|!''Armor''|>|>|>|>|
|!Type | !Armor | !Weight^^1^^ | !Cost (gp) |!Notes |
|Leather Armor| +1 | 15| 50|Covers all except Head|
|Scalemail| +2(+1) | 20| 200|Covers all except Head; 1 Armor is bypassed if hit with raise|
|Chain Mail| +2 | 25| 300|Covers all except Head; includes Banded Mail|
|Splint Mail| +3(+2) | 40| 700|Covers all except Head; 1 Armor is bypassed if hit with raise|
|Plate Corselet| +3 | 25| 400|Covers Torso only, Rigid|
|Plate Arms (Vambrace)| +3 | 10| 200|Covers Arms only, Rigid|
|Plate Leggings (Grieves)| +3 | 15| 300|Covers Legs only, Rigid|
|Partial Helm^^2^^| +3 | 4| 75|50% vs head shot|
|Full Helm^^2^^| +3 | 8| 150|Covers entire head|
|''Shields''^^2^^|>|>|>|>|
|Small Shield (Buckler)|| 8| 25|+1 Parry|
|Medium Shield|| 12| 50|+1 Parry, +2 Armor vs ranged shots|
|Large Shield (Kite, Pavise)|| 20| 200|+2 Parry, +2 Armor vs ranged shots|
^^1^^//This is effective weight when worn. Most armor weighs quite a bit more when carried rather than worn.//
^^2^^//Shields protect only against attacks from the front and left (assuming a right-handed character).//
back to [[Gear]]
''Rank:'' Novice
''Power Points:'' 2
''Range:'' Touch
''Duration:'' 3 (1/round)
''Trappings:'' A mystical glow, hardened skin, ethereal armor, a mass of insects or worms, densening.

Armor creates a field of magical protection around a character, or an actual shell of some sort, effectively giving the target Armor. Success grants the recipient 2 points of Armor. A raise grants 4 points of Armor.
back to [[Gear]]
|!''Barding'' //(For Horses & Other Mounts)//|>|>|>|>|
|!Type | !Armor | !Weight | !Cost (gp) |
|Leather| +1 | 30| 500|
|Chain| +2 | 40| 850|
|Plate| +3 | 50| 1250|
back to [[Gear]]
''Rank:'' Novice
''Power Points:'' Special
''Range:'' Smarts x 100 yards
''Duration:'' 10 minutes
''Trappings:'' The mage concentrates and gestures with his hands.

This spell allows mages to speak with and guide the actions of nature’s beasts. It works only on creatures with animal intelligence, not humanoids. Nor does it work on conjured, magical, or otherwise “unnatural” animals. The target must be within the sorcerer’s range—it is not conjured.

The cost to control a creature depends on its Size. The base cost is 3, plus twice its Size for creatures with a Size greater than 0. A great white shark (Size +4) costs 3 plus (2x4=) 8 or 11 points. A roc (Size +8) costs 19 Power Points to control.

Swarms may also be controlled. Small swarms cost 3, Mediums 5, and Large 8. Thus a single rat costs 3 to control, as does a small swarm of the creatures.
''Rank:'' Novice
''Power Points:'' 1-6
''Range:'' 12/24/48
''Duration:'' Instant
''Trappings:'' Fire, ice, light, darkness, colored bolts, insects.

Bolt is a standard attack power of wizards, and can also be used for ray guns, bursts of energy, streaks of holy light, and other ranged attacks. The damage of the bolt is 2d6.

''Additional Bolts:'' The character may cast up to 3 bolts by spending a like amount of Power Points. This must be decided before the power is cast. The bolts may be spread among targets as the character chooses.

Firing the additional bolts does not incur any attack penalties.

''Additional Damage:'' The character may also increase the damage to 3d6 by doubling the Power Point cost per bolt. This may be combined with the additional bolts, so firing 3 bolts of 3d6 damage costs 6 Power Points.
''Rank:'' Novice
''Power Points:'' 2
''Range:'' Smarts
''Duration:'' 3 (1/Round)
''Trappings:'' Physical change, glowing aura, potions.

This power allows a character to increase any of a target’s Traits by one die type for a standard success, and two with a raise. The affected Trait can exceed d12. Each step over d12 adds +1 to his Trait total. For example, a raise on someone who already has a d12 in the affected Trait grants him d12+2 for the duration of the power.

The power can also be used to lower an opponent’s Trait. This is an opposed roll against the victim’s Spirit. Success lowers any Trait of the caster’s choice one step, a raise lowers it two steps. A Trait cannot be lowered below a d4. Multiple castings stack, though the caster must keep track of when each casting expires as usual.
''Rank:'' Novice
''Power Points:'' 3
''Range:'' Smarts x 2
''Duration:'' 3 (2/round)
''Trappings:'' Dissolving into the earth and appearing elsewhere.

Burrow allows a mage standing on raw earth to meld into it. He can remain underground if he wants in a sort of “limbo” or burrow to anywhere within his range. A mage with a Smarts of d8 could therefore move up to 16” (32 yards) on the first round, maintain the spell and stay submerged for the second and “move” another 16”.

A burrowing earth mage can attempt to surprise a foe (even one who saw him burrow) by making an opposed Stealth versus Notice roll. If the mage wins, he gains +2 to attack and damage that round, or +4 with a raise. Targets on Hold may attempt to interrupt the attack as usual.
''Rank:'' Novice
''Power Points:'' 2
''Range:'' Flame Template
''Duration:'' Instant
''Trappings:'' A shower of flames, light, or other energy.

Burst produces a large fan of energy that bathes its targets in red-hot fire or other damaging energy. When cast, place the thin end of the Cone Template at the character’s front. Targets within the template may make Agility rolls versus the caster’s arcane skill roll to avoid the blaze. Those who fail suffer 2d10 damage. This counts as a Heavy Weapon. With a fire trapping, victims have a 1 in 6 chance of catching fire as well.
Karameikos follows the Thyatian dating, which measures the start of the modern calendar from the crowning of the first Emperor of Thyatis, 1000 years ago. Hence, the current year is 1000 A.C. (After Crowning).

Kaldmont, Nuwmont, and Vatermont are the months of winter; Thaumont, Flaurmont, and Yarthmont are the spring; Klarmont, Felmont, and Fyrmont are the summer; and Ambyrmont, Sviftmont, and Eirmont are the autumn.

Rainy season, with scattered showers every few days, starts in early Vatermont and continues into late Thaumont. Because of breezes coming off the southern ocean, summertime months tend not to be too uncomfortable (peaking at about 90 degrees F). Winter, too, is fairly mind; the warming ocean breezes and the barrier of the Altan Tepes mountains keep cold northern weather from descending in full force on Karameikos.
!!!Dates of Importance
On the calendar, the following dates are of particular importance to Karameikans.

;''1 Nuwmont''
:The start of the New Year. This calls for celebrations: most businesses close, there are parades in the streets and other winter festival activities, especially in Specularum. This year (AC 1000) 1 Nuwmont is the Millenium Celebration of the crowning of the Emperor of Thyatis, so the affair will be larger and louder than ever.

;''1 Vatermont''
:The Duke's and local tax collectors collect taxes for Sviftmont through Kaldmont of the previous year.

;''1 Thaumont''
:This is officially the first day of spring (regardless of the weather). The Gnome Caravan traditionally set out for Specularum on this day. This is also the traditional date for the start of the shipping season.

;''11 Thaumont''
:The Gnome Caravan usually arrives in Specularum on this day.

;''15 Thaumont''
:All trading done, the Gnome Caravan usually leaves Specularum on this day.

;''1 Yarthmont''
:The tax collectors collect taxes for Nuwmont through Thaumont of this year.

;''1 Klarmont''
:This is officially the first day of summer.

;''1 Felmont''
:Beast's Day. This is the traditional date of the last battle between King Halav and the Beast King, and is a big, lavish Traladaran holiday all over Karameikos. Participants dress up as Beast Men and wander the streets in parades, and there are mock battles between Beast Men and Men, dances, and other events commemorating the battle. Religious observations are held by clerics of the [[Church of Traladara]].

;''1 Fyrmont''
:The tax collectors collect taxes for Flaurmont through Klarmont of this year.

;''1 Ambyrmont''
:This is officially the first day of autumn.

;''28 Sviftmont''
:The Duke's Birthday. This is a holiday in Specularum, with events like those of the New Year celebration.

;''1 Eirmont''
:The tax collectors collect taxes for Felmont through Ambyrmont of this year.

;''1 Kaldmont''
:This is officially the first day of winter.
The Callarii elves live in the central forests east and west of Kelvin and in the forested foothills south of the gnomish community. Accurate numbers for the entire elven population of Karameikos are not available (the elves don't bother to keep them and the humans can't tally them), but a reasonable guess is that there are about 7,500 elves scattered through this territory, living in communities of 100-200.
!Creating Your Own Character
Follow these simple steps to create a //Novice// character. Novice is the default starting Rank in Savage Worlds, kind of like d20 Level 1 to 3 characters. Higher Ranks (in order) are: //Seasoned//, //Veteran//, //Heroic//, and //Legendary//.
!! 1) Choose a Race:
**[[Human]]
***[[Mixed-Blood Karameikan]]
***[[Thyatian]]
***[[Traladaran]]
**[[Elf]]
**[[Dwarf]]
**[[Gnome]]
**[[Halfling]]
!! 2) Traits:
Characters are defined by ''Attributes'' and ''Skills'', collectively called "Traits." Both work in exactly the same way: attributes and skills are ranked by die types, from a d4 to a d12, with d6 being the average for adult humans. Higher is better!
!!! Attributes
Your character starts with a d4 in each of his 5 ''Attributes'', and has 5 points with which to raise them. Raising an attribute by 1 die type costs 1 point. No attribute may be raised beyond d12 (for Novice characters, that is).
*''Agility'' is your hero’s nimbleness, quickness, and dexterity.
*''Smarts'' is a measure of how well your character knows his world and culture, how well he thinks on his feet, and mental agility.
*''Spirit'' reflects inner wisdom and willpower. Spirit is very important as it helps your character recover from being rattled when injured.
*''Strength'' is raw physical power and general fitness. Strength is also used to generate your warrior’s damage in hand-to-hand combat.
*''Vigor'' represents endurance, resistance to disease, poison, or toxins, and how much pain and physical damage a hero can shake off.
!!! Skills
''Skills'' are learned trades such as Shooting, Fighting, scientific Knowledge, Professional abilities, and so on. These are very general descriptions which cover all related aspects. Shooting, for example, covers all types of bows and other ranged weapons. You have 15 points to distribute among your skills. 

Each die type costs 1 point as long as the skill is equal to or less than the attribute it’s linked to (listed beside the skill in parentheses). If you exceed the attribute, the cost becomes 2 points per die type. As with attributes, no skill may be increased above d12.

Here's the [[list of skills|Master Skill List]].
!!! Derived Statistics
*''Charisma'' is a measure of your character’s appearance, manner, and general likability. It’s set to 0 unless you have Edges or Hindrances that modify it. Charisma is added to Persuasion and Streetwise rolls, and is used by the GM to figure out how NPCs react to your hero.
*''Pace'' is how fast your character moves in a standard combat round. Humans walk 6” in a round and can move an additional 1d6” if they run. Write “6” on your character sheet beside the word Pace. This is 6” on the tabletop — every inch there represents 2 yards in the “real world.”
*''Parry'' is equal to 2 plus half your character’s Fighting (2 if a character does not have Fighting), plus any bonuses for shields or certain weapons. This is the TN to hit your hero in hand-to-hand combat.
*''Toughness'' is your hero’s damage threshold. Anything over this causes him to be rattled or worse. Like Parry, Toughness is 2 plus half your hero’s Vigor, plus Armor (use the armor worn on his torso).
!! 3) Edges & Hindrances
Great heroes are far more than a collection of skills and attributes. It’s their unique gifts, special powers, and tragic flaws that truly make them interesting characters.

Characters can take Edges by balancing them out with Hindrances. Here's a [[list of Edges|Edges]] and a [[list of Hindrances|Hindrances]].

You can take up to one Major Hindrance and two Minor Hindrances. A Major Hindrance is worth 2 points, and a Minor Hindrance is worth 1 point.

For 2 points you can:
*Raise an attribute one die type (you may raise your attributes before purchasing skills).
*Choose an Edge.
For 1 point you can:
*Gain another skill point.
*Gain additional money equal to your starting funds (if you start with $500, you gain an additional $500)
!! 4) Choose Powers
If you picked either Arcane Background (Magic) or Arcane Background (Miracles) as Edges, you may now choose your [[Powers]], which are the specific spells or prayers you can cast.
!! 5) Gear
Next you need to purchase equipment. Here's a [[list of weapons and other gear found in Mystara|Gear]]. The standard starting amount of money is 500 //[[royals|Royals]]// (gold pieces).

Add all your Gear's weight to get your character's Encumbrance Penalty.
|!Weight Carried (in lbs.)|!Encumbrance Penalty|
|Up to Strength x 5 | +0|
|Up to Strength x 10 | -1|
|Up to Strength x 15 | -2|
|Up to Strength x 20 | -3|
!! 6) Background Details
Don't forget to choose your character's [[Languages]], [[Family Social Standing|Social Standing]], and [[Home Town]].

Finish your character by filling in any history or background you care to. Ask yourself why your hero is where she is and what her goals are. Or you can just start playing and fill in these details as they become important.
!!//Dedicated to serving a great and worthy cause//
Human Novice
''Attributes:'' Agility d4, Smarts d6, Spirit d8, Strength d6, Vigor d6
''Skills:'' Faith d8, Fighting d6, Healing d8, Knowledge (Religion) d6,Persuasion d8
''Derived Stats:'' Pace: 6"; Parry: 5 (6 with shield); Toughness: 5; Charisma: +0
''Edges:'' Arcane Background (Miracles), Holy Warrior, Healer
''Hindrances:'' Vow (honor and observe his Immortal patrons' rituals, uphold the tenets of the Church, must not wield weapons that draw blood; Major), Loyal (Minor), Stubborn (Minor)
''Power Points:'' 10
''Powers (Trapping):'' 
*Armor (battle chanting sheathes the cleric in holy light, protecting him from harm)
*Heal (a brief prayer to the cleric's Immortal patrons then touching the target with his holy symbol)
''Gear:'' Mace (Str+d6 dmg), Holy Symbol, Small Shield (+1 Parry), Clerical Robes, Shoes, Belt, Belt Pouch, 25 golden royals.
//Weight Limit: 30 lbs.; Encumbrance: 18.5 lbs.; Encumbrance Penalty: 0.//
/***
|Name:|CloseOnCancelPlugin|
|Description:|Closes the tiddler if you click new tiddler then cancel. Default behaviour is to leave it open|
|Version:|3.0.1 ($Rev: 3861 $)|
|Date:|$Date: 2008-03-08 10:53:09 +1000 (Sat, 08 Mar 2008) $|
|Source:|http://mptw.tiddlyspot.com/#CloseOnCancelPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
***/
//{{{
merge(config.commands.cancelTiddler,{

	handler_mptw_orig_closeUnsaved: config.commands.cancelTiddler.handler,

	handler: function(event,src,title) {
		this.handler_mptw_orig_closeUnsaved(event,src,title);
		if (!store.tiddlerExists(title) && !store.isShadowTiddler(title))
			story.closeTiddler(title,true);
	 	return false;
	}

});

//}}}

//Back to [[Gear]]//

Newly-created //Novice// characters can be assumed to own two or three sets of Plain Clothes, a pair of Shoes, a Belt, and a Belt Pouch.

|!''Clothing''|>|>|>|
|!Item |!Description/Notes | !Cost | !Weight |
|Belt|| 1 gp| ½^^1^^|
|Boots, plain|| 5 gp| 1^^1^^|
|Boots, riding or swash-topped|| 25 gp| 1½^^2^^|
|Cloak, short|| 3 gp| 1^^1^^|
|Cloak, long|| 5 gp| 2^^1^^|
|Clothes, plain|tunic & pants; blouse & skirt; dress; robe; or equivalent| 3 gp| 2^^1^^|
|Clothes, middle-class|See above| 25 gp| 2^^1^^|
|Clothes, fine|See above| 100 gp| 2^^1^^|
|Clothes, extravagant|See above| 250+ gp| 2^^1^^|
|Hat or cap|| 1 gp| 0.5^^1^^|
|Pouch, belt|Capacity 5 lbs.| 3 gp| ½^^2^^|
|Shoes|| 3 gp| 1^^1^^|
^^1^^//This is the weight if packed. If the clothes are worn, disregard the weight.//
^^2^^//This is the belt pouch's weight when empty. When goods placed inside it, the weight includes both the belt pouch's weight and the weight of the goods inside. Thus, a full belt pouch has a weight of 5½ lbs.//

//Back to [[Gear]]//

The family is not rich but does not suffer from want. It may own the property it lives on. It makes a decent living with occasional periods of great prosperity or financial turmoil. The PC's starting money represents the approximate amount the family gives to every youth leaving for the Shearing. The family is hoping that the character will prove to be a worthy person during the years he spends on his own. The family lives in an adequate home; family members have adequate clothes including footwear, traveling clothes, and (often) one fine outfit for social wear; most family members can afford a weapon of choice.
The silver piece (sp) is called the //''crona''//. On the obverse is the royal palace in Specularum; on the reverse are the inscriptions, “Grand Duchy of Karameikos” and “One crona.”

//1 sp = 10 cp = 1/10 gp//
The national language of the Republic of Darokin.
[[Welcome To Savage Mystara!]]
''Rank:'' Novice
''Power Points:'' 2
''Range:'' Touch
''Duration:'' 3 (1/round)
''Trappings:'' Mystical shield, gust of wind, phantom servant that intercepts the missiles.

Deflection powers work in a variety of ways. Some actually deflect incoming attacks, others blur the target’s form or produce other illusionary effects. The end result is always the same however—to misdirect incoming melee and missile attacks from the user.

With a standard success, attackers must subtract 2 from any Fighting, Shooting, or other attack rolls directed at the user. A raise increases the penalty to -4. This also acts as Armor against area effect weapons.
''Rank:'' Novice
''Power Points:'' 2
''Range:'' Sight
''Duration:'' 3 (1/round) or 1 hour (1/hour)
''Trappings:'' Waving hands, whispered words.

Detect/conceal arcana allows a character to sense supernatural persons, objects, or effects within sight. This includes invisible foes, enchantments on people or items, mad science devices, and so on.

The power can also be reversed to conceal a single supernatural item, being, or effect. This has the same cost, but the duration is much longer—1 hour with a maintenance cost of 1 per hour. When used in this way, those who wish to see through the ruse with detect arcana use their arcane skill roll as an opposed roll against the concealer’s skill (rolled anew each time detect arcana is cast).

The detecting character may only attempt to see through concealed powers once per fresh casting.
Back to [[Character Creation]]

Mystaran dwarves are short, stocky demihumans, between 4 and 4½ feet in height, with ruddy cheeks and bright, almost metallic eyes. Their skin varies from light tan to deep brown, and their hair ranges from black to gray to shades of brown.
!!!Attitudes
Most of the dwarves of the Known World originally come from [[Rockhome]], a dwarven nation north of [[Darokin]] and [[Ylaruam]]. The dwarves living in Karameikos are either members of the Stronghollow clan in the gnome community of [[Highforge]] or have immigrated into Karameikos, often serving as professional soldiers under the command of the duke or one of his barons.

If they have a preference at all (which is uncommon), dwarves favor the company of Thyatians, whom they consider practical, unlike the superstitious Traladarans. In turn, dwarves are dour, depressing, taciturn, and unimaginative when dealing with tasks beyond mining, metal-smithing, and warfare.
!!!Dress
Dwarves wear Thyatian styles during formal occasions, but the rest of the time they prefer the more practical adventuring apparel of humans.
!!!Names
Dwarf names are a bit hard-sounding and weighty. Typical men’s names include Thoric, Boldar, and Togyar. Typical women’s names include Friya and Brunna. Family names, often descriptive, also can reflect war-time deeds or professions, such as Shieldcracker or Ironboot.
!!! Game Crunch
*''Low Light Vision:'' Dwarven eyes are accustomed to the dark of the under-earth. They ignore attack penalties for Dim and Dark lighting.
*''Slow:'' Dwarves have a Pace of 5”.
*''Tough:'' Dwarves are stout and tough. They start with a d6 Vigor instead of a d4.
*''Languages'' //(Starting No. of Languages: Smarts/2)//'':'' Dwarves speak [[Dwarvish]] and [[Thyatian (the Common Tongue)]]. They may fill in additional language slots from [[Languages]].
Back to [[Character Creation]]
!!//Sturdy fighters, tough as the rock of their mountain homes//
Dwarf Novice
''Attributes:'' Agility d4, Smarts d4, Spirit d8, Strength d8, Vigor d10
''Skills:'' Fighting d8, Intimidate d6, Notice d6, Riding d8, Survival d4 
''Derived Stats:'' Pace: 5"; Parry: 6 (7 with shield); Toughness: 8; Charisma: -1
''Racial Traits:'' See [[Dwarf]] for the list of dwarven traits.
''Edges:'' Arcane Resistance (+2 Armor vs. magic; +2 to resist magic effects)
''Hindrances:'' Greedy (Major), Mean (Minor), Stubborn 
''Gear:'' Battle Axe (Str+d8 dmg, 10 lbs), Scalemail (+1 Armor), Partial Helm (50% vs headshot), Medium Shield (+1 Parry, +2 Armor vs ranged), Normal Clothes, Shoes, Belt, Belt Pouch, 25 golden royals.
//Weight Limit: 64 lbs.; Encumbrance: 53.5 lbs.; Encumbrance Penalty: -1//
All dwarves of Karameikan origin come from Highforge originally.

With the GM's permission, you can have your character now be a resident of another community, perhaps living in one of the larger human cities.
Dwarves have a more human-like social structure in their community. However, they tend to look after their own more than humans do, so there is no "Penniless" class among them.

|! (Roll 1d100 or choose) |>|
| 01-30 |[[Struggling]]|
| 31-60 |[[Comfortable]]|
| 61-95 |[[Wealthy|Wealthy/Untitled]]|
| 96-97 |[[Very Wealthy|Very Wealthy/Untitled]]|
| 98-00 |[[Ruling|Very Wealthy/Titled]]|

The Highforge community is a craftsman, mining, and trade community, so the fortunes of the very wealthy are based on creation and sale of exquisite crafts.

Among the dwarves in Highforge, the families of beginning craftsmen or miners (apprentices), or soldiers protecting the community, tend to be [[Struggling]].

The families of improved craftsmen or miners (journeymen), officers of the soldiery, and merchants who accompany the annual Gnome Caravan tend to be [[Comfortable]].

The families of ranking craftsmen and miners (masters) tend to be [[Wealthy|Wealthy/Untitled]].

The families of craftsmen of great ability (masters with exceptional skill) tend to be [[Very Wealthy|Very Wealthy/Untitled]].

The male and female heads of the Stronghollow dwarven family of Highforge can bear the titles of [[Lord and Lady|Very Wealthy/Titled]].
In Karameikos, this includes the dialect of the Stronghollow dwarven clan.
Back to [[Character Creation]]
Edges unavailable to Novice characters are @@color(gray):''grayed''@@ out.
|''Summary of Edges''|c
|!Edge|!Requirements|!Effects|
|''Background Edges''^^1^^|>|>|
|Alertness|Novice|+2 Notice|
|Ambidextrous|Novice, Agi d8|Ignore -2 penalty for using off-hand|
|Arcane Background: Magic|Novice|Allows access to //Mage//-type powers|
|Arcane Background: Miracles|Novice|Allows access to //Cleric//-type powers; must select [[Immortal|]] or Philosophy|
|Arcane Resistance|Novice, Spirit d8|Armor 2 vs. magic, +2 to resist magic effects|
| Improved Arcane Resistance|Novice, Arcane Resistance|Armor 4 vs. magic, +4 to resist magic effects|
|Attractive|Novice, Vigor d6|Charisma +2|
| Very Attractive|Novice, Attractive|Charisma +4|
|Berserk|Novice|Smarts roll or go Berserk after being wounded; +2 Fighting and Strength rolls, -2 Parry, +2 Toughness; Roll of 1 on Fighting die hits random adjacent target|
|Brawny|Novice, Str d6, Vigor d6|Toughness +1; load limit is 8xStr instead of 5xStr|
|Fast Healer|Novice, Vigor d8|+2 to natural healing rolls|
|Luck|Novice|+1 benny per session|
| Great Luck|Novice, Luck|+2 bennies per session|
|Noble|Novice|Rich; +2 Charisma; Character is noble born with status and wealth|
|Quick|Novice|Discard draw of 5 or less for new card|
|Rich|Novice|3x starting funds, $75K annual salary|
| Filthy Rich|Novice, Noble or Rich|5x starting funds, $250K annual salary|
|''Combat Edges''|>|>|
|bgcolor(gray):Block|bgcolor(gray):Seasoned, Fighting d8|bgcolor(gray):Parry +1|
|bgcolor(gray): Improved Block|bgcolor(gray):Veteran, Block|bgcolor(gray):Parry +2|
|bgcolor(gray):Combat Reflexes|bgcolor(gray):Seasoned|bgcolor(gray):+2 to recover from being Shaken|
|bgcolor(gray):Dodge|bgcolor(gray):Seasoned, Agi d8|bgcolor(gray):-1 to be hit with ranged attacks|
|bgcolor(gray): Improved Dodge|bgcolor(gray):Veteran, Dodge|bgcolor(gray):-2 to be hit with ranged attacks|
|First Strike|Novice, Agi d8|May attack one foe who move adjacent|
|bgcolor(gray): Improved First Strike|bgcolor(gray):Heroic, First Strike|bgcolor(gray):May attack every foe who moves adjacent|
|Fleet Footed|Novice, Agi d6|d10 running die instead of d6|
|Florentine|Novice, Agi d8, Fighting d8|+1 vs. foes with single weapon and no shield, ignore 1 point of gang up bonus|
|bgcolor(gray):Frenzy|bgcolor(gray):Seasoned, Fighting d10|bgcolor(gray):1 extra Fighting attack at -2|
|bgcolor(gray): Improved Frenzy|bgcolor(gray):Veteran, Frenzy|bgcolor(gray):As above but no penalty|
|bgcolor(gray):Giant Killer|bgcolor(gray):Veteran|bgcolor(gray):+4 damage when attacking large creatures|
|Hard to Kill|Novice, Wild Card, Spirit d8|Ignore wound penalties for Vigor rolls made on the Knockout or Injury tables|
|bgcolor(gray): Harder to Kill|bgcolor(gray):Veteran, Hard to Kill|bgcolor(gray):50% chance of surviving “death” by some means|
|bgcolor(gray):Level Headed|bgcolor(gray):Seasoned, Smarts d8|bgcolor(gray):Act on best of two cards in combat|
|bgcolor(gray): Improved Level Headed|bgcolor(gray):Seasoned, Level Headed|bgcolor(gray):Act on best of three cards in combat|
|bgcolor(gray):Marksman|bgcolor(gray):Seasoned|bgcolor(gray):Character gets the Aim maneuver (+2 Shooting) if he does not move|
|Nerves of Steel|Novice, Wild Card, Vigor d8|Ignore 1 point of wound penalties|
| Improved Nerves of Steel|Novice, Nerves of Steel|Ignore 2 points of wound penalties|
|bgcolor(gray):No Mercy|bgcolor(gray):Seasoned|bgcolor(gray):Spend a benny to reroll damage; 1 benny/target for area effect attacks|
|Quick Draw|Novice, Agility d8|May automatically draw weapon as a free action|
|bgcolor(gray):Rock and Roll!|bgcolor(gray):Seasoned, Shooting d8+|bgcolor(gray):Ignore recoil penalty for full auto weapons if he doesn't move|
|Steady Hands|Novice, Agility d8|Ignore unstable platform penalty for mounts or vehicles|
|Sweep|Novice, Strength d8, Fighting d8|Attack all adjacent foes at -2|
|bgcolor(gray): Improved Sweep|bgcolor(gray):Veteran, Sweep|bgcolor(gray):As above but with no penalty|
|Trademark Weapon|Novice, Fighting or Shooting d10|+1 Fighting or Shooting with one particular weapon|
|bgcolor(gray): Improved Trademark Weapon|bgcolor(gray):Veteran, Trademark Weapon|bgcolor(gray):+2 Fighting or Shooting with one particular weapon|
|Two Fisted|Novice, Agility d8|May attack with a weapon in each hand without multi-action penalty|
|''Leadership Edges''|>|>|
|Command|Novice, Smarts d6|+1 to troops recovering from being Shaken within 5”|
|bgcolor(gray):Fervor|bgcolor(gray):Veteran, Spirit d8, Command|bgcolor(gray):+1 melee damage to troops in command|
|bgcolor(gray):Hold the Line!|bgcolor(gray):Seasoned, Smarts d8, Command|bgcolor(gray):Troops have +1 Toughness|
|bgcolor(gray):Inspire|bgcolor(gray):Seasoned, Command|bgcolor(gray):+1 to Spirit rolls of all troops in command|
|Natural Leader|Novice, Spirit d8, Command|Leader may give bennies to troops in command|
|''Power Edges''|>|>|
|New Power|Novice, Arcane Background|Character gains one new power|
|Power Points|Novice, Arcane Background|+5 Power Points, once per rank only|
|bgcolor(gray):Rapid Recharge|bgcolor(gray):Seasoned, Spirit d6, Arcane Background|bgcolor(gray):Regain 1 Power Point every 30 minutes|
|bgcolor(gray):Improved Rapid Recharge|bgcolor(gray):Veteran, Spirit d8, Arcane Background|bgcolor(gray):Regain 1 Power Point every 15 minutes|
|bgcolor(gray):Soul Drain|bgcolor(gray):Seasoned, Special|bgcolor(gray):Special|
|''Professional Edges''|>|>|
|Ace|Novice|+2 to Boating, Driving, Piloting; may make soak rolls for vehicle at -2|
|Acrobat|Novice, Agi d8, Str d6|+2 to nimbleness-based Agility rolls; +1 Parry if unencumbered|
|Champion|Novice, Arcane Background (Miracles), Spirit d8, Strength d6, Vigor d8, Faith d6, Fighting d8|+2 damage and Toughness vs. supernatural evil|
|Holy/Unholy Warrior|Novice, Arcane Background (Miracles), Spirit d8, Faith d6|Spend 1 Power Point to make evil creatures within Sp range make Spirit checks or be Shaken; roll of 1 kills Extras, wounds Wild Cards|
|Investigator|Novice, Smarts d8, Investigation d8, Streetwise d8|+2 Investigation and Streetwise|
|Jack Of All Trades|Novice, Smarts d10+|Unskilled Smarts-based rolls are at d4 instead of d4-2|
|Scholar|Novice, d8 in affected skills|+2 to two different Knowledge skills|
|Thief|Novice, Agility d8, Climb d6, Lockpick d6, Stealth d8|+2 Climb, Lockpick, Stealth, or to disarm traps|
|Wizard|Novice, Arcane Background (Magic), Smarts d8, Knowledge (arcana) d8, Spellcasting d6|Each Spellcasting raise reduces cost of spell by 1 point|
|Woodsman|Novice, Spirit d6, Survival d8, Tracking d8|+2 Tracking Survival, and Stealth (while in Wilderness)|
|''Social Edges''|>|>|
|Charismatic|Novice, Spirit d8|Charisma +2|
|Common Bond|Wild Card, Spirit d8|May give bennies to companions in communication|
|Connections|Novice|Call upon powerful friends with Persuasion roll|
|Strong Willed|Novice, Intimidation d6, Taunt d6|+2 Intimidation and Taunt, +2 to resist|
|''Weird Edges''|>|>|
|Beast Bond|Novice|Character may spend bennies for his animals|
|Beast Master|Novice, Spirit d8|You gain an animal companion|
|Danger Sense|Novice|Notice at -2 to detect surprise attacks/danger|
|Healer|Novice, Spirit d8|+2 Healing|
|''Wild Card Edges''|>|>|
|bgcolor(gray):Dead Shot|bgcolor(gray):Wild Card, Seasoned, Shoot/Throw d10|bgcolor(gray):Double ranged damage when dealt Joker|
|bgcolor(gray):Mighty Blow|bgcolor(gray):Wild Card, Seasoned, Fighting d10|bgcolor(gray):Double melee damage when dealt Joker|
|bgcolor(gray):Power Surge|bgcolor(gray):Wild Card, Seasoned, arcane skill d10|bgcolor(gray):+2d6 Power Points when dealt a Joker|
|''Legendary Edges''|>|>|
|bgcolor(gray):Followers|bgcolor(gray):Legendary, Wild Card|bgcolor(gray):Attract 5 henchmen|
|bgcolor(gray):Professional|bgcolor(gray):Legendary, d12 in trait|bgcolor(gray):Trait becomes d12+1|
|bgcolor(gray): Expert|bgcolor(gray):Legendary, Professional in trait|bgcolor(gray):Trait becomes d12+2|
|bgcolor(gray): Master|bgcolor(gray):Legendary, Wild Card, Expert in Trait|bgcolor(gray):Wild Die is d10 for one trait|
|bgcolor(gray):Sidekick|bgcolor(gray):Legendary, Wild Card|bgcolor(gray):Character gains a Novice Wild Card sidekick|
|bgcolor(gray):Tough as Nails|bgcolor(gray):Legendary|bgcolor(gray):Toughness +1|
|bgcolor(gray): Improved Tough as Nails|bgcolor(gray):Legendary, Tough as Nails|bgcolor(gray):Toughness +2|
|bgcolor(gray):Weapon Master|bgcolor(gray):Legendary, Fighting d12|bgcolor(gray):Parry +1|
|bgcolor(gray): Master of Arms|bgcolor(gray):Legendary, Weapon Master|bgcolor(gray):Parry +2|
^^1^^//Background Edges—must be chosen during character creation//
''Rank:'' Novice
''Power Points:'' 1
''Range:'' Smarts x 2
''Duration:'' Instant
''Trappings:'' A few simple gestures.
A character who chooses this power must select one particular element to control (though he may choose other elements as a new power). This allows him to perform basic “tricks” within his chosen element. The specific tasks that may be attempted are listed below.

''Air:'' The caster can create lesser air currents to blow out a candle, fan a flame, lift a skirt, or cool his body in oppressive heat (+1 to a single Fatigue roll caused by heat).
''Earth:'' A wave of the hand can open a one-foot square hole in soft earth (or half that in stone), or cause a spray of sand that might blind an opponent (+1 to a Trick roll).
''Fire:'' The caster can snap his fingers to create a small flame (about the size of a hot match). With existing fire, he can urge it to spread (+1 to see if a fire spreads), cause it to flare (perhaps as part of a Trick maneuver), or slowly light an object over the course of a few rounds (as if holding a match to it).
''Water:'' The caster can conjure up to a pint of water somewhere within his sight (not “inside” objects or people. A wave of his hand also purifi es one gallon of water, whether it be poisoned or simply salt-water. Those who have been poisoned within the last minute also get a second chance to resist any remaining effects.
Back to [[Character Creation]]

At least two major waves of elves have migrated into Karameikos. The earliest wave dates back to the first elf refugees from their great empires to the south; the Vyalia elves are the only remnant of that wave. The Callarii elves later entered Karameikos during its dark age and still occupy much of the forested land of the central region. Most recently, a few Alfheim elves have crossed the border into the kingdom.
!!!Appearance
All elves share certain racial characteristics. They tend to be shorter and slimmer than most humans, including Traladarans (5 feet tall for both males and females and weighing a maximum of 120 lbs.). Mystaran elves have pointed ears. Callarii elves are robust and healthy, with very pale hair (blond to white) and blue eyes. Vyalia have pale skin, reddish hair, and deep green eyes. The Alfheim elves tend to have fair skin and blond, light brunette, or white hair.
!!!Attitudes
The Callarii are the most prolific of the Karameikan elves, a merry and hard-working tribe proficient in riverboating, riding, horse trading, hunting, and forestry. The Callarii elves feel neutral toward humans in general. They become fast friends with humans who demonstrate honor and humor, but they do not cooperate with humans who act pretentious, dishonorable, or rude. Duke Stefan has a guard unit entirely composed of Callarii elves, which has given many elves the chance to meet him and has made the Callarii favorable disposed toward the Duke.

The Vyalia elves, on the eastern border, are more reclusive, staying away from human settlements. The Vyalia clans across the border in Thyatis tend to have closer ties to humans, but the clans in Karameikos prefer to seek the sanctuary and stillness of the deep woods.

The Alfheim elves are wanderers from their northern homeland. In their own country, they were  the dominant race, so some individuals have a haughty attitude toward humans that makes even the Thyatians’ attitude toward Traladarans seem friendly by comparison.
!!!Dress
Elves prefer to wear tunics or robes of green with leaf patterns embroidered upon them, and elves native to the Karameikan forests eschew jewelry. Typical weapons include long swords and short bows.
!!!Names
Karameikan elves (both Callarii and Vyalia) usually have only one lyrical and unique name. Thalaric and Allandaros are typical male names, while Sythandria and Stellara suit females. Alfheim elves take on surnames, either a clan or family name (Chossun, Brendelar) or something descriptive (Trollbaiter, Shadowslayer).
!!!Game Crunch
Elves:
*''Agile:'' Elves are graceful and agile. They start with a d6 in Agility instead of a d4.
*''All Thumbs:'' Elves have an inbred dislike of mechanical objects, and thus have the All Thumbs [[Hindrance|Hindrances]]. They shun most mechanical items and designs.
*''Low Light Vision:'' Elven eyes amplify light like a cat, allowing him to see in the dark. He ignores attack penalties for Dim and Dark lighting.
*''Languages'' //(Starting No. of Languages: Smarts/2)//'':'' Elves speak [[Elvish]] and [[Thyatian (the Common Tongue)]]. They may fill in additional language slots from [[Languages]].
Back to [[Character Creation]]
!!//Slender and graceful, Elves combine fighting abilities with a fascination with magical spells//
Elven Novice
''Attributes:'' Agility d8, Smarts d6, Spirit d6, Strength d6, Vigor d6
''Skills:'' Fighting d, Intimidate d, Notice d, Riding d, Survival d 
''Derived Stats:'' Pace: 6"; Parry: ( with shield); Toughness: ; Charisma: 
''Racial Traits:'' See [[Elf]] for the list of elven traits.
''Languages:'' Elvish, Thyatian, +1 language of player's choice
''Edges:'' 
''Hindrances:''  
''Gear:'' 
//Weight Limit:  lbs.; Encumbrance:  lbs.; Encumbrance Penalty: +0//
You're free to choose where your elf comes from (with GM approval). The woods where the elves are most numerous are shown on the map, and your character is most likely to have grown to maturity in those woods.

However, you can also choose your character's current residence. Many warrior-elves have served in the Duke's Elvenguard in [[Specularum]] and now live in the human communities working as freelance soldiers and adventurers.
Though elves in Karameikos do have complicated and intricate social structures, "social standing" is not an important element of that structure. An elf's profession, and the way their professions are related and utilized to the good of the clan, are the important elements of the elvish social structure.

So most Karameikan elves are "commoners," or elves who go about their professions - foresting, hunting, fishing, fighting, animal training, scouting, etc. Some few families are community "lords," and it is they who coordinate the efforts of the community.

None of the elves in Karameikos live in grinding poverty or in lavish wealth. By human standards, all elves are [[Comfortable]].

Common elves comprise 90% of the elven population, while elf lords account for the remaining 10%.
In Karameikos, Elvish includes both the Callarii and Vyalia dialects.
''Rank:'' Novice
''Power Points:'' 2-4
''Range:'' Smarts
''Duration:'' Special
''Trappings:'' Glue bomb, vines, handcuffs, spider webs 

This power allows the character to restrain a target with snaking vines, lengths of hair, spider webs, or some other vine-like trapping. The arcane skill roll is opposed by the target’s Agility. Success indicates partial restraint so that the target suffers a –2 penalty to Pace and skills linked to Agility and Strength. A raise restrains the target fully. He cannot move or use any skills linked to Agility or Strength.

Each following round, an entangled target may make a Strength or Agility roll to break free. Other characters may also attempt to free the ensnared person by making a Strength roll at -2.

For 2 Power Points, entangle targets a single opponent. For 4 points, it affects everyone in Medium Burst Template.
''Rank:'' Novice
''Power Points:'' 2
''Range:'' Touch
''Duration:'' 1 hour (1/Hour)
''Trappings:'' A mark on the forehead, potions, “gills.”

Adventurers sometimes travel beneath the waves, in space, or other hazardous environments. This power allows the target to breathe, speak, and move at his normal Pace while underwater, in zero-G, a vacuum, in the lava of a volcano or the heat of the sun, the arctic wastes, and so on. Pressure, atmosphere, air, etc, are all provided for the character. Complete protection is offered only for background hazards. A fire attack still causes normal damage even with environmental protection, for example. A success is needed to accomplish the power. With a raise, maintaining the power becomes 1 Power Point per 2 hours (for that particular target).
/***
|Name:|ExtentTagButtonPlugin|
|Description:|Adds a New tiddler button in the tag drop down|
|Version:|3.2 ($Rev: 3861 $)|
|Date:|$Date: 2008-03-08 10:53:09 +1000 (Sat, 08 Mar 2008) $|
|Source:|http://mptw.tiddlyspot.com/#ExtendTagButtonPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License|http://mptw.tiddlyspot.com/#TheBSDLicense|
***/
//{{{

window.onClickTag_mptw_orig = window.onClickTag;
window.onClickTag = function(e) {
	window.onClickTag_mptw_orig.apply(this,arguments);
	var tag = this.getAttribute("tag");
	var title = this.getAttribute("tiddler");
	// Thanks Saq, you're a genius :)
	var popup = Popup.stack[Popup.stack.length-1].popup;
	createTiddlyElement(createTiddlyElement(popup,"li",null,"listBreak"),"div");
	wikify("<<newTiddler label:'New tiddler' tag:'"+tag+"'>>",createTiddlyElement(popup,"li"));
	return false;
}

//}}}

''Rank:'' Novice
''Power Points:'' 2
''Range:'' Smarts x 2
''Duration:'' Instant
''Trappings:'' Gestures, eldritch energy, cold chills.

This power causes the target overwhelming dread and horror. The area of effect is the Large Burst Template. Every creature beneath the template must make a Guts check, apply -2 to the Guts roll if the caster got a raise. Wild Cards who fail roll on the Fear Table. Extras are Panicked instead.
!!//Hit more often, inflict more damage//
Human Novice
''Attributes:'' Agility d6, Smarts d4, Spirit d6, Strength d8, Vigor d8
''Skills:'' Fighting d8, Intimidate d6, Notice d6, Riding d8, Survival d4 
''Derived Stats:'' Pace: 6"; Parry: 6 (8 with shield); Toughness: 8; Charisma: +0
''Edges:'' Brawny (+1 Toughness, Wt. Limit x8), Rich (x3 starting funds)
''Hindrances:'' Code of Honor (major), Enemy (minor), Vengeful (minor) 
''Gear:'' Long sword (Str+d8 dmg, 8 lbs), Chainmail (+2 Armor), Full Helm (covers head, -2 Notice), Large Shield (+2 Parry, +2 Armor vs ranged), Normal Clothes, Shoes, Belt, Belt Pouch, 700 golden royals.
//Weight Limit: 64 lbs.; Encumbrance: 53.5 lbs.; Encumbrance Penalty: -1//
This town, once called Halag, was invaded and conquered by Baron Ludwig von Hendriks, Duke Stefan's power-mad cousin. (He didn't need to conquer it - he'd been granted the area as his baronial lands - but he wanted to //conquer// something.)

It's a dreary, unhappy farming community of about 10,000, held in tight repression by the Baron von Hendrik's army.
Back to [[Character Creation]]
!!!Armor
*[[Armor]]
*[[Barding]]
!!!Weapons
*[[Melee & Thrown]]
*[[Ranged]]
!!!Other Gear
Newly-created //Novice// characters can be assumed to own two or three sets of Plain Clothes, a pair of Shoes, a Belt, and a Belt Pouch.
*[[Adventuring Gear]]
*[[Clothing]]
//back to [[Character Creation]]
The language of the Gnolls.
Back to [[Character Creation]]
!!!Earth Gnomes
The gnomes of Mystara are small (about 3½ feet tall) demihuman creatures believed to be from the same base stock as the Mystaran dwarves (at least the dwarves and gnomes believe this and  tend to treat each other as cousins). Gnomes, more slender than dwarves, have rather pronounced noses, of which they are quite proud. Their skin ranges from dark tan to woody brown in color, their hair is pale blond or red running to white, and their eyes are usually a brilliant blue.
!!!Attitudes
The largest gnomish community, called [[Highforge]], rests in the mountain foothills about 30 miles southeast of the town of [[Threshold]]. A large and secluded community of gnomes and a few dwarves, Highforge is mostly self sufficient but profits from trade with humans. Highforge operates under its own law, ruled by the gnome-king Hilltopper.

The gnomes are well disposed toward the duke. They were insulated against much of the early Thyatian abuse against the Traladarans, and as a result they have no particular preference between Thyatians and Traladarans. Improved trade and communication because of the Duke’s road-building have led to greater profit for the gnomes.
Dress: Gnomes favor traditional Traladaran dress styles, and many prefer a nose ring as a part of their jewelry.
!!!Names
Most Mystaran gnomes have a given name and a clan name. In general, gnome names are two-syllables, similar to the Celtic and Norse naming traditions of our own world.

Gnome clan names are combinations of common Gnome words, and gnomes always translate them into Common when in human lands (or into Elven when in elven lands, and so on).

//Common Given Names:// Branwys, Dorfus, Erwys, Glimreen, Gundal, Marrak.

//Major Clan Names:// Hilltopper.
!!!Game Crunch
*''Inquisitive:'' Gnomes are intensely curious and loves collecting bit and pieces of lore. They start with a d6 in Smarts, instead of a d4.
*''Low Light Vision:'' Gnomish eyes are accustomed to the darkness of their deep burrows in the earth, allowing him to see in the dark. He ignores attack penalties for Dim and Dark lighting.
*''Small:'' The gnomes’ small size subtracts 1 from their Toughness. Gnomes have a Size of -1 and cannot take the Small Hindrances.
*''Slow:'' Gnomes have a Pace of 4”.
*''Sturdy As A Rock:'' Like the very granite they mine, Gnomes are hard to break. They start with a d6 Vigor instead of a d4.
*''Languages'' //(Starting No. of Languages: Smarts/2)//'':'' Gnomes speak [[Thyatian (the Common Tongue)]] and [[Gnomish]]. They may fill in additional slots from the list of [[Languages]].
Back to [[Character Creation]]
In Karameikos, this includes the Highforge dialect.
The language of the Goblins.
Back to [[Character Creation]]

A halfling (or //hin// as they call themselves) is a short demihuman, and looks much like a human child with slightly pointed ears. A halfling stands about 3' tall and weighs about 60 lbs. Halflings rarely have beards.

Halflings are outgoing but not unusually brave, seeking treasure as a way to gain the comforts of home, which they so dearly love. Halflings prefer to live in pleasant areas of fair countryside near rolling hills and gentle streams. When not working or adventuring, halflings will spend most of their time eating, drinking, talking with friends, and relaxing.

Their communities are called //shires//, and their recognized spokesman is called a //Sheriff//. Halfling families live in Clans. 

Halflings are woodland folk, and usually get along well with elves and dwarves.
!!!Halflings in the Grand Duchy
The halflings in the Duchy are mostly immigrants from the [[Five Shires]], drawn by the heavy trade in Karameikos and living as professionals within the human communities of the Duchy. There are many halfling traders, craftsmen, and innkeepers in [[Specularum]], [[Kelvin]], and smaller communities. While there are no large halfling clans in Karameikos, the halflings have their own "subculture," and many frequent taverns and other facilities which cater only to halflings. When halflings do admit a preference between [[Thyatians|Thyatian]] and [[Traladarans|Traladaran]], they side beside the latter, whom they consider a life-loving, romantic, expressive people, instead of the Thyatians, whom they think colder and less sympathetic.
!!!Halfling Name Guidelines
Halfling given names are just like common English given names.

Family names have several syllables and describe family characteristics or professions.

Examples might include Bill Trenchermann (from a family of big eaters) or Anna Hillfort (from a family with a well-defended hilltop home).
!!!Game Crunch
*''Fortunate:'' Half-folk draw one additional [[benny|Bennies]] per game session. This may be combined with the Luck and Great Luck Edges.
*''Small:'' Halflings average only about 4' tall. Their small size subtracts 1 from their Toughness. Halflings have a Size of -1 and cannot take the Small [[Hindrance|Hindrances]].
*''Spirited:'' Halflings are generally optimistic. They start with a d6 in Spirit instead of a d4.
*''Languages'' //(Starting No. of Languages: Smarts/2)//'':'' Thyatians speak [[Thyatian (the Common Tongue)]]. They may choose additional languages from [[Elvish]], [[Gnomish]], and [[Traladaran|Traladaran Language]]. A compelling reason must be provided to choose other [[languages|Languages]].
Back to [[Character Creation]]
You may choose your home town, subject to GM approval.
|! (Roll 1d100 or Choose) |>|
| 01-20 |[[Penniless]]|
| 21-50 |[[Struggling]]|
| 51-95 |[[Comfortable]]|
| 96-00 |[[Wealthy/Untitled]]|
''Rank:'' Novice
''Power Points:'' 3
''Range:'' Touch
''Duration:'' Instant
''Trappings:'' Laying on hands, touching the victim with a holy symbol, prayer.

Healing repairs recent bodily damage. It must be used within the “golden hour,” though, for it has no effect on wounds more than one hour old.

For Wild Cards, each use of the healing spell removes a wound with a success, and two with a raise. The roll suffers a penalty equal to the victim’s wounds (in addition to any the caster might be suffering himself).

For Extras, the GM must first determine if the ally is dead. If so, no healing may be attempted. If not, a successful arcane skill roll returns the ally to the game Shaken.

Healing can also cure poison and disease if used within 10 minutes of the event.
/***
|Name:|HideWhenPlugin|
|Description:|Allows conditional inclusion/exclusion in templates|
|Version:|3.1 ($Rev: 3919 $)|
|Date:|$Date: 2008-03-13 02:03:12 +1000 (Thu, 13 Mar 2008) $|
|Source:|http://mptw.tiddlyspot.com/#HideWhenPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
For use in ViewTemplate and EditTemplate. Example usage:
{{{<div macro="showWhenTagged Task">[[TaskToolbar]]</div>}}}
{{{<div macro="showWhen tiddler.modifier == 'BartSimpson'"><img src="bart.gif"/></div>}}}
***/
//{{{

window.hideWhenLastTest = false;

window.removeElementWhen = function(test,place) {
	window.hideWhenLastTest = test;
	if (test) {
		removeChildren(place);
		place.parentNode.removeChild(place);
	}
};


merge(config.macros,{

	hideWhen: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( eval(paramString), place);
	}},

	showWhen: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( !eval(paramString), place);
	}},

	hideWhenTagged: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( tiddler.tags.containsAll(params), place);
	}},

	showWhenTagged: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( !tiddler.tags.containsAll(params), place);
	}},

	hideWhenTaggedAny: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( tiddler.tags.containsAny(params), place);
	}},

	showWhenTaggedAny: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( !tiddler.tags.containsAny(params), place);
	}},

	hideWhenTaggedAll: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( tiddler.tags.containsAll(params), place);
	}},

	showWhenTaggedAll: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( !tiddler.tags.containsAll(params), place);
	}},

	hideWhenExists: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( store.tiddlerExists(params[0]) || store.isShadowTiddler(params[0]), place);
	}},

	showWhenExists: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( !(store.tiddlerExists(params[0]) || store.isShadowTiddler(params[0])), place);
	}},

	hideWhenTitleIs: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( tiddler.title == params[0], place);
	}},

	showWhenTitleIs: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( tiddler.title != params[0], place);
	}},

	'else': { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( !window.hideWhenLastTest, place);
	}}

});

//}}}

This is the gnomish community, including five clans of gnomes (totalling about 6,500) and one of dwarves (about 1,000).
Back to [[Character Creation]]
|''Savage Worlds Hindrances Summary''|c
|!Hindrance|!Type|!Effects|
|All Thumbs|Minor|-2 Lockpicking & Repair; requires Agi roll to activate any magic item that isn't always on or self-activating. Roll of 1 (regardless of Wild Die) causes malfunction/mishap (trap fires, potion spills, scroll tears, wand is pointed backward, etc); also applies to firing crossbows|
|Anemic|Minor|-2 Vigor to resist sickness, disease, poison or environment|
|Arrogant|Major|Hero knows he is the best|
|Bad Eyes|Minor/Major|-2 to attack or notice something more than 5” distant|
|Bad Luck|Major|One less [[benny|Bennies]] per session|
|Big Mouth|Minor|Blurts out secrets, usually at worst possible times|
|Blind|Major|-6 to physical, -2 to social actions|
|Bloodthirsty|Major|Never takes prisoners|
|Cautious|Minor|Character is overly cautious|
|Clueless|Major|-2 to most Common Knowledge rolls|
|Code of Honor|Major|The character keeps his word and acts like a gentleman|
|Curious|Major|Character wants to know about everything|
|Death Wish|Minor|Hero wants to die after completing some task|
|Delusional|Minor/Major|Character suffers from grave delusions|
|Doubting Thomas|Minor|Character doesn’t believe in the supernatural|
|Elderly|Major|Pace -1, -1 to Strength and Vigor die types; 5 extra skill points for any skill linked to Smarts|
|Enemy|Minor/Major|The character has a recurring nemesis of some sort|
|Greedy|Minor/Major|The character is obsessed with wealth|
|Habit|Minor/Major|A Minor Habit is simply annoying (Charisma -1); characters must make Fatigue rolls when deprived of Major Habits|
|Hard of Hearing|Minor/Major|-2 to Notice sounds; automatic failure if completely deaf|
|Heroic|Major|The character is a true hero and always helps those in need|
|Illiterate|Minor|Can't read nor write|
|Lame|Major|-2 Pace and running die is a d4|
|Loyal|Minor|The hero tries to never betray or disappoint his friends|
|Mean|Minor|The character suffers -2 to his Charisma for his ill-temper and surliness|
|Obese|Minor|+1 Toughness, -1 Pace, d4 running die|
|One Arm|Major|Two-handed tasks are at -4|
|One Eye|Major|-1 Cha if uncovered, -2 to Shooting/Trhowing rolls, jumping, etc|
|One Leg|Major|Like Lame, Pace -2, can't run, actions requiring mobility are at -2|
|Outsider|Minor|-2 Charisma, treated badly by those of the more dominant society|
|Overconfident|Major|The hero believes he can do anything|
|Pacifist|Minor/Major|The character fights only in self-defense (Minor) & won’t fight living creatures under any circumstance (Major)|
|Phobia|Minor/Major|irrational fear, -2 Trait tests (Minor), -4 (Major)|
|Poverty|Minor|Half starting funds, general inability to hang onto future income|
|Quirk|Minor|The character has some minor but persistent foible, such as bragging, elitism, or the pursuit of fame|
|Small|Major|-1 Toughness|
|Stubborn|Minor|Hero always wants his way|
|Ugly|Minor|-2 Charisma due to the character’s less-than-average appearance|
|Vengeful|Minor/Major|Character holds a grudge, will kill to settle the score as a Major Hindrance|
|Vow|Minor/Major|The hero has a pledge to himself, a group, a deity, or a religion|
|Wanted|Minor/Major|The character is a criminal of some sort|
|Yellow|Major|The character is cowardly and suffers -2 to his Guts rolls|
|Young|Major|3 points for Attributes (instead of 5); 10 skill points (instead of 15), +1 benny per session|
Back to [[Character Creation]]
The language of the Hobgoblins.
!!Home Towns By Race
*[[Humans|Human Home Town]]
*[[Dwarves & Gnomes|Dwarven Home Town]]
*[[Elves|Elven Home Town]]
*[[Halflings|Halfling Home Town]]
Most humans of the Grand Duchy of Karameikos fall into two categories: Native [[Traladarans|Traladaran]] (about 70% of the human population in the Grand Duchy) and those of [[Thyatian]] (10% of the population) descent. Other human inhabitants include those of [[mixed descent|Mixed-Blood Karameikan]] (20%).

Back to [[Character Creation]]
You may roll 1d20 + any applicable modifiers below and consult the table, or choose a likely result instead.

|!d20|!Home Town|
| 1-3 |Black Eagle Barony|
| 4-10 |Homestead (Choice)|
| 11-13 |Village/Town (Choice)|
| 14-16 |Kelvin|
| 17+ |Specularum|

|!Modifiers:|>|
|Character has [[Arcane Background (Miracles)]]| +2|
|Character has [[Arcane Background (Magic)]]| +4|
|Character's Family is [[Comfortable]]| +2|
|Character's Family is [[Wealthy|Wealthy/Untitled]]| +4|
|Character's Family is [[Very Wealthy|Very Wealthy/Untitled]]| +6|
!!!Results
*''Black Eagle Barony:'' Your character grew up in the awful barony ruled by Ludwig von Hendriks. Either he successfully fled the Barony at the time of his Shearing, but his family is still there. Or, he is probably in the employ of or related to the Black Eagle Baron.
*''Homestead:'' You grew up in one of the innumerable family homesteads scattered across Karameikos. You may decide where it is and may even choose one listed on the map, with the GM's approval.
*''Village/Town:'' You grew up in one of the numerous Karameikan villages or towns. You may decide which is your home town from the ones shown on the map, with the GM's approval.
*''Kelvin, Specularum:'' You grew up in the city indicated.
!!Savage Worlds Notes
*Human characters with the ''Poverty'' Hindrance are probably come from a [[Penniless]] or [[Struggling]] family.
*Human Characters with the ''Rich'' Edge are probably come from a [[Wealthy/Untitled]] family.
*Human Characters with the ''Noble'' Edge are probably come from a [[Wealthy/Titled]] family.
*Human Characters with both the ''Rich'' and ''Filthy Rich'' Edges are probably come from a [[Very Wealthy/Untitled]] family.
*Human Characters with both ''Noble'' and ''Filthy Rich'' Edges are probably come from a [[Very Wealthy/Titled]] family, or even be from the [[Royal Family]].
*Human Characters with none of the above Edges or Hindrance are probably from a [[Comfortable]] family.
/***
|Name:|InstantTimestampPlugin|
|Description:|A handy way to insert timestamps in your tiddler content|
|Version:|1.0.10 ($Rev: 3646 $)|
|Date:|$Date: 2008-02-27 02:34:38 +1000 (Wed, 27 Feb 2008) $|
|Source:|http://mptw.tiddlyspot.com/#InstantTimestampPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!!Usage
If you enter {ts} in your tiddler content (without the spaces) it will be replaced with a timestamp when you save the tiddler. Full list of formats:
* {ts} or {t} -> timestamp
* {ds} or {d} -> datestamp
* !ts or !t at start of line -> !!timestamp
* !ds or !d at start of line -> !!datestamp
(I added the extra ! since that's how I like it. Remove it from translations below if required)
!!Notes
* Change the timeFormat and dateFormat below to suit your preference.
* See also http://mptw2.tiddlyspot.com/#AutoCorrectPlugin
* You could invent other translations and add them to the translations array below.
***/
//{{{

config.InstantTimestamp = {

	// adjust to suit
	timeFormat: 'DD/0MM/YY 0hh:0mm',
	dateFormat: 'DD/0MM/YY',

	translations: [
		[/^!ts?$/img,  "'!!{{ts{'+now.formatString(config.InstantTimestamp.timeFormat)+'}}}'"],
		[/^!ds?$/img,  "'!!{{ds{'+now.formatString(config.InstantTimestamp.dateFormat)+'}}}'"],

		// thanks Adapted Cat
		[/\{ts?\}(?!\}\})/ig,"'{{ts{'+now.formatString(config.InstantTimestamp.timeFormat)+'}}}'"],
		[/\{ds?\}(?!\}\})/ig,"'{{ds{'+now.formatString(config.InstantTimestamp.dateFormat)+'}}}'"]
		
	],

	excludeTags: [
		"noAutoCorrect",
		"noTimestamp",
		"html",
		"CSS",
		"css",
		"systemConfig",
		"systemConfigDisabled",
		"zsystemConfig",
		"Plugins",
		"Plugin",
		"plugins",
		"plugin",
		"javascript",
		"code",
		"systemTheme",
		"systemPalette"
	],

	excludeTiddlers: [
		"StyleSheet",
		"StyleSheetLayout",
		"StyleSheetColors",
		"StyleSheetPrint"
		// more?
	]

}; 

TiddlyWiki.prototype.saveTiddler_mptw_instanttimestamp = TiddlyWiki.prototype.saveTiddler;
TiddlyWiki.prototype.saveTiddler = function(title,newTitle,newBody,modifier,modified,tags,fields,clearChangeCount,created) {

	tags = tags ? tags : []; // just in case tags is null
	tags = (typeof(tags) == "string") ? tags.readBracketedList() : tags;
	var conf = config.InstantTimestamp;

	if ( !tags.containsAny(conf.excludeTags) && !conf.excludeTiddlers.contains(newTitle) ) {

		var now = new Date();
		var trans = conf.translations;
		for (var i=0;i<trans.length;i++) {
			newBody = newBody.replace(trans[i][0], eval(trans[i][1]));
		}
	}

	// TODO: use apply() instead of naming all args?
	return this.saveTiddler_mptw_instanttimestamp(title,newTitle,newBody,modifier,modified,tags,fields,clearChangeCount,created);
}

// you can override these in StyleSheet 
setStylesheet(".ts,.ds { font-style:italic; }","instantTimestampStyles");

//}}}

Kelvin, second-largest city in Karameikos (population 20,000), is built where the rivers Windrush (Wufwolde), Hillfollow (Shutturga), and Highreach (Volaga) merge.

Kelvin was designed to be a way-stop for entire caravans and a fortress defending the surrounding territories. It is a large, walled encampment. Inside the walls are a large field for caravans to set up and a secondary wall in which the city of Kelvin proper is located; inside the city is a third walled area, the garrison fortress and castle of Baron Kelvin.

The city and surrounding baronial lands are ruled by Baron Desmond Kelvin II, son of the founder of the city. Baron Kelvin, though young for his duties, rules well, with military efficiency and impartiality.
The language of the Kobolds.
The copper piece is called the //''kopec''//. On the obverse is the great wolf of the inland forests; on the reverse are the (expected) inscriptions, “Grand Duchy of Karameikos” and “One Kopec.”

//1 cp = 1/10 sp = 1/100 gp//
Krakatos is a ruined stone-walled village of antiquity; some of the action in [[The Song of King Halav]] takes place here, and the site is of some fascination for Traladaran visitors.

It has no inhabitants and should not be used as a home town for characters.
Back to [[Character Creation]]
All characters may speak (and read, unless ''Illiterate'') a number of languages equal to their Smarts divided by 2. One language must be their native tongue.

Check your character's [[racial language entry|Races]] for a list of languages commonly available to him.
/***
|Name:|LessBackupsPlugin|
|Description:|Intelligently limit the number of backup files you create|
|Version:|3.0.1 ($Rev: 2320 $)|
|Date:|$Date: 2007-06-18 22:37:46 +1000 (Mon, 18 Jun 2007) $|
|Source:|http://mptw.tiddlyspot.com/#LessBackupsPlugin|
|Author:|Simon Baird|
|Email:|simon.baird@gmail.com|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!!Description
You end up with just backup one per year, per month, per weekday, per hour, minute, and second.  So total number won't exceed about 200 or so. Can be reduced by commenting out the seconds/minutes/hours line from modes array
!!Notes
Works in IE and Firefox only.  Algorithm by Daniel Baird. IE specific code by by Saq Imtiaz.
***/
//{{{

var MINS  = 60 * 1000;
var HOURS = 60 * MINS;
var DAYS  = 24 * HOURS;

if (!config.lessBackups) {
	config.lessBackups = {
		// comment out the ones you don't want or set config.lessBackups.modes in your 'tweaks' plugin
		modes: [
			["YYYY",  365*DAYS], // one per year for ever
			["MMM",   31*DAYS],  // one per month
			["ddd",   7*DAYS],   // one per weekday
			//["d0DD",  1*DAYS],   // one per day of month
			["h0hh",  24*HOURS], // one per hour
			["m0mm",  1*HOURS],  // one per minute
			["s0ss",  1*MINS],   // one per second
			["latest",0]         // always keep last version. (leave this).
		]
	};
}

window.getSpecialBackupPath = function(backupPath) {

	var now = new Date();

	var modes = config.lessBackups.modes;

	for (var i=0;i<modes.length;i++) {

		// the filename we will try
		var specialBackupPath = backupPath.replace(/(\.)([0-9]+\.[0-9]+)(\.html)$/,
				'$1'+now.formatString(modes[i][0]).toLowerCase()+'$3')

		// open the file
		try {
			if (config.browser.isIE) {
				var fsobject = new ActiveXObject("Scripting.FileSystemObject")
				var fileExists  = fsobject.FileExists(specialBackupPath);
				if (fileExists) {
					var fileObject = fsobject.GetFile(specialBackupPath);
					var modDate = new Date(fileObject.DateLastModified).valueOf();
				}
			}
			else {
				netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
				var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
				file.initWithPath(specialBackupPath);
				var fileExists = file.exists();
				if (fileExists) {
					var modDate = file.lastModifiedTime;
				}
			}
		}
		catch(e) {
			// give up
			return backupPath;
		}

		// expiry is used to tell if it's an 'old' one. Eg, if the month is June and there is a
		// June file on disk that's more than an month old then it must be stale so overwrite
		// note that "latest" should be always written because the expiration period is zero (see above)
		var expiry = new Date(modDate + modes[i][1]);
		if (!fileExists || now > expiry)
			return specialBackupPath;
	}
}

// hijack the core function
window.getBackupPath_mptw_orig = window.getBackupPath;
window.getBackupPath = function(localPath) {
	return getSpecialBackupPath(getBackupPath_mptw_orig(localPath));
}

//}}}

''Rank:'' Novice
''Power Points:'' 1
''Range:'' Touch
''Duration:'' 10 minutes (1/minute)
''Trappings:'' Different colors, floating globes, glowing palms, enchanted staffs.

The ability to create light is a pretty simple one as magical spells and powers go, but a party trapped in the dark with loathsome undead is happy to have an ally with this ability. Light must be cast on an inanimate object, such as a coin, a sword, a shield, or even someone’s clothing. Clever casters often cast light on a foe’s clothes or weapon to make him easier to see—ignore any penalties for illumination when attacking such an affected target. The light is as bright as a torch, and provides clear illumination in an area equal to a Large Burst Template.
/***
|''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);
}
//}}}
Back to [[Home|Welcome To Savage Mystara!]]
!!The Grand Duchy of Karameikos
!!!Maps
*[[The Grand Duchy of Karameikos|http://pandius.com/Grand-Duchy-Karameikos.jpg]]
!!!Places of Interest
!!!!Cities
*[[Specularum]]
*[[Kelvin]]
!!!!Towns
*[[Fort Doom]]
*[[Highforge]]
*[[Luln]]
*[[Threshold]]
!!!!Villages
*[[Callarii Lands]]
*[[Smaller Villages & Homesteads]]
!!!!Ruins
*[[Krakatos]]
!!!History
*[[The Song of King Halav]]
*[[The Dark Age]]
*[[Modern Traladara]]
!!!Society
*[[Calendar]]
*[[Social Standing]]
*[[The Shearing Ceremony]]
!!!Economy
*[[Coinage]]
!!!Languages
*[[Languages]]
Back to [[Home|Welcome To Savage Mystara!]]
Luln, a town of about 5,000 citizens, is a ramshackle community of refugees who have fled the [[Black Eagle Barony]] and [[Fort Doom]]. It's poised between the armies of the Black Eagle Barony and Karameikos, and is a small, struggling community.

Its townmaster is Mistress Sascia; she is gradually organizing the village into a permanent, fortified community and there is speculation that she is trying to acquire a noble title.
MPTW is a distribution or edition of TiddlyWiki that includes a standard TiddlyWiki core packaged with some plugins designed to improve usability and provide a better way to organise your information. For more information see http://mptw.tiddlyspot.com/.
!!//Mastering the magical forces//
Human Novice
''Attributes:'' Agility d6, Smarts d8, Spirit d6, Strength d4, Vigor d6
''Skills:'' Fighting d4, Knowledge (arcana) d8, Knowledge (local legends) d8, Spellcasting d8, Shooting d6, Taunt d8
''Derived Stats:'' Pace: 6"; Parry: 5 (6 with shield); Toughness: 5; Charisma: +0
''Edges:'' Arcane Background (Magic), Power Points, Wizard
''Hindrances:'' Anemic (Minor, -2 Vigor to resist Fatigue, poison, disease, and the like), Curious (Major, won't stop at anything to delve into mysteries), Delusional (Minor, convinced that invisible //polyphs// have broken through the Veil from a dark dimension and are flying around sucking peoples' brains)
''Power Points:'' 15
''Powers (Trapping):'' 
*Armor (stoneskin)
*Bolt (glowing arrows of magical force)
*Detect/Conceal Arcana (third eye opens in mages forehead)
''Gear:'' Silvered Dagger (Str+d4, 1 lb.), Sling (Str+d4), 20 Sling Bullets (1 lbs.), 5 Silver Bullets(1/4 lbs), Dark Robes (emroidered with Silver Runes), Shoes, Belt, Belt Pouch, Spellbook, 288 golden royals.
//Weight Limit: 20 lbs.; Encumbrance: 3.75 lbs.; Encumbrance Penalty: 0.//
[[Home|Welcome To Savage Mystara!]] [[Character Creation]] [[Races]] [[Skills|Master Skill List]] [[Edges]] [[Hindrances]] [[Gear]] [[Powers]] [[Lore]] [[Rules|Setting Rules]]
Makai is the national language of the Kingdom of Ierendi.
//back to [[Character Creation]]//
|!Skill|!Linked Attribute|
|Boating|Agility|
|Climbing|Strength|
|--Driving--^^1^^|--Agility--|
|Faith^^2^^|Spirit|
|Fighting|Agility|
|Gambling|Smarts|
|--Guts--^^3^^|--Spirit--|
|Healing|Smarts|
|Intimidation|Spirit|
|Investigation|Smarts|
|Knowledge|Smarts|
|Lockpicking|Agility|
|Notice|Smarts|
|Persuasion|Spirit|
|--Piloting--^^1^^|--Agility--|
|Repair|Smarts|
|Riding|Agility|
|Shooting|Agility|
|Spellcasting^^2^^|Smarts|
|Stealth|Agility|
|Streetwise|Smarts|
|Survival|Smarts|
|Swimming|Agility|
|Taunt|Smarts|
|Throwing|Agility|
|Tracking|Smarts|
^^1^^//These skills aren't used. Animal-drawn wagons are controlled using the Riding skill. See [[Setting Rules]]//
^^2^^//Denotes an "arcane skill." See [[Powers]] for more information.//
^^3^^//Fear is not a defining aspect of the setting. All uses of the Guts skill are replaced with a Spirit roll. See [[Setting Rules]]//

;Boating (Agility)
:Characters with this skill can handle most any boat common to their setting. They generally know how to handle most common tasks associated with their vessels as well (tying knots, simple engine repair, etc).
;Climbing (Strength)
:This is the skill characters use to ascend walls, trees, or cliff-sides. No roll is usually needed to ascend ladders, ropes, or trees with lots of limbs unless the GM feels there’s a good reason for it (being chased, wounded, etc).
;--Driving (Agility)--
:--Driving allows your hero to drive ground and hover vehicles common to his setting.--
://Riding is used to control horse-driven carts in this setting (see [[Setting Rules]]).//
;Fighting (Agility)
:Fighting covers all hand-to-hand (melee) attacks. The Target Number to hit an opponent is his Parry (2 plus half his Fighting).
;Gambling (Smarts)
:Gambling is useful in many settings, from the saloons of the Old West to the barracks of most armies. A single roll quickly simulates about a half-hour of gambling.
;--Guts (Spirit)--
:--Guts reflects a hero’s bravery. Characters are often called on to make Guts checks when they witness grisly scenes or encounter particularly horrific monsters.--
://Fear isn't a defining aspect of the setting, so the Guts skill is dropped and all uses are replaced with a Spirit roll (see [[Setting Rules]]). //
;Healing (Smarts)
:Healing is the art of stopping wounds and treating existing injuries. 
;Intimidation (Spirit)
:Intimidation is the art of frightening an opponent with sheer force of will, veiled or overt threats, or sometimes just really big guns. This is an opposed roll between the hero’s Intimidation and his opponent’s Spirit. 
;Investigation (Smarts)
:A character skilled in Investigation knows how to make good use of libraries, newspaper morgues, the internet, or other written sources of information. To get information from people rather than books and computers, use the Streetwise skill.
;Knowledge (Smarts)
:Knowledge is a catch-all skill that must have a focus of some sort, such as Knowledge (Occult) or Knowledge (Science). The player can choose the focus of his character’s knowledge, which should reflect his background and education. An archaeologist, for example, should have Knowledge (History) and Knowledge (Archaeology). The skill can be taken multiple times with different focuses to reflect different areas of expertise.
:General focuses such as Science are acceptable, but the GM should give a bonus to a character who has a more relevant focus, such as Knowledge (Biology).
:Some suggested Knowledge focuses are: Area Knowledge, Battle (used in [[Mass Combat]]), History, Journalism, Law, Medicine (though actually caring for someone is the Healing skill), Science, or Tactics.
;Lockpicking (Agility)
:Lockpicking is the ability to bypass mechanical and electronic locks. Lockpicking is also be used to disarm the catches and triggers on traps, unless a more relevant skill seems appropriate for a particular trap.
;Notice (Smarts)
:Notice is a hero’s general alertness and ability to search for items or clues. This covers hearing rolls, detecting ambushes, spotting hidden weapons and even scrutinizing other characters to see if they’re lying, frightened, and so on.
;Persuasion (Spirit)
:Persuasion is the ability to talk or trick others into doing what you want. Persuasion is always modified by a character’s Charisma.
;--Piloting (Agility)--
:--Piloting allows a character to fly airplanes, helicopters, jet packs, and any other flying devices common to his setting.--
://Riding is used to control horse-driven carts in this setting (see [[Setting Rules]]).//
;Repair (Smarts)
:Repair is the ability to fix gadgets, vehicles, weapons, and other machines. Characters suffer a -2 penalty to their rolls if they don’t have access to basic tools.
;Riding (Agility)
:Riding allows you to mount, control, and ride any beast common to your setting. Players should note that mounted characters use the lowest of their Fighting or Riding skills when fighting from horseback. 
://Riding is also used to control horse-driven carts in this setting (see [[Setting Rules]]).//
;Shooting (Agility)
:Shooting covers all attempts to hit a target with a ranged weapon such as a bow, pistol, or rocket launcher.
;Stealth (Agility)
:Stealth is the ability to both hide and move quietly.
;Streetwise (Smarts)
:Streetwise characters are able to gather information from the street, saloons, or other contacts through bribes, threats, or carousing. Finding written information in libraries and the like is covered by the Investigation skill.
:Streetwise is always modified by a character’s Charisma modifier.
;Survival (Smarts)
:Survival allows a character to find food, water, or shelter in hostile environments. 
;Swimming (Agility)
:Swimming determines if a character floats or sinks in water, as well as how fast he can move within it. 
;Taunt (Smarts)
:Taunt is a test of will attack against a person’s pride through ridicule, cruel jokes, or oneupmanship. This is an opposed roll against the target’s Smarts.
;Throwing (Agility)
:Throwing governs all sorts of thrown weapons, from hand grenades to knives, axes, and spears.
;Tracking (Smarts)
:Tracking allows a character to follow the tracks of one or more individuals in any type of terrain.
//back to [[Character Creation]]//
back to [[Gear]]
|!''Hand Weapons''|>|>|>|>|>|
|!Type | !Range | !Damage | !Cost | !Weight | !Notes |
|''Axes:''|>|>|>|>|>|
|Axe, Battle|| Str+d8 | 300| 10||
|Axe, Combat|| Str+d8 | 350| 12|Parry -1, +1 damage if wielded with 2 hands|
|Axe, Great|| Str+d10 | 500| 15|AP 1, Parry -1, 2 hands|
|Axe, Hand/Throwing| 3/6/12 | Str+d6 | 75| 2||
|Axe - Chain, Dwarven|| Str+d6 | 500| 15|Reach 1, Parry -1, usable as double weapon without Reach, ignores Shield, Parry, and Cover bonus|
|''Bludgeons:''|>|>|>|>|>|
|Club|| Str+d4 | 20| 5||
|Flail|| Str+d6 | 200| 8|Ignores Shield, Parry and Cover bonus|
|Flail, Great|| Str+d8 | 600| 25|AP 2 vs rigid Armor, Parry -1, 2 hands, Ignores Shield, Parry and Cover bonus|
|Flail, Light|| Str+d4 | 150| 6|Ignores 1 point of Shield, Parry and Cover bonus|
|Hammer, Throwing| 3/6/12 | Str+d4 | 50| 6||
|Hammer, War|| Str+d6 | 250| 8|AP 1 vs. rigid armor|
|Mace|| Str+d6 | 250| 8|AP 1 vs. rigid armor|
|Maul|| Str+d8 | 400| 20|AP 2 vs. rigid armor, Parry -1, 2 hands|
|Morningstar|| Str+d6 | 250| 8|AP 1 vs. rigid armor|
|Staff|| Str+d4 | 10| 8|Parry +1, Reach 1, 2 hands|
|Torch|| Str+d4 | 1| 2|Extremely flammable targets catch fire on a 1 in d6|
|''Daggers:''|>|>|>|>|>|
|Dagger| 3/6/12 | Str+d4 | 25| 1||
|Dagger, Silver| 3/6/12 | Str+d4 | 125| 1|Useful vs certain supernatural creatures|
|Dagger, Throwing| 3/6/12 | Str+d4 | 50| 1|Balanced: +1 to Throwing|
|''Pole Arms:''|>|>|>|>|>|
|Halberd|| Str+d8 | 250| 15|Reach 1, 2 hands|
|Javelin| 4/8/16 | Str+d6 | 150| 5|Balanced: +1 to Throwing, -1 to Fighting|
|Lance|| Str+d8 | 300| 10|AP 2 when charging on mount, Reach 2, only usable when mounted|
|Pike|| Str+d8 | 400| 25|Reach 2, requires 2 hands|
|Poleaxe|| Str+d8 | 250| 15|Reach 1, 2 hands|
|Spear| 3/6/12 | Str+d6 | 100| 5|Parry +1, Reach 1, 2 hands; requires at least Str d6 to throw|
|Trident| 3/6/12 | Str+d6 | 100| 5|Parry +1, Reach 1, 2 hands; requires at least Str d6 to throw|
|''Swords:''|>|>|>|>|>|
|Bastard Sword|| Str+d8 | 350| 10|Parry -1, +1 damage if wielded with 2 hands|
|Great sword|| Str+d10 | 400| 12|Parry -1, 2 hands|
|Katana|| Str+d6+2 | 1000| 6|AP 2|
|Long sword|| Str+d8 | 300| 8|Includes scimitars|
|Rapier|| Str+d4 | 150| 3|Parry +1|
|Short sword|| Str+d6 | 200| 4|Includes sabers|
back to [[Gear]]
The national language of the Minrothad Guilds.
Back to [[Humans|Human]]

Karameikans of mixed Traladaran and Thyatian blood generally grow somewhat taller than the average Traladaran, with dark hair and blue or light brown eyes. They otherwise combine the features of their parental stock.
!!!Attitudes
In the last 30 years, since the arrival of Duke Stefan and his followers, many children of mixed Thyatian and Traladaran descent have been born. Early on, many of these were the children of Thyatian warriors who immigrated to the duchy, fought in the duke’s army, then retired to take local wives and husbands. With the passage of time, young warriors and wizards have emerged who have both Thyatian and Traladaran grandparents.

A mixed-blood Karameikan’s attitude depends upon upbringing. Those from Thyatian households tend to favor Thyatian traits, while those of Traladaran ancestry prefer that culture. In many cases, however, these mixed-blood Karameikans recognize that neither Thyatians nor Traladarans have any great advantage over the other. This attitude is encouraged by Duke Stefan, who seeks new blood and new ideas in his government. He fosters attitudes that put aside the conflict of Thyatian versus Traladaran, and he willingly puts responsibility in the hands of these “New Karameikans” whose loyalty lies more with the nation (and the crown) than  with a cultural background.

Literacy is high among these young people, and they speak in a straightforward manner, without either Traladaran accent or Thyatian affectation. They frequently find themselves at odds with more traditional elders of both cultures.
!!!Dress
Formal styles of dress in Specularum began over 90 years ago with the original Thyatian invasion of Marilenev. Today, there is no distinct “Thyatian” or “Traladaran” formal wear&#8212;though formal clothing leans more toward Thyatian styles than Traladaran.

Men in formal dress wear dark boots, trousers with belts, and long-sleeved tunics with full sleeves (either pullover or with two rows of buttons, as a military uniform). Such tunics typically are crafted with rich materials and embroidery in fabrics of strong, rich colors.

Women in formal dress wear gowns with long, flowing sleeves and full-length skirts; the gown usually laces up the back. Low shoes or slippers are typical, and accouterments include a narrow leather or cloth belt wrapped numerous times about the waist in interesting patterns, jewelry (worn in the style of the woman’s heritage), and a long cloak of rare animal fur.

Nobles of landed lord or higher status may wear a noble coronet (a narrow, undecorated crown)  displaying their status. For barons and baronesses, it becomes a baronial coronet (a narrow crown usually inlaid with gems or engraved with patterns).

Adventurers, by and large, dress in commoners’ garb&#8212;though the garments may be of expensive quality. Women who fight often dress in clothing like that of their male counterparts, as it is easier to strap armor around such garb. Other than formal clerical dress, character class dress does not exist in Karameikos. There are no special robes that every wizard wears; wearing leather armor without a shield doesn’t automatically indicate “thief.”
!!![[The Shearing Ceremony]]
Native Traladarans have a custom which is an important part of the Karameikan national character: [[the Shearing Ceremony|The Shearing Ceremony]]. This custom has also been adopted by the [[Thyatian]] settlers.
!!!Names
Names: Karameikan names are a hodgepodge of Traladaran and Thyatian root names, often with a descriptive surname or nickname. In fact, many names are appropriate for the New Karameikan, not just Traladaran or Thyatian ones.
!!!Game Crunch
*''Bonus Edge:'' Humans start play with one free Edge of their choice. The character must meet the requirements of the Edge as usual.
*''Languages'' //(Starting No. of Languages: Smarts/2)//'':'' Half-Breeds speak [[Thyatian (the Common Tongue)]]. They may choose additional languages from [[Elvish]], [[Gnomish]], and [[Traladaran|Traladaran Language]]. A compelling reason must be provided to choose other [[languages|Languages]].
Back to [[Humans|Human]]
Traladar, since a century ago, was a well-known trading-spot, particularly Marilenev, built where the Volaga river enters the sea. 

There, Traladarans traded valuable furs for weapons, wines, and other spirits. 

Most Traladaran profits stayed along the coast; few traders ventured inland. One of these, the annual Gnome Caravan, was a well-armed force of gnomes who descended from the northern hills, traded a year's accumulation of craft good in Marilenev, and made their way back to gnomish lands.

It was around this time that the nations of Darokin and Thyatis began to view Traladara with increasing concern. The Empire of Thyatis decided the matter by sending troops to Marilenev and conquering it, claiming all of Traladara for Thyatis. Darokin shrugged and ensured its borders were secure.

Thyatis took few real steps to secure Traladara for itself: 
* a garrison of soldiers were installed in Marilenev;
* Marilenev was renamed //Specularum// (The Mirror City) after the reflective beauty of Marilenev's bay;
* a tax collector took in revenues on all trade money which changed hands in the city
Other than that, the rest of Traladara was left pretty much to itself. The more isolated communities were completely unaffected by the //conquest//. The trades suffered a Thyatian tax, but the Thyatian //interest// in Traladara only meant a trade boom and more profits in general.

Thirty years ago, Duke Stefan Karameikos III, a youthful nobleman of Thyatis, struck a deal with the Emperor of Thyatis. Karameikos, in essence, traded his valuable ancestral lands for Traladara - and a guarantee of autonomy. The Empire recognized Karameikos' claim to Traladara, now renamed [[The Grand Duchy of Karameikos|Lore]], and recalled its officials from the territory.

The new Duke traveled to his duchy, announced his assumption of rulership over Traladara, and put down the armed insurrection which resulted. When things begain to settle down somewhat, he began luring ambitious landless nobles from Thyatis to help him rule this land in proper Thyatian fashion.

Many of the Thyatian settlers who poured into the country, swearing loyalty to Duke Stefan and receiving land grants, were ruthless men who literally stole lands from the Traladarans living upon them. Worst among them was Duke Stefan's own cousin, Baron Ludwig "Black Eagle" von Hendriks.

Duke Stefan himself was an exemplary leader, demanding fairness and honor in the men he directly supervised. He used trade tax revenues to build broad roads across the country, uniting far-flung villages into a single nation. He built a substantial army, using native Traladarans, Thyatian immigrants, and even Callarii elves, to protect the Grand Duchy.

With each passing day, the international importance of the Grand Duchy of Karameikos grows.

//Return to [[Lore]]//
Name: MptwBlack
Background: #000
Foreground: #fff
PrimaryPale: #333
PrimaryLight: #555
PrimaryMid: #888
PrimaryDark: #aaa
SecondaryPale: #111
SecondaryLight: #222
SecondaryMid: #555
SecondaryDark: #888
TertiaryPale: #222
TertiaryLight: #666
TertiaryMid: #888
TertiaryDark: #aaa
Error: #300

This is in progress. Help appreciated.


Name: MptwBlue
Background: #fff
Foreground: #000
PrimaryPale: #cdf
PrimaryLight: #57c
PrimaryMid: #114
PrimaryDark: #012
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88

/***
|Name:|MptwConfigPlugin|
|Description:|Miscellaneous tweaks used by MPTW|
|Version:|1.0 ($Rev: 3646 $)|
|Date:|$Date: 2008-02-27 02:34:38 +1000 (Wed, 27 Feb 2008) $|
|Source:|http://mptw.tiddlyspot.com/#MptwConfigPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#MptwConfigPlugin|
!!Note: instead of editing this you should put overrides in MptwUserConfigPlugin
***/
//{{{
var originalReadOnly = readOnly;
var originalShowBackstage = showBackstage;

config.options.chkHttpReadOnly = false; 		// means web visitors can experiment with your site by clicking edit
readOnly = false;								// needed because the above doesn't work any more post 2.1 (??)
showBackstage = true;							// show backstage for same reason

config.options.chkInsertTabs = true;    		// tab inserts a tab when editing a tiddler
config.views.wikified.defaultText = "";			// don't need message when a tiddler doesn't exist
config.views.editor.defaultText = "";			// don't need message when creating a new tiddler 

config.options.chkSaveBackups = true;			// do save backups
config.options.txtBackupFolder = 'twbackup';	// put backups in a backups folder

config.options.chkAutoSave = (window.location.protocol == "file:"); // do autosave if we're in local file

config.mptwVersion = "2.5.1";

config.macros.mptwVersion={handler:function(place){wikify(config.mptwVersion,place);}};

if (config.options.txtTheme == '')
	config.options.txtTheme = 'MptwTheme';

// add to default GettingStarted
config.shadowTiddlers.GettingStarted += "\n\nSee also [[MPTW]].";

// add select theme and palette controls in default OptionsPanel
config.shadowTiddlers.OptionsPanel = config.shadowTiddlers.OptionsPanel.replace(/(\n\-\-\-\-\nAlso see AdvancedOptions)/, "{{select{<<selectTheme>>\n<<selectPalette>>}}}$1");

// these are used by ViewTemplate
config.mptwDateFormat = 'DD/MM/YY';
config.mptwJournalFormat = 'Journal DD/MM/YY';

//}}}
Name: MptwGreen
Background: #fff
Foreground: #000
PrimaryPale: #9b9
PrimaryLight: #385
PrimaryMid: #031
PrimaryDark: #020
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88

Name: MptwRed
Background: #fff
Foreground: #000
PrimaryPale: #eaa
PrimaryLight: #c55
PrimaryMid: #711
PrimaryDark: #500
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88

|Name|MptwRounded|
|Description|Mptw Theme with some rounded corners (Firefox only)|
|ViewTemplate|MptwTheme##ViewTemplate|
|EditTemplate|MptwTheme##EditTemplate|
|PageTemplate|MptwTheme##PageTemplate|
|StyleSheet|##StyleSheet|

!StyleSheet
/*{{{*/

[[MptwTheme##StyleSheet]]

.tiddler,
.sliderPanel,
.button,
.tiddlyLink,
.tabContents
{ -moz-border-radius: 1em; }

.tab {
	-moz-border-radius-topleft: 0.5em;
	-moz-border-radius-topright: 0.5em;
}
#topMenu {
	-moz-border-radius-bottomleft: 2em;
	-moz-border-radius-bottomright: 2em;
}

/*}}}*/

Name: MptwSmoke
Background: #fff
Foreground: #000
PrimaryPale: #aaa
PrimaryLight: #777
PrimaryMid: #111
PrimaryDark: #000
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88

|Name|MptwStandard|
|Description|Mptw Theme with the default TiddlyWiki PageLayout and Styles|
|ViewTemplate|MptwTheme##ViewTemplate|
|EditTemplate|MptwTheme##EditTemplate|
Name: MptwTeal
Background: #fff
Foreground: #000
PrimaryPale: #B5D1DF
PrimaryLight: #618FA9
PrimaryMid: #1a3844
PrimaryDark: #000
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #f8f8f8
TertiaryLight: #bbb
TertiaryMid: #999
TertiaryDark: #888
Error: #f88
|Name|MptwTheme|
|Description|Mptw Theme including custom PageLayout|
|PageTemplate|##PageTemplate|
|ViewTemplate|##ViewTemplate|
|EditTemplate|##EditTemplate|
|StyleSheet|##StyleSheet|

http://mptw.tiddlyspot.com/#MptwTheme ($Rev: 1829 $)

!PageTemplate
<!--{{{-->
<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>
<!-- horizontal MainMenu -->
<div id='topMenu' refresh='content' tiddler='MainMenu'></div>
<!-- original MainMenu menu -->
<!-- <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>
<!--}}}-->

!ViewTemplate
<!--{{{-->
[[MptwTheme##ViewTemplateToolbar]]

<div class="tagglyTagged" macro="tags"></div>

<div class='titleContainer'>
	<span class='title' macro='view title'></span>
	<span macro="miniTag"></span>
</div>

<div class='subtitle'>
	(updated <span macro='view modified date {{config.mptwDateFormat?config.mptwDateFormat:"MM/0DD/YY"}}'></span>
	by <span macro='view modifier link'></span>)
	<!--
	(<span macro='message views.wikified.createdPrompt'></span>
	<span macro='view created date {{config.mptwDateFormat?config.mptwDateFormat:"MM/0DD/YY"}}'></span>)
	-->
</div>

<div macro="showWhen tiddler.tags.containsAny(['css','html','pre','systemConfig']) && !tiddler.text.match('{{'+'{')">
	<div class='viewer'><pre macro='view text'></pre></div>
</div>
<div macro="else">
	<div class='viewer' macro='view text wikified'></div>
</div>

<div class="tagglyTagging" macro="tagglyTagging"></div>

<!--}}}-->

!ViewTemplateToolbar
<!--{{{-->
<div class='toolbar'>
	<span macro="showWhenTagged systemConfig">
		<span macro="toggleTag systemConfigDisable . '[[disable|systemConfigDisable]]'"></span>
	</span>
	<span macro="showWhenTagged systemTheme"><span macro="applyTheme"></span></span>
	<span macro="showWhenTagged systemPalette"><span macro="applyPalette"></span></span>
	<span macro="showWhen tiddler.tags.contains('css') || tiddler.title == 'StyleSheet'"><span macro="refreshAll"></span></span>
	<span style="padding:1em;"></span>
	<span macro='toolbar closeTiddler closeOthers +editTiddler deleteTiddler > fields syncing permalink references jump'></span> <span macro='newHere label:"new here"'></span>
	<span macro='newJournalHere {{config.mptwJournalFormat?config.mptwJournalFormat:"MM/0DD/YY"}}'></span>
</div>
<!--}}}-->

!EditTemplate
<!--{{{-->
<div class="toolbar" macro="toolbar +saveTiddler saveCloseTiddler closeOthers -cancelTiddler cancelCloseTiddler deleteTiddler"></div>
<div class="title" macro="view title"></div>
<div class="editLabel">Title</div><div class="editor" macro="edit title"></div>
<div macro='annotations'></div>
<div class="editLabel">Content</div><div class="editor" macro="edit text"></div>
<div class="editLabel">Tags</div><div class="editor" macro="edit tags"></div>
<div class="editorFooter"><span macro="message views.editor.tagPrompt"></span><span macro="tagChooser"></span></div>
<!--}}}-->

!StyleSheet
/*{{{*/

/* a contrasting background so I can see where one tiddler ends and the other begins */
body {
	background: [[ColorPalette::TertiaryLight]];
}

/* sexy colours and font for the header */
.headerForeground {
	color: [[ColorPalette::PrimaryPale]];
}
.headerShadow, .headerShadow a {
	color: [[ColorPalette::PrimaryMid]];
}

/* separate the top menu parts */
.headerForeground, .headerShadow {
	padding: 1em 1em 0;
}

.headerForeground, .headerShadow {
	font-family: 'Trebuchet MS' sans-serif;
	font-weight:bold;
}
.headerForeground .siteSubtitle {
	color: [[ColorPalette::PrimaryLight]];
}
.headerShadow .siteSubtitle {
	color: [[ColorPalette::PrimaryMid]];
}

/* make shadow go and down right instead of up and left */
.headerShadow {
	left: 1px;
	top: 1px;
}

/* prefer monospace for editing */
.editor textarea, .editor input {
	font-family: 'Consolas' monospace;
	background-color:[[ColorPalette::TertiaryPale]];
}


/* sexy tiddler titles */
.title {
	font-size: 250%;
	color: [[ColorPalette::PrimaryLight]];
	font-family: 'Trebuchet MS' sans-serif;
}

/* more subtle tiddler subtitle */
.subtitle {
	padding:0px;
	margin:0px;
	padding-left:1em;
	font-size: 90%;
	color: [[ColorPalette::TertiaryMid]];
}
.subtitle .tiddlyLink {
	color: [[ColorPalette::TertiaryMid]];
}

/* a little bit of extra whitespace */
.viewer {
	padding-bottom:3px;
}

/* don't want any background color for headings */
h1,h2,h3,h4,h5,h6 {
	background-color: transparent;
	color: [[ColorPalette::Foreground]];
}

/* give tiddlers 3d style border and explicit background */
.tiddler {
	background: [[ColorPalette::Background]];
	border-right: 2px [[ColorPalette::TertiaryMid]] solid;
	border-bottom: 2px [[ColorPalette::TertiaryMid]] solid;
	margin-bottom: 1em;
	padding:1em 2em 2em 1.5em;
}

/* make options slider look nicer */
#sidebarOptions .sliderPanel {
	border:solid 1px [[ColorPalette::PrimaryLight]];
}

/* the borders look wrong with the body background */
#sidebar .button {
	border-style: none;
}

/* this means you can put line breaks in SidebarOptions for readability */
#sidebarOptions br {
	display:none;
}
/* undo the above in OptionsPanel */
#sidebarOptions .sliderPanel br {
	display:inline;
}

/* horizontal main menu stuff */
#displayArea {
	margin: 1em 15.7em 0em 1em; /* use the freed up space */
}
#topMenu br {
	display: none;
}
#topMenu {
	background: [[ColorPalette::PrimaryMid]];
	color:[[ColorPalette::PrimaryPale]];
}
#topMenu {
	padding:2px;
}
#topMenu .button, #topMenu .tiddlyLink, #topMenu a {
	margin-left: 0.5em;
	margin-right: 0.5em;
	padding-left: 3px;
	padding-right: 3px;
	color: [[ColorPalette::PrimaryPale]];
	font-size: 115%;
}
#topMenu .button:hover, #topMenu .tiddlyLink:hover {
	background: [[ColorPalette::PrimaryDark]];
}

/* make 2.2 act like 2.1 with the invisible buttons */
.toolbar {
	visibility:hidden;
}
.selected .toolbar {
	visibility:visible;
}

/* experimental. this is a little borked in IE7 with the button 
 * borders but worth it I think for the extra screen realestate */
.toolbar { float:right; }

/* fix for TaggerPlugin. from sb56637. improved by FND */
.popup li .tagger a {
   display:inline;
}

/* makes theme selector look a little better */
#sidebarOptions .sliderPanel .select .button {
  padding:0.5em;
  display:block;
}
#sidebarOptions .sliderPanel .select br {
	display:none;
}

/* make it print a little cleaner */
@media print {
	#topMenu {
		display: none ! important;
	}
	/* not sure if we need all the importants */
	.tiddler {
		border-style: none ! important;
		margin:0px ! important;
		padding:0px ! important;
		padding-bottom:2em ! important;
	}
	.tagglyTagging .button, .tagglyTagging .hidebutton {
		display: none ! important;
	}
	.headerShadow {
		visibility: hidden ! important;
	}
	.tagglyTagged .quickopentag, .tagged .quickopentag {
		border-style: none ! important;
	}
	.quickopentag a.button, .miniTag {
		display: none ! important;
	}
}

/* get user styles specified in StyleSheet */
[[StyleSheet]]

/*}}}*/

|Name|MptwTrim|
|Description|Mptw Theme with a reduced header to increase useful space|
|ViewTemplate|MptwTheme##ViewTemplate|
|EditTemplate|MptwTheme##EditTemplate|
|StyleSheet|MptwTheme##StyleSheet|
|PageTemplate|##PageTemplate|

!PageTemplate
<!--{{{-->

<!-- horizontal MainMenu -->
<div id='topMenu' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<span refresh='content' tiddler='SiteTitle' style="padding-left:1em;font-weight:bold;"></span>:
<span refresh='content' tiddler='MainMenu'></span>
</div>
<div id='sidebar'>
	<div id='sidebarOptions'>
		<div refresh='content' tiddler='SideBarOptions'></div>
		<div style="margin-left:0.1em;"
			macro='slider chkTabSliderPanel SideBarTabs {{"tabs \u00bb"}} "Show Timeline, All, Tags, etc"'></div>
	</div>
</div>
<div id='displayArea'>
	<div id='messageArea'></div>
	<div id='tiddlerDisplay'></div>
</div>

For upgrading. See [[ImportTiddlers]].
URL: http://mptw.tiddlyspot.com/upgrade.html
/***
|Description:|A place to put your config tweaks so they aren't overwritten when you upgrade MPTW|
See http://www.tiddlywiki.org/wiki/Configuration_Options for other options you can set. In some cases where there are clashes with other plugins it might help to rename this to zzMptwUserConfigPlugin so it gets executed last.
***/
//{{{

// example: set your preferred date format
//config.mptwDateFormat = 'MM/0DD/YY';
//config.mptwJournalFormat = 'Journal MM/0DD/YY';

// example: set the theme you want to start with
//config.options.txtTheme = 'MptwRoundTheme';

// example: switch off autosave, switch on backups and set a backup folder
//config.options.chkSaveBackups = true;
//config.options.chkAutoSave = false;
//config.options.txtBackupFolder = 'backups';

//}}}

Edges unavailable to Novice characters are @@color(gray):''grayed''@@ out.
|''New Edges''|c
|!Edge|!Requirements|!Effects|
|''Professional Edges''|>|>|
|Adept|Novice, AB: Miracles, Faith d8+, Fighting d8+|Unarmed attacks do Str+d4 damage, always considered armed; can activate some Powers as a free action|
|Troubadour|Novice, AB: Miracles, Perform d6+|Use powers with bardic trappings, entertain audiences|
|''Racial Edges''|>|>|
|bgcolor(gray):Adaptable|bgcolor(gray):Seasoned, Human or //Half-Elf with Edge Heritage//|bgcolor(gray):Gain 1 non-Improved non-human Racial Edge; may be taken multiple times, once per Rank|
|bgcolor(gray):Barbaric Blood|bgcolor(gray):Seasoned, Berserk, Half-Orc|bgcolor(gray):Spend a Benny to activate Berserk Edge|
|bgcolor(gray): Improved Barbaric Blood|bgcolor(gray):Veteran, Barbaric Blood, Spirit d8|bgcolor(gray):Ignore the -2 penalty to end rage, Fighting roll of 1 won't hit an ally while Berserk|
|bgcolor(gray):Double Shot|bgcolor(gray):Seasoned, Elf or //Half-Elf with Agility Heritage//, Shooting d8+|bgcolor(gray):Fire two arrows at a single target within short range with one attack roll at a -2; bows only|
|bgcolor(gray): Improved Double Shot|bgcolor(gray):Veteran, Double Shot|bgcolor(gray):As double shot, without the -2 penalty|
|bgcolor(gray):Scamper|bgcolor(gray):Seasoned, Agility d8+, Halfling|bgcolor(gray):Man-size or larger foes get -1 to hit; only applies when the character is aware, free to move, & has 0 encumbrance penalty|
|bgcolor(gray): Improved Scamper|bgcolor(gray):Veteran, Scamper|bgcolor(gray):Foes get no Gang Up bonus|
|bgcolor(gray):Sunder|bgcolor(gray):Seasoned, Dwarf|bgcolor(gray):+1 AP/+2 on raise|
|bgcolor(gray): Improved Sunder|bgcolor(gray):Veteran, Sunder|bgcolor(gray):+2 AP/+4 on raise|

!!New Edges
The following new Edges should be added to most traditional fantasy settings.
!!!Professional Edges
;Adept
:''Requirements:'' Novice, AB: Miracles, Faith d8+, Fighting d8+
:Adepts are holy warriors who have trained themselves as living weapons. Their unarmed attacks do Str+d4 damage, and they are always considered armed for purposes of the Unarmed Defender rule.
:In addition, upon taking this Edge and at each new Rank, they may choose to change the trappings of one of the following powers to work only on themselves but be activated as a free action: //boost/lower trait//, //deflection//, //healing//, //smite//, or //speed//. The Adept must still have the power to begin with, and this does not allow him to activate more than one power in a round.
;Troubadour
:''Requirements:'' Novice, AB: Miracles, Perform d6+
:Troubadours are traveling entertainers who bring news and amusement to people across the land. Despite using the rules for Arcane Background: Miracles, Troubadours typically don’t worship a specific deity for their power. They believe in the power of the arts, so their Arcane Skill is Perform (Spirit) instead of Faith. Additionally, they don’t worry about sins, though they have to deal with occasional “strain.”
:''Strain:'' Troubadours who roll a 1 on their Perform die, regardless of the Wild Die, suffer the effects as for a minor sin (-2 to Perform for a week). Should they critically fail such a roll, they suffer the effect of a major sin (complete loss of powers for a week and -4 to “normal” uses of the Perform skill). This represents terrible strain on their voice, mind, or raw nerves for the given period.
:The Perform skill may also be used simply to entertain instead of activating powers. In these cases, the Troubadour can earn money for his performance. A successful skill roll per “set” (usually a couple of hours) nets him $1d6 for every 10 members of the audience. Double this number with a raise. The performer may add his Charisma to the roll when using the skill in this way. This assumes the audience can tip instead of a set fee. The audience may also tip with libations, livestock, blind dates with their daughters, or local rumors that may lead to adventure, fortune, and glory.
!!!Racial Edges
;Adaptable
:''Requirements:'' Seasoned, Human or Half-Elf with Edge Heritage
:Humans are capable of picking up new talents quite readily even if mastery sometimes eludes them. When a human takes this Edge he gains one non-Improved version of an Edge restricted to another race as long as he meets all other requirements.
:This Edge may be taken multiple times, but only once per Rank. If a human learns Scamper, it applies to any creature one or more Sizes larger than him.
;Barbaric Blood
:''Requirements:'' Seasoned, Berserk, Half-Orc
:Some half-orcs have an animal rage inside them they can trigger consciously. A half-orc with Barbaric Blood may spend a Benny to activate his Berserk Edge.
;Improved Barbaric Blood
:''Requirements:'' Veteran, Barbaric Blood, Spirit d8
:With sufficient willpower, a half-orc who has learned to trigger his rage can restrain it as well. Improved Barbaric Blood allows the half-orc to ignore the -2 penalty to end his rage, and on a roll of 1 on his Fighting die, he will not hit an ally while Berserk (though he may still hit the wrong opponent or miss).
;Double Shot
:''Requirements:'' Seasoned, Elf or Half-Elf with Agility Heritage, Shooting d8+
:Elves are renowned not only for their accuracy with the bow but for incredible trick shots as well. Double Shot allows an elf to fire two arrows in his bow at once, firing two shots at a single target with one attack roll at a -2 modifier.
:The target must be within short range. If the attack is successful, both arrows hit, each causing normal damage. Double shot does not work with crossbows or other ranged weapons—only with bows and arrows.
;Improved Double Shot
:''Requirements:'' Veteran, Double Shot
:The elf may attack as above, but ignores the -2 penalty.
;Scamper
:''Requirements:'' Seasoned, Agility d8+, Halfling
:Halflings are small and quick. Some make great use of this in combat too, scampering about to avoid the blows of larger foes. Opponents of man-size or larger subtract 1 from attack rolls against halflings with this Edge. The benefit only applies when the character is aware the attack is coming, he is unbound and able to move freely, and has no encumbrance penalty.
;Improved Scamper
:''Requirements:'' Veteran, Scamper
:The halflings can move so quickly as to cause multiple opponents to interfere with each other’s attacks. Opponents get no Gang Up bonus against the half-folk.
;Sunder
:''Requirements:'' Seasoned, Dwarf
:Dwarves have an instinctual knowledge of materials. Those with this Edge know just where to strike objects or armored foes to cause the most damage. Any weapon in the hands of a dwarf with this Edge ignores 1 point of armor (in addition to any AP value the weapon may already have) on a successful hit. If the dwarf gets a raise on the attack roll, he ignores 2 points of armor. The Edge applies against all forms of armor, natural or magical.
;Improved Sunder
:''Requirements:'' Veteran, Sunder
:As above, but the dwarf ignores up to 2 points of armor on a success and 4 points of Armor on a raise.
/***
|Name:|NewHerePlugin|
|Description:|Creates the new here and new journal macros|
|Version:|3.0 ($Rev: 3861 $)|
|Date:|$Date: 2008-03-08 10:53:09 +1000 (Sat, 08 Mar 2008) $|
|Source:|http://mptw.tiddlyspot.com/#NewHerePlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License|http://mptw.tiddlyspot.com/#TheBSDLicense|
***/
//{{{
merge(config.macros, {
	newHere: {
		handler: function(place,macroName,params,wikifier,paramString,tiddler) {
			wikify("<<newTiddler "+paramString+" tag:[["+tiddler.title+"]]>>",place,null,tiddler);
		}
	},
	newJournalHere: {
		handler: function(place,macroName,params,wikifier,paramString,tiddler) {
			wikify("<<newJournal "+paramString+" tag:[["+tiddler.title+"]]>>",place,null,tiddler);
		}
	}
});

//}}}

/***
|Name:|NewMeansNewPlugin|
|Description:|If 'New Tiddler' already exists then create 'New Tiddler (1)' and so on|
|Version:|1.1 ($Rev: 2263 $)|
|Date:|$Date: 2007-06-13 04:22:32 +1000 (Wed, 13 Jun 2007) $|
|Source:|http://mptw.tiddlyspot.com/empty.html#NewMeansNewPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License|http://mptw.tiddlyspot.com/#TheBSDLicense|
!!Note: I think this should be in the core
***/
//{{{

String.prototype.getNextFreeName = function() {
       var numberRegExp = / \(([0-9]+)\)$/;
       var match = numberRegExp.exec(this);
       if (match) {
               var num = parseInt(match[1]) + 1;
               return this.replace(numberRegExp," ("+num+")");
       }
       else {
               return this + " (1)";
       }
}

config.macros.newTiddler.checkForUnsaved = function(newName) {
	var r = false;
	story.forEachTiddler(function(title,element) {
		if (title == newName)
			r = true;
	});
	return r;
}

config.macros.newTiddler.getName = function(newName) {
       while (store.getTiddler(newName) || config.macros.newTiddler.checkForUnsaved(newName))
               newName = newName.getNextFreeName();
       return newName;
}


config.macros.newTiddler.onClickNewTiddler = function()
{
	var title = this.getAttribute("newTitle");
	if(this.getAttribute("isJournal") == "true") {
		var now = new Date();
		title = now.formatString(title.trim());
	}

	title = config.macros.newTiddler.getName(title); // <--- only changed bit

	var params = this.getAttribute("params");
	var tags = params ? params.split("|") : [];
	var focus = this.getAttribute("newFocus");
	var template = this.getAttribute("newTemplate");
	var customFields = this.getAttribute("customFields");
	story.displayTiddler(null,title,template,false,null,null);
	var tiddlerElem = document.getElementById(story.idPrefix + title);
	if(customFields)
		story.addCustomFields(tiddlerElem,customFields);
	var text = this.getAttribute("newText");
	if(typeof text == "string")
		story.getTiddlerField(title,"text").value = text.format([title]);
	for(var t=0;t<tags.length;t++)
		story.setTiddlerTag(title,tags[t],+1);
	story.focusTiddler(title,focus);
	return false;
};

//}}}

''Rank:'' Novice
''Power Points:'' 2
''Range:'' Smarts
''Duration:'' 3 (1/round)
''Trappings:'' Darkness.

This power does exactly what its name implies—creates an area of obscurement equal to a Large Burst Template. Attacks into, out of, or through the area of effect suffer the standard penalty for absolute blindness of -6.
The language of the Orcs.
!!Forest Mother, Thendara
''Rank:'' Major
''Aspects:'' Forests, forest races.
''Symbol:'' Oak leaf.
''Powers:'' All (direct damage powers have a prerequisite one rank higher than normal).
''Duties:'' Protect the forests, aid the forest races, be vigilant against fire and other destructive elements.
''Sins:'' (minor) working against the interest of the forest races; (Major) refusing to help a member of the forest race; (MORTAL) willful destruction of forests.
''Restrictions:'' Powers may not have trappings of fire or forces destructive to trees & other plants.
The family is dirt-poor. Most of its members spend all their lives in backbreaking labor. They grow up uneducated, working all their lives for someone else's profit. The PC's starting money represents every coin that the family could scrounge up, save, or steal, and the family hopes that the PC will become rich in his adventures and return to aid the family. The family owns no property, has practically no possessions and lives in a home of remarkable poverty. Family members wear ragged clothes, no shoes, no weapon larger than a knife or pitchfork.
The racial language of the pixies.
!!Power Descriptions
Each power has the following statistics:

''Rank:'' This is the Rank a character must be in order learn this power; Novice, Seasoned, Veteran, Heroic, or Legendary.

''Power Points:'' The number of points it costs to use the power. Some powers allow the character to pay additional points for additional effects. This is always determined—and paid for—before the dice are rolled.

''Range:'' The maximum distance the target of the power can be from the user when the
power is fi rst activated (it remains in effect even if the target moves out of range as long as it’s maintained). A Range of Smarts, for example, means 10” for a character with a Smarts of d10. If a power lists three ranges, such as 12/24/48, these are read just like missile weapon ranges, and subtract the standard penalties for each range bracket (0/-2/-4). The arcane character’s skill roll acts as both his “casting” and attack total for these type powers.

''Duration:'' How long the power lasts in rounds. A power with a Duration of 1 lasts until the heroes’ next action. A duration of 2 means it lasts for two actions, and so on. If the Duration of a power has a second entry in parentheses, such as 3 (1/round), it means the power has a duration of 3 rounds and may then be maintained from round to round by spending the listed number of Power Points (1 in this case). Each power maintained subtracts 1 from future uses of the hero’s arcane skill.

''Trappings:'' The powers listed in this chapter are designed to be as simple to use and remember as possible. This helps the GM remember what all the powers do, and helps players remember the rules for common powers even between different settings. But just because these powers work the same from setting to setting doesn’t mean they have to look the same or even have the same names (at least among the characters of the world). The //bolt// power, for example, is a very simple but flexible power. In Mystara, it might be called “magic missile” and take the form of yellow bolts of light. In a dark magic and crazed cultists game, the same power could be the ranged attack of an insect shaman that takes the form of a swarm of killer bees that rushes toward the heroes and stings them!

When the GM decides to dramatically change the trappings of a power, she’ll also have to figure out any special rules that go with them. If an armor spell forms a blazing shield of fire, for instance, perhaps it offers double protection against fire attacks, but none against bolts of cold or ice (or vice-versa). Similarly, if a power is tied to an item, such as a witch using a broom for the //fly// power, you’ll need to decide what happens if the item is taken away. Check out [[More Trappings]] for a few more examples.
!!Novice Powers
!!Arcane Backgrounds
Most roleplaying games feature “magic” in one form or another. Whether it’s hidden occult lore practiced only by dark cultists, voodoo rituals, the eldritch sorcery of powerful wizards, weird gadgets created by mad scientists, superpowers, or the psionic powers of the mind, these rules handle it all in one simple system.

For ease of use, we call all of these effects “powers.” Best of all, powers work the same from game to game, but the particular use and trappings give the same powers endless variations. That means you can create wizards, mad scientists, superheroes, and even creatures with one simple set of easy-to-remember rules.

You need to buy the Arcane Background Edge and choose which type of supernatural power your hero is blessed with. In Savage Mystara, only two types of Arcane Backgrounds are allowed: Magic (primarily wielded by mages) and Miracles (primarily wielded by clerics). Both types of powers use the same basic mechanics but with a few important differences in the details.
*[[Arcane Background: General Mechanics]]
*[[Arcane Background (Magic)]]
*[[Arcane Background (Miracles)]]
!!Available Powers
|!Arcane Background|!Novice Powers Available|
|Magic |//[[Armor|Armor (Power)]], [[Beast Friend]], [[Bolt]], [[Boost/Lower Trait]], [[Burrow]], [[Burst]], [[Deflection]], [[Detect/Conceal Arcana]], [[Elemental Manipulation]], [[Entangle]], [[Environmental Protection]], [[Fear]], [[Light]], [[Obscure]], [[Shape Change]], [[Smite]], [[Speak Language]], [[Speed]], [[Stun]]//|
|Miracles |//[[Armor|Armor (Power)]], [[Boost/Lower Trait]], [[Burrow]], [[Deflection]], [[Detect/Conceal Arcana]], [[Elemental Manipulation]], [[Entangle]], [[Environmental Protection]], [[Fear]], [[Healing]], [[Light]], [[Obscure]], [[Shape Change]], [[Smite]], [[Speak Language]], [[Speed]], [[Stun]]//|
Click on each Power or see [[Power Descriptions]] for details on the Powers listed.
/***
|Name:|PrettyDatesPlugin|
|Description:|Provides a new date format ('pppp') that displays times such as '2 days ago'|
|Version:|1.0 ($Rev: 3646 $)|
|Date:|$Date: 2008-02-27 02:34:38 +1000 (Wed, 27 Feb 2008) $|
|Source:|http://mptw.tiddlyspot.com/#PrettyDatesPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!!Notes
* If you want to you can rename this plugin. :) Some suggestions: LastUpdatedPlugin, RelativeDatesPlugin, SmartDatesPlugin, SexyDatesPlugin.
* Inspired by http://ejohn.org/files/pretty.js
***/
//{{{
Date.prototype.prettyDate = function() {
	var diff = (((new Date()).getTime() - this.getTime()) / 1000);
	var day_diff = Math.floor(diff / 86400);

	if (isNaN(day_diff))      return "";
	else if (diff < 0)        return "in the future";
	else if (diff < 60)       return "just now";
	else if (diff < 120)      return "1 minute ago";
	else if (diff < 3600)     return Math.floor(diff/60) + " minutes ago";
	else if (diff < 7200)     return "1 hour ago";
	else if (diff < 86400)    return Math.floor(diff/3600) + " hours ago";
	else if (day_diff == 1)   return "Yesterday";
	else if (day_diff < 7)    return day_diff + " days ago";
	else if (day_diff < 14)   return  "a week ago";
	else if (day_diff < 31)   return Math.ceil(day_diff/7) + " weeks ago";
	else if (day_diff < 62)   return "a month ago";
	else if (day_diff < 365)  return "about " + Math.ceil(day_diff/31) + " months ago";
	else if (day_diff < 730)  return "a year ago";
	else                      return Math.ceil(day_diff/365) + " years ago";
}

Date.prototype.formatString_orig_mptw = Date.prototype.formatString;

Date.prototype.formatString = function(template) {
	return this.formatString_orig_mptw(template).replace(/pppp/,this.prettyDate());
}

// for MPTW. otherwise edit your ViewTemplate as required.
// config.mptwDateFormat = 'pppp (DD/MM/YY)'; 
config.mptwDateFormat = 'pppp'; 

//}}}

//New Professional Edge//

''Requirements:'' Novice, Arcane Background (Miracles) with Ordana as Immortal Patron.

Priests of Ordana gain +2 Stealth in woodland settings and +2 Charisma when dealing with members of the forest races.
/***
|Name:|QuickOpenTagPlugin|
|Description:|Changes tag links to make it easier to open tags as tiddlers|
|Version:|3.0.1 ($Rev: 3861 $)|
|Date:|$Date: 2008-03-08 10:53:09 +1000 (Sat, 08 Mar 2008) $|
|Source:|http://mptw.tiddlyspot.com/#QuickOpenTagPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
***/
//{{{
config.quickOpenTag = {

	dropdownChar: (document.all ? "\u25bc" : "\u25be"), // the little one doesn't work in IE?

	createTagButton: function(place,tag,excludeTiddler) {
		// little hack so we can do this: <<tag PrettyTagName|RealTagName>>
		var splitTag = tag.split("|");
		var pretty = tag;
		if (splitTag.length == 2) {
			tag = splitTag[1];
			pretty = splitTag[0];
		}
		
		var sp = createTiddlyElement(place,"span",null,"quickopentag");
		createTiddlyText(createTiddlyLink(sp,tag,false),pretty);
		
		var theTag = createTiddlyButton(sp,config.quickOpenTag.dropdownChar,
                        config.views.wikified.tag.tooltip.format([tag]),onClickTag);
		theTag.setAttribute("tag",tag);
		if (excludeTiddler)
			theTag.setAttribute("tiddler",excludeTiddler);
    		return(theTag);
	},

	miniTagHandler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var tagged = store.getTaggedTiddlers(tiddler.title);
		if (tagged.length > 0) {
			var theTag = createTiddlyButton(place,config.quickOpenTag.dropdownChar,
                        	config.views.wikified.tag.tooltip.format([tiddler.title]),onClickTag);
			theTag.setAttribute("tag",tiddler.title);
			theTag.className = "miniTag";
		}
	},

	allTagsHandler: function(place,macroName,params) {
		var tags = store.getTags(params[0]);
		var filter = params[1]; // new feature
		var ul = createTiddlyElement(place,"ul");
		if(tags.length == 0)
			createTiddlyElement(ul,"li",null,"listTitle",this.noTags);
		for(var t=0; t<tags.length; t++) {
			var title = tags[t][0];
			if (!filter || (title.match(new RegExp('^'+filter)))) {
				var info = getTiddlyLinkInfo(title);
				var theListItem =createTiddlyElement(ul,"li");
				var theLink = createTiddlyLink(theListItem,tags[t][0],true);
				var theCount = " (" + tags[t][1] + ")";
				theLink.appendChild(document.createTextNode(theCount));
				var theDropDownBtn = createTiddlyButton(theListItem," " +
					config.quickOpenTag.dropdownChar,this.tooltip.format([tags[t][0]]),onClickTag);
				theDropDownBtn.setAttribute("tag",tags[t][0]);
			}
		}
	},

	// todo fix these up a bit
	styles: [
"/*{{{*/",
"/* created by QuickOpenTagPlugin */",
".tagglyTagged .quickopentag, .tagged .quickopentag ",
"	{ margin-right:1.2em; border:1px solid #eee; padding:2px; padding-right:0px; padding-left:1px; }",
".quickopentag .tiddlyLink { padding:2px; padding-left:3px; }",
".quickopentag a.button { padding:1px; padding-left:2px; padding-right:2px;}",
"/* extra specificity to make it work right */",
"#displayArea .viewer .quickopentag a.button, ",
"#displayArea .viewer .quickopentag a.tiddyLink, ",
"#mainMenu .quickopentag a.tiddyLink, ",
"#mainMenu .quickopentag a.tiddyLink ",
"	{ border:0px solid black; }",
"#displayArea .viewer .quickopentag a.button, ",
"#mainMenu .quickopentag a.button ",
"	{ margin-left:0px; padding-left:2px; }",
"#displayArea .viewer .quickopentag a.tiddlyLink, ",
"#mainMenu .quickopentag a.tiddlyLink ",
"	{ margin-right:0px; padding-right:0px; padding-left:0px; margin-left:0px; }",
"a.miniTag {font-size:150%;} ",
"#mainMenu .quickopentag a.button ",
"	/* looks better in right justified main menus */",
"	{ margin-left:0px; padding-left:2px; margin-right:0px; padding-right:0px; }", 
"#topMenu .quickopentag { padding:0px; margin:0px; border:0px; }",
"#topMenu .quickopentag .tiddlyLink { padding-right:1px; margin-right:0px; }",
"#topMenu .quickopentag .button { padding-left:1px; margin-left:0px; border:0px; }",
"/*}}}*/",
		""].join("\n"),

	init: function() {
		// we fully replace these builtins. can't hijack them easily
		window.createTagButton = this.createTagButton;
		config.macros.allTags.handler = this.allTagsHandler;
		config.macros.miniTag = { handler: this.miniTagHandler };
		config.shadowTiddlers["QuickOpenTagStyles"] = this.styles;
		store.addNotification("QuickOpenTagStyles",refreshStyles);
	}
}

config.quickOpenTag.init();

//}}}


//back to [[Gear]]//
!!!Ranged Weapons & Ammo
|!''Ranged Weapons''|>|>|>|>|>|>|>|
|Type|Range|Damage|Cost|Weight|Min Str.|Notes|
|Bow, Short| 12/24/48 | 2d6 | 250| 3| d6 ||
|Bow, Long| 15/30/60 | 2d6 | 200| 5| d8 ||
|Crossbow| 15/30/60 | 2d6 | 500| 10| d6 |AP 2, 1 action to reload|
|Crossbow, Hand| 6/12/24 | 2d4 | 200| 3||AP 1|
|Sling| 4/8/16 | Str+d4 | 10| 1|||
//All of the above ranged weapons have a Rate of Fire of 1.//

|!''Ammunition''|>|>|>|
|Weapon|Type of Ammo | Cost (gp) | Weight (lbs.) |
|Bow|Arrow^^1^^| 1/2| 1/5|
||Barbed Arrow^^1^^^^3^^| 1| 1/5|
||Silver-tipped Arrow^^1^^| 10| 1/5|
|Crossbow|Quarrel^^1^^| 2| 1/5|
||Silver-tipped Quarrel^^1^^| 30| 1/5|
|Crossbow, Hand|Quarrel^^1^^| 1| 1/10|
|Sling|Stone or lead pellet^^2^^| 1/10| 1/20|
||Silver pellet| 15| 1/20|
^^1^^//Outdoors, arrows and quarrels are recovered on a d6 roll of 4-6 (50% chance). Underground or indoors, the chance is reduced to a roll of 5-6 on 1d6 to reflect the increased chance of breakage.//
^^2^^//Stones can also be found for free with a Notice roll and 1d10 minutes searching, depending on terrain.//
^^3^^//Barbed arrows do +1 damage.//

//back to [[Gear]]//
/***
|Name:|RenameTagsPlugin|
|Description:|Allows you to easily rename or delete tags across multiple tiddlers|
|Version:|3.0 ($Rev: 5501 $)|
|Date:|$Date: 2008-06-10 23:11:55 +1000 (Tue, 10 Jun 2008) $|
|Source:|http://mptw.tiddlyspot.com/#RenameTagsPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License|http://mptw.tiddlyspot.com/#TheBSDLicense|
Rename a tag and you will be prompted to rename it in all its tagged tiddlers.
***/
//{{{
config.renameTags = {

	prompts: {
		rename: "Rename the tag '%0' to '%1' in %2 tidder%3?",
		remove: "Remove the tag '%0' from %1 tidder%2?"
	},

	removeTag: function(tag,tiddlers) {
		store.suspendNotifications();
		for (var i=0;i<tiddlers.length;i++) {
			store.setTiddlerTag(tiddlers[i].title,false,tag);
		}
		store.resumeNotifications();
		store.notifyAll();
	},

	renameTag: function(oldTag,newTag,tiddlers) {
		store.suspendNotifications();
		for (var i=0;i<tiddlers.length;i++) {
			store.setTiddlerTag(tiddlers[i].title,false,oldTag); // remove old
			store.setTiddlerTag(tiddlers[i].title,true,newTag);  // add new
		}
		store.resumeNotifications();
		store.notifyAll();
	},

	storeMethods: {

		saveTiddler_orig_renameTags: TiddlyWiki.prototype.saveTiddler,

		saveTiddler: function(title,newTitle,newBody,modifier,modified,tags,fields,clearChangeCount,created) {
			if (title != newTitle) {
				var tagged = this.getTaggedTiddlers(title);
				if (tagged.length > 0) {
					// then we are renaming a tag
					if (confirm(config.renameTags.prompts.rename.format([title,newTitle,tagged.length,tagged.length>1?"s":""])))
						config.renameTags.renameTag(title,newTitle,tagged);

					if (!this.tiddlerExists(title) && newBody == "")
						// dont create unwanted tiddler
						return null;
				}
			}
			return this.saveTiddler_orig_renameTags(title,newTitle,newBody,modifier,modified,tags,fields,clearChangeCount,created);
		},

		removeTiddler_orig_renameTags: TiddlyWiki.prototype.removeTiddler,

		removeTiddler: function(title) {
			var tagged = this.getTaggedTiddlers(title);
			if (tagged.length > 0)
				if (confirm(config.renameTags.prompts.remove.format([title,tagged.length,tagged.length>1?"s":""])))
					config.renameTags.removeTag(title,tagged);
			return this.removeTiddler_orig_renameTags(title);
		}

	},

	init: function() {
		merge(TiddlyWiki.prototype,this.storeMethods);
	}
}

config.renameTags.init();

//}}}

The character is a member of the Duke's own family. The GM will decide what relationship the character has with the Duke. For instance, the character may be the Duke's eldest child or the second-oldest, or even a nephew or niece of the Duke. The character will have recently been Sheared and so cannot depend much on the royal family for assistance for quite some time. If the character travels about under his own name, he risks kidnapping, murder, and subversion attempts.
In Karameikos, the gold piece is called the //''royal''//. On the obverse is a side-view of the head of King Halav, wearing his war-helmet; on the reverse are the inscriptions, “Grand Duchy of Karameikos,” “Glory in All Deeds” and “One Royal.”

//1 gp = 10 sp = 100 cp//
/***
|Name:|SaveCloseTiddlerPlugin|
|Description:|Provides two extra toolbar commands, saveCloseTiddler and cancelCloseTiddler|
|Version:|3.0 ($Rev: 5502 $)|
|Date:|$Date: 2008-06-10 23:31:39 +1000 (Tue, 10 Jun 2008) $|
|Source:|http://mptw.tiddlyspot.com/#SaveCloseTiddlerPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
To use these you must add them to the tool bar in your EditTemplate
***/
//{{{
merge(config.commands,{

	saveCloseTiddler: {
		text: 'done/close',
		tooltip: 'Save changes to this tiddler and close it',
		handler: function(ev,src,title) {
			var closeTitle = title;
			var newTitle = story.saveTiddler(title,ev.shiftKey);
			if (newTitle)
				closeTitle = newTitle;
			return config.commands.closeTiddler.handler(ev,src,closeTitle);
		}
	},

	cancelCloseTiddler: {
		text: 'cancel/close',
		tooltip: 'Undo changes to this tiddler and close it',
		handler: function(ev,src,title) {
			// the same as closeTiddler now actually
			return config.commands.closeTiddler.handler(ev,src,title);
		}
	}

});

//}}}

/***
|Name:|SelectThemePlugin|
|Description:|Lets you easily switch theme and palette|
|Version:|1.0 ($Rev: 3646 $)|
|Date:|$Date: 2008-02-27 02:34:38 +1000 (Wed, 27 Feb 2008) $|
|Source:|http://mptw.tiddlyspot.com/#SelectThemePlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!Notes
* Borrows largely from ThemeSwitcherPlugin by Martin Budden http://www.martinswiki.com/#ThemeSwitcherPlugin
* Theme is cookie based. But set a default by setting config.options.txtTheme in MptwConfigPlugin (for example)
* Palette is not cookie based. It actually overwrites your ColorPalette tiddler when you select a palette, so beware. 
!Usage
* {{{<<selectTheme>>}}} makes a dropdown selector
* {{{<<selectPalette>>}}} makes a dropdown selector
* {{{<<applyTheme>>}}} applies the current tiddler as a theme
* {{{<<applyPalette>>}}} applies the current tiddler as a palette
* {{{<<applyTheme TiddlerName>>}}} applies TiddlerName as a theme
* {{{<<applyPalette TiddlerName>>}}} applies TiddlerName as a palette
***/
//{{{

config.macros.selectTheme = {
	label: {
      		selectTheme:"select theme",
      		selectPalette:"select palette"
	},
	prompt: {
		selectTheme:"Select the current theme",
		selectPalette:"Select the current palette"
	},
	tags: {
		selectTheme:'systemTheme',
		selectPalette:'systemPalette'
	}
};

config.macros.selectTheme.handler = function(place,macroName)
{
	var btn = createTiddlyButton(place,this.label[macroName],this.prompt[macroName],this.onClick);
	// want to handle palettes and themes with same code. use mode attribute to distinguish
	btn.setAttribute('mode',macroName);
};

config.macros.selectTheme.onClick = function(ev)
{
	var e = ev ? ev : window.event;
	var popup = Popup.create(this);
	var mode = this.getAttribute('mode');
	var tiddlers = store.getTaggedTiddlers(config.macros.selectTheme.tags[mode]);
	// for default
	if (mode == "selectPalette") {
		var btn = createTiddlyButton(createTiddlyElement(popup,'li'),"(default)","default color palette",config.macros.selectTheme.onClickTheme);
		btn.setAttribute('theme',"(default)");
		btn.setAttribute('mode',mode);
	}
	for(var i=0; i<tiddlers.length; i++) {
		var t = tiddlers[i].title;
		var name = store.getTiddlerSlice(t,'Name');
		var desc = store.getTiddlerSlice(t,'Description');
		var btn = createTiddlyButton(createTiddlyElement(popup,'li'),name ? name : title,desc ? desc : config.macros.selectTheme.label['mode'],config.macros.selectTheme.onClickTheme);
		btn.setAttribute('theme',t);
		btn.setAttribute('mode',mode);
	}
	Popup.show();
	return stopEvent(e);
};

config.macros.selectTheme.onClickTheme = function(ev)
{
	var mode = this.getAttribute('mode');
	var theme = this.getAttribute('theme');
	if (mode == 'selectTheme')
		story.switchTheme(theme);
	else // selectPalette
		config.macros.selectTheme.updatePalette(theme);
	return false;
};

config.macros.selectTheme.updatePalette = function(title)
{
	if (title != "") {
		store.deleteTiddler("ColorPalette");
		if (title != "(default)")
			store.saveTiddler("ColorPalette","ColorPalette",store.getTiddlerText(title),
					config.options.txtUserName,undefined,"");
		refreshAll();
		if(config.options.chkAutoSave)
			saveChanges(true);
	}
};

config.macros.applyTheme = {
	label: "apply",
	prompt: "apply this theme or palette" // i'm lazy
};

config.macros.applyTheme.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
	var useTiddler = params[0] ? params[0] : tiddler.title;
	var btn = createTiddlyButton(place,this.label,this.prompt,config.macros.selectTheme.onClickTheme);
	btn.setAttribute('theme',useTiddler);
	btn.setAttribute('mode',macroName=="applyTheme"?"selectTheme":"selectPalette"); // a bit untidy here
}

config.macros.selectPalette = config.macros.selectTheme;
config.macros.applyPalette = config.macros.applyTheme;

config.macros.refreshAll = { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
	createTiddlyButton(place,"refresh","refresh layout and styles",function() { refreshAll(); });
}};

//}}}

!!Driving / Piloting
The Driving and Piloting skills are not used. Animal-drawn wagons are controlled using the Riding skill.
!!Guts
Fear is not a defining aspect of the setting, so the Guts skill is dropped and all uses are replaced with a Spirit roll.
''Rank:'' Special
''Power Points:'' Special
''Range:'' Self
''Duration:'' 1 minute (1/minute)
''Trappings:'' “Morphing,” talismans, tattoos.

Many cultures have legends of shamans or wizards who can take on the shape of animals. This power does just that. This version of the power only allows a user to transform into mundane animals, but more bizarre transmutations may be found.

A character may learn this spell while of Novice rank, but cannot transform into the more powerful creatures until he attains the appropriate rank. The cost in Power Points depends on the type of creature the character wishes to change into. Use the Shape Change Table as a guideline for unlisted creatures.

Weapons and other personal effects are assumed into the animal’s form and reappear when the power ends, but other objects are dropped.

While transformed, the character retains his own Smarts, Spirit, and linked skills (though he may not be able to use them since he cannot speak). He gains the animal’s Agility and Strength and linked skills, and cannot use most devices. He has no capacity for speech and cannot use powers, though he may continue to maintain powers previously activated. Vigor is the higher of the caster’s or the creature’s. The GM has final say on what an animal can and cannot do. A shaman in dog-form might be able to pull the trigger on a shotgun, for instance, but would use a default skill roll of d4-2 as the animal has no Shooting score of its own. The shaman’s Persuasion functions normally, but without speech, might suffer a -4 or worse penalty depending on what he tries to accomplish.
|!Shape Change|>|>|
| Cost |Rank|Animal Types|
| 3 |Novice|Hawk, rabbit, cat|
| 4 |Seasoned|Dog, wolf, deer|
| 5 |Veteran|Lion, tiger|
| 6 |Heroic|Bear, shark|
| 7 |Legendary|Great white shark|

[img[Savage Mystara|http://img511.imageshack.us/img511/7460/mystaranmisadventureswv8.jpg]]
There are numerous villages and homesteads all across Karameikos. Several small villages are given by name on the map but not described in any detail here.

Additionally, literally hundreds of homesteads exist along the rivers and roads of the duchy. These are one- or two- family settlements, mostly farms and logging operations, with populations ranging from a handful of people to as many as 750 inhabitants.
''Rank:'' Novice
''Power Points:'' 2
''Range:'' Touch
''Duration:'' 3 (1/round)
''Trappings:'' A colored glow, runes, sigils, crackling energy, barbs grow from the blade.

This power is cast on a weapon of some sort. If it’s a ranged weapon, it affects one entire magazine, 20 bolts, shells, or arrows, or one full “load” of ammunition (the GM may have to determine the exact quantity for unusual weapons). While the spell is in effect, the weapon’s damage is increased by +2, or +4 with a raise.
!!Social Standing By Race
*[[Humans|Human Social Standing]]
*[[Dwarves & Gnomes|Dwarven Social Standing]]
*[[Elves|Elven Social Standing]]
*[[Halflings|Halfling Social Standing]]
''Rank:'' Novice
''Power Points:'' 1
''Range:'' Touch
''Duration:'' 10 minutes (1/10 minutes)
''Trappings:'' Words, pictures, hand motions.

This power allows a character to speak, read, and write a language other than his own. The language must be of an advanced form—not animalistic. A raise on the arcane skill roll allows the user to project a particular dialect as well.
Specularum is the largest city in Karameikos, with a ppopulation of about 50,000 at last count.

Built just west of the point where the Highreach river enters the sea, Specularum is a trade city, with a good harbor, ample accomodations for traders and other visitors, and most of the comforts of civilization.

The city is surrounded by the farmlands of the Estate of Marilenev, and the lands of Baron Vorloi bordering the Estate to the southeast.

Specularum is ruled (through subordinates) by Duke Stefan Karameikos III. Additional political power lies in the Merchants' Guild, in the Church, and in the wealthy families such as the Vorloi, Radu, and Torenescu clans.
''Rank:'' Novice
''Power Points:'' 1
''Range:'' Touch
''Duration:'' 3 (1/round)
''Trappings:'' Blurred motion, “floating,” acrobatics.

Warriors who need to close with their foes quickly often use this power, as do those who sometimes need to outrun things Man Was Not Meant to Know. Speed allows the target of the power to move faster than usual. With a success, the recipient’s basic Pace is doubled. With a raise, running becomes a free action, so he may ignore the usual -2 running penalty.
The family is poor. It may own the property it lives on, but does not make a good living from it. Family members work all their lives for very little gain. The PC's starting money represents several years' worth of scrimping and saving for the head of the household, and the family hopes that the PC will become rich in his adventures and return to aid the family. The family lives in an inadequate home; family members have limited clothes and only occasionally own shoes or traveling gear; the household head may own a sword, but most family members have no weapons other than knives or bows.
''Rank:'' Novice
''Power Points:'' 2
''Range:'' 12/24/48
''Duration:'' Special
''Trappings:'' Bolts of energy, stun bombs, sonic booms, burst of blinding light.

Stun shocks those within a Medium Burst Template with concussive force, sound, light, magical energy, or the like. If the arcane character scores a success, targets within the area of effect must make Vigor rolls or be Shaken. With a raise, victims must make Vigor rolls at -2.
<<allTags excludeLists>>
<<tabs txtMoreTab "Tags" "All Tags" TabAllTags "Miss" "Missing tiddlers" TabMoreMissing "Orph" "Orphaned tiddlers" TabMoreOrphans "Shad" "Shadowed tiddlers" TabMoreShadowed>>
<<allTags excludeLists [a-z]>>
/***
|Name:|TagglyTaggingPlugin|
|Description:|tagglyTagging macro is a replacement for the builtin tagging macro in your ViewTemplate|
|Version:|3.3.1 ($Rev: 6100 $)|
|Date:|$Date: 2008-07-27 01:42:07 +1000 (Sun, 27 Jul 2008) $|
|Source:|http://mptw.tiddlyspot.com/#TagglyTaggingPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!Notes
See http://mptw.tiddlyspot.com/#TagglyTagging
***/
//{{{

merge(String.prototype,{

	parseTagExpr: function(debug) {

		if (this.trim() == "")
			return "(true)";

		var anyLogicOp = /(!|&&|\|\||\(|\))/g;
		var singleLogicOp = /^(!|&&|\|\||\(|\))$/;

		var spaced = this.
			// because square brackets in templates are no good
			// this means you can use [(With Spaces)] instead of [[With Spaces]]
			replace(/\[\(/g," [[").
			replace(/\)\]/g,"]] "). 
			// space things out so we can use readBracketedList. tricky eh?
			replace(anyLogicOp," $1 ");

		var expr = "";

		var tokens = spaced.readBracketedList(false); // false means don't uniq the list. nice one JR!

		for (var i=0;i<tokens.length;i++)
			if (tokens[i].match(singleLogicOp))
				expr += tokens[i];
			else
				expr += "tiddler.tags.contains('%0')".format([tokens[i].replace(/'/,"\\'")]); // fix single quote bug. still have round bracket bug i think

		if (debug)
			alert(expr);

		return '('+expr+')';
	}

});

merge(TiddlyWiki.prototype,{
	getTiddlersByTagExpr: function(tagExpr,sortField) {

		var result = [];

		var expr = tagExpr.parseTagExpr();

		store.forEachTiddler(function(title,tiddler) {
			if (eval(expr))
				result.push(tiddler);
		});

		if(!sortField)
			sortField = "title";

		result.sort(function(a,b) {return a[sortField] < b[sortField] ? -1 : (a[sortField] == b[sortField] ? 0 : +1);});
		
		return result;
	}
});

config.taggly = {

	// for translations
	lingo: {
		labels: {
			asc:        "\u2191", // down arrow
			desc:       "\u2193", // up arrow
			title:      "title",
			modified:   "modified",
			created:    "created",
			show:       "+",
			hide:       "-",
			normal:     "normal",
			group:      "group",
			commas:     "commas",
			sitemap:    "sitemap",
			numCols:    "cols\u00b1", // plus minus sign
			label:      "Tagged as '%0':",
			exprLabel:  "Matching tag expression '%0':",
			excerpts:   "excerpts",
			descr:      "descr",
			slices:     "slices",
			contents:   "contents",
			sliders:    "sliders",
			noexcerpts: "title only",
			noneFound:  "(none)"
		},

		tooltips: {
			title:      "Click to sort by title",
			modified:   "Click to sort by modified date",
			created:    "Click to sort by created date",
			show:       "Click to show tagging list",
			hide:       "Click to hide tagging list",
			normal:     "Click to show a normal ungrouped list",
			group:      "Click to show list grouped by tag",
			sitemap:    "Click to show a sitemap style list",
			commas:     "Click to show a comma separated list",
			numCols:    "Click to change number of columns",
			excerpts:   "Click to show excerpts",
			descr:      "Click to show the description slice",
			slices:     "Click to show all slices",
			contents:   "Click to show entire tiddler contents",
			sliders:    "Click to show tiddler contents in sliders",
			noexcerpts: "Click to show entire title only"
		},

		tooDeepMessage: "* //sitemap too deep...//"
	},

	config: {
		showTaggingCounts: true,
		listOpts: {
			// the first one will be the default
			sortBy:     ["title","modified","created"],
			sortOrder:  ["asc","desc"],
			hideState:  ["show","hide"],
			listMode:   ["normal","group","sitemap","commas"],
			numCols:    ["1","2","3","4","5","6"],
			excerpts:   ["noexcerpts","excerpts","descr","slices","contents","sliders"]
		},
		valuePrefix: "taggly.",
		excludeTags: ["excludeLists","excludeTagging"],
		excerptSize: 50,
		excerptMarker: "/%"+"%/",
		siteMapDepthLimit: 25
	},

	getTagglyOpt: function(title,opt) {
		var val = store.getValue(title,this.config.valuePrefix+opt);
		return val ? val : this.config.listOpts[opt][0];
	},

	setTagglyOpt: function(title,opt,value) {
		if (!store.tiddlerExists(title))
			// create it silently
			store.saveTiddler(title,title,config.views.editor.defaultText.format([title]),config.options.txtUserName,new Date(),"");
		// if value is default then remove it to save space
		return store.setValue(title,
			this.config.valuePrefix+opt,
			value == this.config.listOpts[opt][0] ? null : value);
	},

	getNextValue: function(title,opt) {
		var current = this.getTagglyOpt(title,opt);
		var pos = this.config.listOpts[opt].indexOf(current);
		// a little usability enhancement. actually it doesn't work right for grouped or sitemap
		var limit = (opt == "numCols" ? store.getTiddlersByTagExpr(title).length : this.config.listOpts[opt].length);
		var newPos = (pos + 1) % limit;
		return this.config.listOpts[opt][newPos];
	},

	toggleTagglyOpt: function(title,opt) {
		var newVal = this.getNextValue(title,opt);
		this.setTagglyOpt(title,opt,newVal);
	}, 

	createListControl: function(place,title,type) {
		var lingo = config.taggly.lingo;
		var label;
		var tooltip;
		var onclick;

		if ((type == "title" || type == "modified" || type == "created")) {
			// "special" controls. a little tricky. derived from sortOrder and sortBy
			label = lingo.labels[type];
			tooltip = lingo.tooltips[type];

			if (this.getTagglyOpt(title,"sortBy") == type) {
				label += lingo.labels[this.getTagglyOpt(title,"sortOrder")];
				onclick = function() {
					config.taggly.toggleTagglyOpt(title,"sortOrder");
					return false;
				}
			}
			else {
				onclick = function() {
					config.taggly.setTagglyOpt(title,"sortBy",type);
					config.taggly.setTagglyOpt(title,"sortOrder",config.taggly.config.listOpts.sortOrder[0]);
					return false;
				}
			}
		}
		else {
			// "regular" controls, nice and simple
			label = lingo.labels[type == "numCols" ? type : this.getNextValue(title,type)];
			tooltip = lingo.tooltips[type == "numCols" ? type : this.getNextValue(title,type)];
			onclick = function() {
				config.taggly.toggleTagglyOpt(title,type);
				return false;
			}
		}

		// hide button because commas don't have columns
		if (!(this.getTagglyOpt(title,"listMode") == "commas" && type == "numCols"))
			createTiddlyButton(place,label,tooltip,onclick,type == "hideState" ? "hidebutton" : "button");
	},

	makeColumns: function(orig,numCols) {
		var listSize = orig.length;
		var colSize = listSize/numCols;
		var remainder = listSize % numCols;

		var upperColsize = colSize;
		var lowerColsize = colSize;

		if (colSize != Math.floor(colSize)) {
			// it's not an exact fit so..
			upperColsize = Math.floor(colSize) + 1;
			lowerColsize = Math.floor(colSize);
		}

		var output = [];
		var c = 0;
		for (var j=0;j<numCols;j++) {
			var singleCol = [];
			var thisSize = j < remainder ? upperColsize : lowerColsize;
			for (var i=0;i<thisSize;i++) 
				singleCol.push(orig[c++]);
			output.push(singleCol);
		}

		return output;
	},

	drawTable: function(place,columns,theClass) {
		var newTable = createTiddlyElement(place,"table",null,theClass);
		var newTbody = createTiddlyElement(newTable,"tbody");
		var newTr = createTiddlyElement(newTbody,"tr");
		for (var j=0;j<columns.length;j++) {
			var colOutput = "";
			for (var i=0;i<columns[j].length;i++) 
				colOutput += columns[j][i];
			var newTd = createTiddlyElement(newTr,"td",null,"tagglyTagging"); // todo should not need this class
			wikify(colOutput,newTd);
		}
		return newTable;
	},

	createTagglyList: function(place,title,isTagExpr) {
		switch(this.getTagglyOpt(title,"listMode")) {
			case "group":  return this.createTagglyListGrouped(place,title,isTagExpr); break;
			case "normal": return this.createTagglyListNormal(place,title,false,isTagExpr); break;
			case "commas": return this.createTagglyListNormal(place,title,true,isTagExpr); break;
			case "sitemap":return this.createTagglyListSiteMap(place,title,isTagExpr); break;
		}
	},

	getTaggingCount: function(title,isTagExpr) {
		// thanks to Doug Edmunds
		if (this.config.showTaggingCounts) {
			var tagCount = config.taggly.getTiddlers(title,'title',isTagExpr).length;
			if (tagCount > 0)
				return " ("+tagCount+")";
		}
		return "";
	},

	getTiddlers: function(titleOrExpr,sortBy,isTagExpr) {
		return isTagExpr ? store.getTiddlersByTagExpr(titleOrExpr,sortBy) : store.getTaggedTiddlers(titleOrExpr,sortBy);
	},

	getExcerpt: function(inTiddlerTitle,title,indent) {
		if (!indent)
			indent = 1;

		var displayMode = this.getTagglyOpt(inTiddlerTitle,"excerpts");
		var t = store.getTiddler(title);

		if (t && displayMode == "excerpts") {
			var text = t.text.replace(/\n/," ");
			var marker = text.indexOf(this.config.excerptMarker);
			if (marker != -1) {
				return " {{excerpt{<nowiki>" + text.substr(0,marker) + "</nowiki>}}}";
			}
			else if (text.length < this.config.excerptSize) {
				return " {{excerpt{<nowiki>" + t.text + "</nowiki>}}}";
			}
			else {
				return " {{excerpt{<nowiki>" + t.text.substr(0,this.config.excerptSize) + "..." + "</nowiki>}}}";
			}
		}
		else if (t && displayMode == "contents") {
			return "\n{{contents indent"+indent+"{\n" + t.text + "\n}}}";
		}
		else if (t && displayMode == "sliders") {
			return "<slider slide>\n{{contents{\n" + t.text + "\n}}}\n</slider>";
		}
		else if (t && displayMode == "descr") {
			var descr = store.getTiddlerSlice(title,'Description');
			return descr ? " {{excerpt{" + descr  + "}}}" : "";
		}
		else if (t && displayMode == "slices") {
			var result = "";
			var slices = store.calcAllSlices(title);
			for (var s in slices)
				result += "|%0|<nowiki>%1</nowiki>|\n".format([s,slices[s]]);
			return result ? "\n{{excerpt excerptIndent{\n" + result  + "}}}" : "";
		}
		return "";
	},

	notHidden: function(t,inTiddler) {
		if (typeof t == "string") 
			t = store.getTiddler(t);
		return (!t || !t.tags.containsAny(this.config.excludeTags) ||
				(inTiddler && this.config.excludeTags.contains(inTiddler)));
	},

	// this is for normal and commas mode
	createTagglyListNormal: function(place,title,useCommas,isTagExpr) {

		var list = config.taggly.getTiddlers(title,this.getTagglyOpt(title,"sortBy"),isTagExpr);

		if (this.getTagglyOpt(title,"sortOrder") == "desc")
			list = list.reverse();

		var output = [];
		var first = true;
		for (var i=0;i<list.length;i++) {
			if (this.notHidden(list[i],title)) {
				var countString = this.getTaggingCount(list[i].title);
				var excerpt = this.getExcerpt(title,list[i].title);
				if (useCommas)
					output.push((first ? "" : ", ") + "[[" + list[i].title + "]]" + countString + excerpt);
				else
					output.push("*[[" + list[i].title + "]]" + countString + excerpt + "\n");

				first = false;
			}
		}

		return this.drawTable(place,
			this.makeColumns(output,useCommas ? 1 : parseInt(this.getTagglyOpt(title,"numCols"))),
			useCommas ? "commas" : "normal");
	},

	// this is for the "grouped" mode
	createTagglyListGrouped: function(place,title,isTagExpr) {
		var sortBy = this.getTagglyOpt(title,"sortBy");
		var sortOrder = this.getTagglyOpt(title,"sortOrder");

		var list = config.taggly.getTiddlers(title,sortBy,isTagExpr);

		if (sortOrder == "desc")
			list = list.reverse();

		var leftOvers = []
		for (var i=0;i<list.length;i++)
			leftOvers.push(list[i].title);

		var allTagsHolder = {};
		for (var i=0;i<list.length;i++) {
			for (var j=0;j<list[i].tags.length;j++) {

				if (list[i].tags[j] != title) { // not this tiddler

					if (this.notHidden(list[i].tags[j],title)) {

						if (!allTagsHolder[list[i].tags[j]])
							allTagsHolder[list[i].tags[j]] = "";

						if (this.notHidden(list[i],title)) {
							allTagsHolder[list[i].tags[j]] += "**[["+list[i].title+"]]"
										+ this.getTaggingCount(list[i].title) + this.getExcerpt(title,list[i].title) + "\n";

							leftOvers.setItem(list[i].title,-1); // remove from leftovers. at the end it will contain the leftovers

						}
					}
				}
			}
		}

		var allTags = [];
		for (var t in allTagsHolder)
			allTags.push(t);

		var sortHelper = function(a,b) {
			if (a == b) return 0;
			if (a < b) return -1;
			return 1;
		};

		allTags.sort(function(a,b) {
			var tidA = store.getTiddler(a);
			var tidB = store.getTiddler(b);
			if (sortBy == "title") return sortHelper(a,b);
			else if (!tidA && !tidB) return 0;
			else if (!tidA) return -1;
			else if (!tidB) return +1;
			else return sortHelper(tidA[sortBy],tidB[sortBy]);
		});

		var leftOverOutput = "";
		for (var i=0;i<leftOvers.length;i++)
			if (this.notHidden(leftOvers[i],title))
				leftOverOutput += "*[["+leftOvers[i]+"]]" + this.getTaggingCount(leftOvers[i]) + this.getExcerpt(title,leftOvers[i]) + "\n";

		var output = [];

		if (sortOrder == "desc")
			allTags.reverse();
		else if (leftOverOutput != "")
			// leftovers first...
			output.push(leftOverOutput);

		for (var i=0;i<allTags.length;i++)
			if (allTagsHolder[allTags[i]] != "")
				output.push("*[["+allTags[i]+"]]" + this.getTaggingCount(allTags[i]) + this.getExcerpt(title,allTags[i]) + "\n" + allTagsHolder[allTags[i]]);

		if (sortOrder == "desc" && leftOverOutput != "")
			// leftovers last...
			output.push(leftOverOutput);

		return this.drawTable(place,
				this.makeColumns(output,parseInt(this.getTagglyOpt(title,"numCols"))),
				"grouped");

	},

	// used to build site map
	treeTraverse: function(title,depth,sortBy,sortOrder,isTagExpr) {

		var list = config.taggly.getTiddlers(title,sortBy,isTagExpr);

		if (sortOrder == "desc")
			list.reverse();

		var indent = "";
		for (var j=0;j<depth;j++)
			indent += "*"

		var childOutput = "";

		if (depth > this.config.siteMapDepthLimit)
			childOutput += indent + this.lingo.tooDeepMessage;
		else
			for (var i=0;i<list.length;i++)
				if (list[i].title != title)
					if (this.notHidden(list[i].title,this.config.inTiddler))
						childOutput += this.treeTraverse(list[i].title,depth+1,sortBy,sortOrder,false);

		if (depth == 0)
			return childOutput;
		else
			return indent + "[["+title+"]]" + this.getTaggingCount(title) + this.getExcerpt(this.config.inTiddler,title,depth) + "\n" + childOutput;
	},

	// this if for the site map mode
	createTagglyListSiteMap: function(place,title,isTagExpr) {
		this.config.inTiddler = title; // nasty. should pass it in to traverse probably
		var output = this.treeTraverse(title,0,this.getTagglyOpt(title,"sortBy"),this.getTagglyOpt(title,"sortOrder"),isTagExpr);
		return this.drawTable(place,
				this.makeColumns(output.split(/(?=^\*\[)/m),parseInt(this.getTagglyOpt(title,"numCols"))), // regexp magic
				"sitemap"
				);
	},

	macros: {
		tagglyTagging: {
			handler: function (place,macroName,params,wikifier,paramString,tiddler) {
				var parsedParams = paramString.parseParams("tag",null,true);
				var refreshContainer = createTiddlyElement(place,"div");

				// do some refresh magic to make it keep the list fresh - thanks Saq
				refreshContainer.setAttribute("refresh","macro");
				refreshContainer.setAttribute("macroName",macroName);

				var tag = getParam(parsedParams,"tag");
				var expr = getParam(parsedParams,"expr");

				if (expr) {
					refreshContainer.setAttribute("isTagExpr","true");
					refreshContainer.setAttribute("title",expr);
					refreshContainer.setAttribute("showEmpty","true");
				}
				else {
					refreshContainer.setAttribute("isTagExpr","false");
					if (tag) {
        				refreshContainer.setAttribute("title",tag);
						refreshContainer.setAttribute("showEmpty","true");
					}
					else {
        				refreshContainer.setAttribute("title",tiddler.title);
						refreshContainer.setAttribute("showEmpty","false");
					}
				}
				this.refresh(refreshContainer);
			},

			refresh: function(place) {
				var title = place.getAttribute("title");
				var isTagExpr = place.getAttribute("isTagExpr") == "true";
				var showEmpty = place.getAttribute("showEmpty") == "true";
				removeChildren(place);
				addClass(place,"tagglyTagging");
				var countFound = config.taggly.getTiddlers(title,'title',isTagExpr).length
				if (countFound > 0 || showEmpty) {
					var lingo = config.taggly.lingo;
					config.taggly.createListControl(place,title,"hideState");
					if (config.taggly.getTagglyOpt(title,"hideState") == "show") {
						createTiddlyElement(place,"span",null,"tagglyLabel",
								isTagExpr ? lingo.labels.exprLabel.format([title]) : lingo.labels.label.format([title]));
						config.taggly.createListControl(place,title,"title");
						config.taggly.createListControl(place,title,"modified");
						config.taggly.createListControl(place,title,"created");
						config.taggly.createListControl(place,title,"listMode");
						config.taggly.createListControl(place,title,"excerpts");
						config.taggly.createListControl(place,title,"numCols");
						config.taggly.createTagglyList(place,title,isTagExpr);
						if (countFound == 0 && showEmpty)
							createTiddlyElement(place,"div",null,"tagglyNoneFound",lingo.labels.noneFound);
					}
				}
			}
		}
	},

	// todo fix these up a bit
	styles: [
"/*{{{*/",
"/* created by TagglyTaggingPlugin */",
".tagglyTagging { padding-top:0.5em; }",
".tagglyTagging li.listTitle { display:none; }",
".tagglyTagging ul {",
"	margin-top:0px; padding-top:0.5em; padding-left:2em;",
"	margin-bottom:0px; padding-bottom:0px;",
"}",
".tagglyTagging { vertical-align: top; margin:0px; padding:0px; }",
".tagglyTagging table { margin:0px; padding:0px; }",
".tagglyTagging .button { visibility:hidden; margin-left:3px; margin-right:3px; }",
".tagglyTagging .button, .tagglyTagging .hidebutton {",
"	color:[[ColorPalette::TertiaryLight]]; font-size:90%;",
"	border:0px; padding-left:0.3em;padding-right:0.3em;",
"}",
".tagglyTagging .button:hover, .hidebutton:hover, ",
".tagglyTagging .button:active, .hidebutton:active  {",
"	border:0px; background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]];",
"}",
".selected .tagglyTagging .button { visibility:visible; }",
".tagglyTagging .hidebutton { color:[[ColorPalette::Background]]; }",
".selected .tagglyTagging .hidebutton { color:[[ColorPalette::TertiaryLight]] }",
".tagglyLabel { color:[[ColorPalette::TertiaryMid]]; font-size:90%; }",
".tagglyTagging ul {padding-top:0px; padding-bottom:0.5em; margin-left:1em; }",
".tagglyTagging ul ul {list-style-type:disc; margin-left:-1em;}",
".tagglyTagging ul ul li {margin-left:0.5em; }",
".editLabel { font-size:90%; padding-top:0.5em; }",
".tagglyTagging .commas { padding-left:1.8em; }",
"/* not technically tagglytagging but will put them here anyway */",
".tagglyTagged li.listTitle { display:none; }",
".tagglyTagged li { display: inline; font-size:90%; }",
".tagglyTagged ul { margin:0px; padding:0px; }",
".excerpt { color:[[ColorPalette::TertiaryDark]]; }",
".excerptIndent { margin-left:4em; }",
"div.tagglyTagging table,",
"div.tagglyTagging table tr,",
"td.tagglyTagging",
" {border-style:none!important; }",
".tagglyTagging .contents { border-bottom:2px solid [[ColorPalette::TertiaryPale]]; padding:0 1em 1em 0.5em;",
"  margin-bottom:0.5em; }",
".tagglyTagging .indent1  { margin-left:3em;  }",
".tagglyTagging .indent2  { margin-left:4em;  }",
".tagglyTagging .indent3  { margin-left:5em;  }",
".tagglyTagging .indent4  { margin-left:6em;  }",
".tagglyTagging .indent5  { margin-left:7em;  }",
".tagglyTagging .indent6  { margin-left:8em;  }",
".tagglyTagging .indent7  { margin-left:9em;  }",
".tagglyTagging .indent8  { margin-left:10em; }",
".tagglyTagging .indent9  { margin-left:11em; }",
".tagglyTagging .indent10 { margin-left:12em; }",
".tagglyNoneFound { margin-left:2em; color:[[ColorPalette::TertiaryMid]]; font-size:90%; font-style:italic; }",
"/*}}}*/",
		""].join("\n"),

	init: function() {
		merge(config.macros,this.macros);
		config.shadowTiddlers["TagglyTaggingStyles"] = this.styles;
		store.addNotification("TagglyTaggingStyles",refreshStyles);
	}
};

config.taggly.init();

//}}}

/***
InlineSlidersPlugin
By Saq Imtiaz
http://tw.lewcid.org/sandbox/#InlineSlidersPlugin

// syntax adjusted to not clash with NestedSlidersPlugin
// added + syntax to start open instead of closed

***/
//{{{
config.formatters.unshift( {
	name: "inlinesliders",
	// match: "\\+\\+\\+\\+|\\<slider",
	match: "\\<slider",
	// lookaheadRegExp: /(?:\+\+\+\+|<slider) (.*?)(?:>?)\n((?:.|\n)*?)\n(?:====|<\/slider>)/mg,
	lookaheadRegExp: /(?:<slider)(\+?) (.*?)(?:>)\n((?:.|\n)*?)\n(?:<\/slider>)/mg,
	handler: function(w) {
		this.lookaheadRegExp.lastIndex = w.matchStart;
		var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
		if(lookaheadMatch && lookaheadMatch.index == w.matchStart ) {
			var btn = createTiddlyButton(w.output,lookaheadMatch[2] + " "+"\u00BB",lookaheadMatch[2],this.onClickSlider,"button sliderButton");
			var panel = createTiddlyElement(w.output,"div",null,"sliderPanel");
			panel.style.display = (lookaheadMatch[1] == '+' ? "block" : "none");
			wikify(lookaheadMatch[3],panel);
			w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
		}
   },
   onClickSlider : function(e) {
		if(!e) var e = window.event;
		var n = this.nextSibling;
		n.style.display = (n.style.display=="none") ? "block" : "none";
		return false;
	}
});

//}}}

After the //[[Golden Age of the Traldar|The Song of King Halav]]// in King Halav's rule, the Traladarans fell into a dark age from which they didn't fully emerge until the last century. 

Trade soon commenced with the Minrothad and Thyatis peoples, but the Traladara still faced many problems.

Many things settled in the forests and mountains, like some evil force cursed the land with vampires, lycanthropes, and other beasts. Travel between inland villages was unsafe. This made the coastline villages prosper while inland villages remained isolated and more ignorant.

During this dark age, clans of goblins, hobgoblins, and orcs also settled in Traladaran lands. They warred upon each other and upon the humans, genrally making the land less congenial for everyone.

More peaceful tribes of elvish and gnomish settlers also came to Traladara. The elves settled the central forests, while the gnomes settled in the northern mountain foothills. Both races traded with the humans and fought alongside them against the less friendly demi-human tribes.

//Return to [[Lore]]//
This was developed in the village of Marilenev (now called Specularum) and was in common use there and in surrounding areas in the centuries before Thyatis conquered Traladara. Since that time, improved trade with the inland communities has spread the Shearing Ceremony thoughout the land. When Duke Stefan and the Thyatian settlers came, they were acquainted with the ceremony and generally adopted it.

It goes something like this:

When a Karameikan youth approaches adulthood, either he will approach his parents or they will approach him with the news that it is time for the Shearing.

Soon after, at a dinner to which other family members or village leaders may be invited, the youth stands silent while his parents solemnly dress him in traveling gear. The bottom of his cloak is sheared off and left ragged as a reflection of his condition: that of an impoverished traveler.

From that time, the sheared youth is considered a friend of the family but not part of it. He must make his own way in the world until the family decides he is worthy of the clan. Usually, living apart from the clan for a few years and participating in acceptable adventures or trading ventures is proof that the youth is able to prosper on his own; when his parents reach that conclusion, he is invited to another dinner, at which time he is presented with a garment bearing the clan's markings or coat of arms. This indicates that he is once again a part of the family.

All young men between the ages of 14 and 19 (1d6 + 13) are Sheared. (Usually, the lad approaches his parents first, because it's an embarrassment to wait so long that they come to you.) Young women are not approached by their parents, but may insist that they be Sheared. Being Sheared and living away from the family for a few years is a good way for a young woman to earn respect within her family.

When the Thyatians came to Karameikos, they saw in the ceremony a way to separate the worthwhile from the parasitic in their own families, and adopted the custom.

A Sheared youth from a titled family is not considered to have any title until he is invited by his family to rejoin their ranks.

Shearing is a human custom, not shared by the demi-humans of Karameikos.
The first part of Karameikos' history is recorded in an epic work of poetry of the Traldar (Traladara) people, [[The Song of King Halav]]. This is an ancient work maintained by generations of bards before finally being committed to writing about six centuries ago.

The Traldar lived happy, simple lives: they fished and hunted, spent their time sporting with one another, and offered praise to the Immortals.

Far to the west, a race of evil //beast-men// was preparing to march through the easterly lands in search of booty, prisoners, and more hospitable homelands.

These //beastmen// had their own Immortal sponsors equal in might to the Traladaran's patrons.

The Immortals descended to Lavv, a Traldar village, to give the Traladarans secrets they could use to defeat the //beastmen//.

They visited three clever youths:
* ''Halav Red-Hair,'' a maker of stone knives: They taught him //how to forge weapons and armor of bronze//, as well as //the arts of the sword// and //the strategy of battle//.
* ''Petra,'' a maker of pottery: They taught her //the art of the bow//, //the craft of medicine//, //the use of the potter's wheel//, //the spinning of flax//, and the //use of the loom//.
* ''Zirchev,'' a huntsman: They taught him how to //tame and ride and fight from horses//, how to //train dogs to fight for their masters//, how to //walk silent as the cat//, //swim as the fish//, and //see as the hawk//.
Halav, Petra and Zirchev told the people of Lavv what the //beast-men// intended. The king laughed and tried to drive the trio from Lavv. Halav slew the king, using the bronze sword given by the Immortals, and assumed his crown.

In the following years, King Halav, Queen Petra, and the Huntsman Zirchev taught their secrets to the people of Lavv and brought all the other villages of Traldar lands under their sway. Villages grew into mighty cities and Halav became renowned for his fairness and wisdom.

Eventually the //beast-men// attacked in numberless waves from the west. Traldar fighters in glittering bronze armor stood against them, slaying dozens of beasts before being slain themselves. The war went on forever.

Finally, King Halav found the Beast-King alone on a hilltop. It was twice the height of a man, with the head of a wolf and a hairy body that was foul beyond compare. It smashed its great axe against the sword given to Halav by the Immortals.

This was the final battle. It raged from dawn until noon, both kings growing so tired that each could barely wield his weapon in the end. Each king's final blow struck simultaneously: both perished upon the other's weapon.

With their king dead, the //beast-men// departed Traldar lands. Queen Petra and Zirchev took up Halav's body and returned home. All Lavv lamented greatly that night, and even the Immortals visited once again, spiriting Halav, Petra, and Zirchev away.

//Return to [[Lore]]//
!!//Stealth, lockpicking, trap removal, and stealing...//
Human Novice
''Attributes:'' Agility d8, Smarts d6, Spirit d4, Strength d6, Vigor d6
''Skills:'' Climb d6, Fighting d6, Lockpicking d6, Notice d6, Stealth d8, Throwing d8
''Derived Stats:'' Pace: 6"; Parry: 5 (6 if unencumbered); Toughness: 5; Charisma: +0
''Edges:'' Acrobat (+2 to nimbleness-based Agility rolls; +1 Parry if unencumbered), Thief (+2 Climb, Lockpick, Stealth, or to disarm traps)
''Hindrances:'' Greedy (Major), Poverty (minor),Wanted (minor)
''Gear:'' Dagger (Range 3/6/12, Str+d4, 1 lb), Thieves Tools (1 lb), Normal Clothes, Shoes, Belt, Belt Pouch (0.5 lb.), 25 golden royals.
//Weight Limit: 30 lbs.; Encumbrance: 2.5 lbs.; Encumbrance Penalty: 0//
Threshold is a logging community of 5,000. Though small, it's a decent place to live and is not as rustic as most communities of similar size.

Threshold is ably ruled by Sherlane Halaran, baron and Patriarch of the Church.
Back to [[Humans|Human]]

Most of the nobles in Karameikos are of Thyatian descent, as well as a sizeable proportion of the commoner population.

Thyatians tend to be physically larger than Traladarans, men averaging around 5 feet, 11 inches and women about 5 feet, 5 inches. The Thyatians have interbred with other nations for centuries, so there is no one Thyatian look. Hair ranges from dark blond to dark brown, with occasional redheads (including the Duke); eye color ranges from blues to browns and blacks. The Thyatians tan more easily in the sun than the paler Traladarans, who are more prone to sunburn.
!!!Attitudes
Most nobles in Karameikos are of Thyatian descent, as is a sizable proportion of the commoner population. Thyatis, a large, corrupt empire to the east of Karameikos, has powerful armies, strong trade relations with the great nations of the world, lavish arts and entertainments, and a cultural standard equaled in few places. It is natural, then, that people of Thyatian descent feel superior to the native Traladarans.

Many hold the sentiment that Traladarans are superstitious and ignorant and that Thyatian spoken with a Traladaran accent denotes a lack of mental ability. (Again, a player may decide whether to give a character this bias.)

In turn, Traladarans consider Thyatians to be predatory, faddish, greedy, corrupt and lazy.
!!!Dress
The Thyatian man in traditional common dress wears ankle-length trousers, a belt, and a sleeveless vest. In winter, the vest goes over a long-sleeved shirt that buttons up the front. If the gentleman has enough money, he wears shoes or boots and carries a belt pouch or two. Fighting men often wear leather wrist bracers. 

Thyatian men wear their hair short, and they may go clean shaven or not; many wear very full
beards and mustaches. Thyatians tend to have very little jewelry, though males wear finger rings and the occasional necklace, often with a medallion attached.

The Thyatian woman in common dress wears a skirt to the calf in summer and the floor in winter, a sleeveless vest over a long-sleeved V-neck blouse that buttons up the front, and perhaps a beltpouch. Sandals and shoes are appropriate footwear. 

Thyatian women wear their hair long, either loose, braided, or up, depending upon the weather  and the situation. They prefer modest earrings, finger rings, and long necklaces of gold, pearls, stones, etc.

Thyatians of both sexes who dress for effect keep their dress simple; two or three well-coordinated colors, pleasingly and gracefully matched. In mildly chilly weather, Thyatians with money dress in hip-length cloaks to keep warm. When true winter rolls around, they don full-length cloaks with hoods.
!!![[The Shearing Ceremony]]
Native Traladarans have a custom which is an important part of the Karameikan national character: [[the Shearing Ceremony|The Shearing Ceremony]]. This custom has also been adopted by the [[Thyatian]] settlers.
!!!Thyatian Name Guidelines
Thyatians tend to have given names which are reminiscent of ancient and classical Roman and Byzantine names: Varis (Varia), Alexander (Alexandra), Valerius (Valeria), Titius (Titia), Claudius (Claudia), Anastasius (Anastasia), etc. Other given names are appropriate fantasy names.

Their surnames tend to be strong, majestic-sounding monickers: Karameikos, Penhaligon, Korrigan, for example.
!!!Game Crunch
*''Bonus Edge:'' Humans start play with one free Edge of their choice. The character must meet the requirements of the Edge as usual.
*''Languages'' //(Starting No. of Languages: Smarts/2)//'':'' Thyatians speak [[Thyatian (the Common Tongue)]]. They may fill additional language slots from [[Languages]].
Back to [[Humans|Human]]
The national language of the Empire of Thyatis is used throughout the Known World as a trade language.
/***
|Name:|ToggleTagPlugin|
|Description:|Makes a checkbox which toggles a tag in a tiddler|
|Version:|3.1.0 ($Rev: 4907 $)|
|Date:|$Date: 2008-05-13 03:15:46 +1000 (Tue, 13 May 2008) $|
|Source:|http://mptw.tiddlyspot.com/#ToggleTagPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!!Usage
{{{<<toggleTag }}}//{{{TagName TiddlerName LabelText}}}//{{{>>}}}
* TagName - the tag to be toggled, default value "checked"
* TiddlerName - the tiddler to toggle the tag in, default value the current tiddler
* LabelText - the text (gets wikified) to put next to the check box, default value is '{{{[[TagName]]}}}' or '{{{[[TagName]] [[TiddlerName]]}}}'
(If a parameter is '.' then the default will be used)
* TouchMod flag - if non empty then touch the tiddlers mod date. Note, can set config.toggleTagAlwaysTouchModDate to always touch mod date
!!Examples
|Code|Description|Example|h
|{{{<<toggleTag>>}}}|Toggles the default tag (checked) in this tiddler|<<toggleTag>>|
|{{{<<toggleTag TagName>>}}}|Toggles the TagName tag in this tiddler|<<toggleTag TagName>>|
|{{{<<toggleTag TagName TiddlerName>>}}}|Toggles the TagName tag in the TiddlerName tiddler|<<toggleTag TagName TiddlerName>>|
|{{{<<toggleTag TagName TiddlerName 'click me'>>}}}|Same but with custom label|<<toggleTag TagName TiddlerName 'click me'>>|
|{{{<<toggleTag . . 'click me'>>}}}|dot means use default value|<<toggleTag . . 'click me'>>|
!!Notes
* If TiddlerName doesn't exist it will be silently created
* Set label to '-' to specify no label
* See also http://mgtd-alpha.tiddlyspot.com/#ToggleTag2
!!Known issues
* Doesn't smoothly handle the case where you toggle a tag in a tiddler that is current open for editing
* Should convert to use named params
***/
//{{{

if (config.toggleTagAlwaysTouchModDate == undefined) config.toggleTagAlwaysTouchModDate = false;

merge(config.macros,{

	toggleTag: {

		createIfRequired: true,
		shortLabel: "[[%0]]",
		longLabel: "[[%0]] [[%1]]",

		handler: function(place,macroName,params,wikifier,paramString,tiddler) {
			var tiddlerTitle = tiddler ? tiddler.title : '';
			var tag   = (params[0] && params[0] != '.') ? params[0] : "checked";
			var title = (params[1] && params[1] != '.') ? params[1] : tiddlerTitle;
			var defaultLabel = (title == tiddlerTitle ? this.shortLabel : this.longLabel);
			var label = (params[2] && params[2] != '.') ? params[2] : defaultLabel;
			var touchMod = (params[3] && params[3] != '.') ? params[3] : "";
			label = (label == '-' ? '' : label); // dash means no label
			var theTiddler = (title == tiddlerTitle ? tiddler : store.getTiddler(title));
			var cb = createTiddlyCheckbox(place, label.format([tag,title]), theTiddler && theTiddler.isTagged(tag), function(e) {
				if (!store.tiddlerExists(title)) {
					if (config.macros.toggleTag.createIfRequired) {
						var content = store.getTiddlerText(title); // just in case it's a shadow
						store.saveTiddler(title,title,content?content:"",config.options.txtUserName,new Date(),null);
					}
					else 
						return false;
				}
				if ((touchMod != "" || config.toggleTagAlwaysTouchModDate) && theTiddler)
						theTiddler.modified = new Date();
				store.setTiddlerTag(title,this.checked,tag);
				return true;
			});
		}
	}
});

//}}}

Back to [[Humans|Human]]

The Traladarans, descendants of the native Traldar tribe of legend, tend to be fairly small (men average 5 feet, 9 inches, women 5 feet, 3 inches) and light of build. Their complexions are fair, their eyes brown and their hair dark (deep brown to black).
!!!Attitudes
Traladarans are thought very superstitious by their Thyatian neighbors&#8212;if you can call superstition when it's based on truth. They believe in good-luck charms, curses, evil eyes, omens, and portents (palmistry, the reading of tea leaves or sheep entrails, interpretations of natural phenomena&#8212;if it's a strange event, the Traladarans consider it an omen).

Literacy is common in larger cities; most Traladarans speak and write both their native tongue and Thyatian. Outside the larger towns, education is not widely-spread. In the more rural communities, most villagers are illiterate, although often a village cleric will be lettered (PCs, being an exceptional bunch, don't have to worry about this; it's the player's choice whether or not to have a literate character).

For the most part, Traladarans don't care much for Thyatians. They see the Thyatians as the latest wave of bad luck which keeps Traladarans from returning to their Golden Age. Since many of the original Thyatian arrivals were rotten land-grabbers, many of the Traladarans view all Thyatians as being the same. (//Needless to say, if you don't wish for your own character to feel this way, he doesn't have to.//)

Though the majority of the population of Karameikos is Traladaran, the court language is Thyatian. Thyatian is the language of official documents and trade and is basically the "Common Tongue" of Karameikos. Most Traladarans under the age of 30 speak Thyatian, usually with a distinct accent which marks their Traladaran origins.
!!!Dress
The Traladaran man in common dress wears close-fitting trousers and a loose tunicthat laces up the front (starting at mid-chest). He prefers a broad belt or colorful sash, and if he has the money, boots (often with large cuffs). He may wear a scarf around his neck or brow. If he wears his hair long, he often ties it back in a ponytail. He may wear a belt pouch or tuck his pouches in his sash. Traladaran men go clean shaven or, if bearded, keep facial hair closely trimmed. Traladarans tend to wear a lot of jewelry. Men favor finger rings, gaudy brooches for cloaks, necklaces, and occasionally earrings.

The Traladaran woman in common dress wears a brightly colored (sometimes motley skirt to the knee or calf and a loose pullover blouse with a rounded bodice. Sandals, soft, light boots, or bare feet are all appropriate to this costume. Traladaran women tend to wear their hair long, either loose or tied back into a tail. They favor finger rings, large earrings, bracelets, anklets, and armlets in clashing profusion.

Traladarans of both sexes like bright colors in abundance, when they can afford them. For example, a Traladaran man might don black boots, striking yellow trousers, a glaring red sash at his waist (matching the scarf around his neck), a white tunic, and a big winter cloak in gaudy blue.

Both Traladarans and Thyatians wear cloaks in cold weather; hip-length cloaks are common in milder winter weather, and when it gets really cold Traladarans with money wrap themselves in full-length cloaks with hoods.
!!![[The Shearing Ceremony]]
Native Traladarans have a custom which is an important part of the Karameikan national character: [[the Shearing Ceremony|The Shearing Ceremony]].
!!!Names
Traladarans have names with a strong Eastern- and Central- European flavor.

//Male Names:// Boris, Dmitri, Fyodor, Grygory, Ilya, Ivan, Mikhail, Pyotr, Sergei, Stephan, Yakov, Yuri.

//Female Names:// Anya, Darya, Ecatrina, Ilyana, Irena, Katarina, Kuzma, Magda, Misha, Petra, Sula, Zandra.

Family names can be created by adding one of a number of suffixes to given names. Such suffixes include "-os," "-ov," "-ev," "-nov," "-evich," "-escu," etc. Example: Ivan becomes Ivanov, Dmitri becomes Dmitros.
!!!Game Crunch
*''Bonus Edge:'' Humans start play with one free Edge of their choice. The character must still meet the requirements of the Edge as usual.
*''Languages'' //(Starting No. of Languages: Smarts/2)//'':'' Traladarans speak [[Thyatian (the Common Tongue)]] and [[Traladaran|Traladaran Language]]. They may fill additional language slots from [[Languages]].
Back to [[Humans|Human]]
This is the main language spoken by the natives of Traladara (Karameikos).
/***
Contains the stuff you need to use Tiddlyspot
Note you must also have UploadPlugin installed
***/
//{{{

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

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

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

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

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

'WelcomeToTiddlyspot':[
 "This document is a ~TiddlyWiki from tiddlyspot.com.  A ~TiddlyWiki is an electronic notebook that is great for managing todo lists, personal information, and all sorts of things.",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //What now?// &nbsp;&nbsp;@@ Before you can save any changes, you need to enter your password in the form below.  Then configure privacy and other site settings at your [[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]] (your control panel username is //" + config.tiddlyspotSiteId + "//).",
 "<<tiddler TspotControls>>",
 "See also GettingStarted.",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Working online// &nbsp;&nbsp;@@ You can edit this ~TiddlyWiki right now, and save your changes using the \"save to web\" button in the column on the right.",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Working offline// &nbsp;&nbsp;@@ A fully functioning copy of this ~TiddlyWiki can be saved onto your hard drive or USB stick.  You can make changes and save them locally without being connected to the Internet.  When you're ready to sync up again, just click \"upload\" and your ~TiddlyWiki will be saved back to tiddlyspot.com.",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Help!// &nbsp;&nbsp;@@ Find out more about ~TiddlyWiki at [[TiddlyWiki.com|http://tiddlywiki.com]].  Also visit [[TiddlyWiki.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"),

'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"),

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

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

});
//}}}
| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |
| 10/04/2009 07:28:12 | LeonardAnthony | [[/|http://swexmystara.tiddlyspot.com/]] | [[store.cgi|http://swexmystara.tiddlyspot.com/store.cgi]] | . | [[index.html | http://swexmystara.tiddlyspot.com/index.html]] | . |
| 10/04/2009 07:42:13 | LeonardAnthony | [[index.html|http://swexmystara.tiddlyspot.com/index.html]] | [[store.cgi|http://swexmystara.tiddlyspot.com/store.cgi]] | . | [[index.html | http://swexmystara.tiddlyspot.com/index.html]] | . |
| 16/10/2009 21:20:01 | LeonardAnthony | [[/|http://swexmystara.tiddlyspot.com/]] | [[store.cgi|http://swexmystara.tiddlyspot.com/store.cgi]] | . | [[index.html | http://swexmystara.tiddlyspot.com/index.html]] | . |
| 21/10/2009 07:34:07 | LeonardAnthony | [[/|http://swexmystara.tiddlyspot.com/]] | [[store.cgi|http://swexmystara.tiddlyspot.com/store.cgi]] | . | [[index.html | http://swexmystara.tiddlyspot.com/index.html]] | . | failed |
| 21/10/2009 07:39:43 | LeonardAnthony | [[/|http://swexmystara.tiddlyspot.com/]] | [[store.cgi|http://swexmystara.tiddlyspot.com/store.cgi]] | . | [[index.html | http://swexmystara.tiddlyspot.com/index.html]] | . |
| 26/11/2009 07:25:40 | LeonardAnthony | [[/|http://swexmystara.tiddlyspot.com/]] | [[store.cgi|http://swexmystara.tiddlyspot.com/store.cgi]] | . | [[index.html | http://swexmystara.tiddlyspot.com/index.html]] | . |
| 26/11/2009 07:44:31 | LeonardAnthony | [[index.html|http://swexmystara.tiddlyspot.com/index.html]] | [[store.cgi|http://swexmystara.tiddlyspot.com/store.cgi]] | . | [[index.html | http://swexmystara.tiddlyspot.com/index.html]] | . | ok |
| 26/11/2009 09:33:21 | LeonardAnthony | [[index.html|http://swexmystara.tiddlyspot.com/index.html]] | [[store.cgi|http://swexmystara.tiddlyspot.com/store.cgi]] | . | [[index.html | http://swexmystara.tiddlyspot.com/index.html]] | . | ok |
| 26/11/2009 09:40:14 | LeonardAnthony | [[index.html|http://swexmystara.tiddlyspot.com/index.html]] | [[store.cgi|http://swexmystara.tiddlyspot.com/store.cgi]] | . | [[index.html | http://swexmystara.tiddlyspot.com/index.html]] | . |
| 26/11/2009 09:57:51 | LeonardAnthony | [[index.html|http://swexmystara.tiddlyspot.com/index.html]] | [[store.cgi|http://swexmystara.tiddlyspot.com/store.cgi]] | . | [[index.html | http://swexmystara.tiddlyspot.com/index.html]] | . |
/***
|''Name:''|PasswordOptionPlugin|
|''Description:''|Extends TiddlyWiki options with non encrypted password option.|
|''Version:''|1.0.2|
|''Date:''|Apr 19, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#PasswordOptionPlugin|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0 (Beta 5)|
***/
//{{{
version.extensions.PasswordOptionPlugin = {
	major: 1, minor: 0, revision: 2, 
	date: new Date("Apr 19, 2007"),
	source: 'http://tiddlywiki.bidix.info/#PasswordOptionPlugin',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	license: '[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D]]',
	coreVersion: '2.2.0 (Beta 5)'
};

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

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

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

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

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

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

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

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

//
// Environment
//

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

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

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

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

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

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

//
// uploadOptions Macro
//

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

//
// upload functions
//

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

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

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

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

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

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

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

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

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

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

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

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

//
// Utilities
// 

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

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

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

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

//
// Initializations
//

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

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

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

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


/* don't want this for tiddlyspot sites

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

*/


//}}}


This is the same as Wealthy/Titled, except that the family is larger and more important. The head of the clan will be a Baron or a General in the Duke's service. For instance, the character might belong to the Kelvin clan of Kelvin or the Vorloi clan of Specularum and Vorloi village.
This is the same as Wealthy/Untitled, except that the family is very wealthy - for instance, the family is in charge of an important shipping enterprise or of an important community. The character might, for instance, belong to the Torenescu family of Specularum, a very powerful but untitled clan.
The same as Wealthy/Untitled, except the head of the family has a title issued by Duke Stefan or other important figures. He will either bear the title Lord/Lady or Patriarch/Matriarch. A Lord will be the owner of a large tract of land and leader of the communities thereon, or will be a court lord who performs tasks for Duke Stefan. A Patriarch will be the head of a church or an itinerant (traveling) cleric of great importance within the Church.
The family is wealthy. Its members do not suffer from want. It is likely to own the property it lives on and other properties besides, and is likely to employ servants. It makes a good living, usually from trade or agriculture or from the earnings of one highly-paid professional in the family. The PC's starting money represents the approximate amount the family gives to every youth leaving for the Shearing, and does not constitute much of a dent in the monthly earnings. The family is hoping that the character will prove to be a worthy defender of the family honor during the years he spends on his own. Most family members have substantial quantities of good-quality clothing and personal effects, and can afford weapons and armor of choice.
@@font-weight:bold;font-size:1.3em;color:#444; //Savaged!// &nbsp;&nbsp;@@ Here's my conversion of the Known World of Mystara to Savage Worlds. Currenty, most of the content herein are character creation guidelines, with a few bits of lore mostly centered on the Grand Duchy of Karameikos. Everything is (hopefully) organized into logical sections, which may be accessed along the top menu.

@@font-weight:bold;font-size:1.3em;color:#444; //Characters// &nbsp;&nbsp;@@ Steps to create a character may be found under [[Character Creation]]. There's also a section featuring some "classic" [[Archetypes]] too!

@@font-weight:bold;font-size:1.3em;color:#444; //Races// &nbsp;&nbsp;@@ Details on available Player Character races are under [[Races]], oddly enough.

@@font-weight:bold;font-size:1.3em;color:#444; //Skills// &nbsp;&nbsp;@@ The [[Master Skill List]] gives you the full list (and capsule descriptions) of the Savage Worlds skills.

@@font-weight:bold;font-size:1.3em;color:#444; //Edges & Hindrances// &nbsp;&nbsp;@@ A table listing details of Savage Worlds EX Edges & Hindrances, as well as new ones suitable for a fantasy game, may be found under [[Edges Summary|Edges]] and [[Hindrances Summary|Hindrances]], respectively.

@@font-weight:bold;font-size:1.3em;color:#444; //Gear// &nbsp;&nbsp;@@ Weapons, Armor and Adventuring Gear are all under [[Gear]].

@@font-weight:bold;font-size:1.3em;color:#444; //Powers// &nbsp;&nbsp;@@ Whether you're a magic-user wielding arcane magics or a cleric channeling the might of his faith, [[Powers]] will tell you everything you need to know about Arcane Backgrounds.

@@font-weight:bold;font-size:1.3em;color:#444; //Lore// &nbsp;&nbsp;@@ [[Lore]] offers some details on the campaign setting, mostly info on Karameikos, for now.

@@font-weight:bold;font-size:1.3em;color:#444; //Extras// &nbsp;&nbsp;@@ [[Rules|Setting Rules]] feature some jumbled notes which would later be organized into sections.

@@font-weight:bold;font-size:1.3em;color:#444; //Wanna Join?// &nbsp;&nbsp;@@ Incidentally, we have player slots open if you are interested enough. Familiarity with either Savage Worlds or Mystara is not required as most of what you'll need to start as a player can be accessed from here. We play online, on [[rpol.net|http://www.rpol.net]]. Check us out there or feel free to email me at: lap_arcilla--(at)--yahoo--(dot)--com

@@font-weight:bold;font-size:1.3em;color:#444; //Enjoy :)// &nbsp;&nbsp;@@ Thanks and enjoy!
The national language of the Emirates of Ylaruam.