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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

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

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Also see [[AdvancedOptions]]
:Touch attack that causes 1d6-2 damage. Each level of mana burn raises the damage by +1.

;Healing Hand
:Heals 1d6 HP. The caster has to touch the person he wants to heal. Each level of mana burn heals an additional hitpoint.

;Magic light
:Caster creates a magic light on the tip of his staff or other weapon, that illuminates a 10 yards radius much like a torch. Mana burn can be used to add one or more of the following effects:

* Ball of light (the caster forms the light into a ball that he can control with his thoughts)
* Colored light (the light shines in a color of the caster's choosing)
* Light beam (the light shines in a tight beam which reaches 15 yards)
* Flash (the effect lasts only one round but blinds everyone who looks unprotected into the flash for 1d6 rounds)

The magic light shines for 1 hour or until dispelled by the caster. It can also be sustained for 1 additional mana per hour.

;Sense Magic
:Caster can sense magic in a 3 yards radius. Each level of mana burn adds another yard to the radius.

:Caster may remotely move one item up to 1kg. Each mana burn adds another kilogram of weight that can be moved. Telekinesis lasts for 1 min and can be sustained for 1 additional mana per minute.
;Create food and water
:The spell creates one daily ration of food and water for one person.

;Healing Light
:Heals 1d6 HP. Each level of mana burn heals two additional hitpoints.

:Allows the caster to identify one magic property of an item. Each level of mana burn identifies one additional property.

:Caster may slowly float up and down for up to 3 minutes. The spell can be sustained for 1 mana per additional minute. Please note that this spell provides no horizontal propulsion, but a caster may other means to float horizontally.

;Lightning bolt
;Missile attack that causes 1d6+2 damage (+2 per level of mana burn)

;Magic Armor
:A magic bubble around the caster absorbs any damage until its HP are depleted or dispelled. The bubble has 4 hitpoint and each level of mana burn adds 4 more. Excess damage is not transferred.
;Chain Lightning
:As lightning bolt, but can also attack multiple enemies as long as they are within 5 yards of each other. The damage of the spell can be increased by mana burns. The maximum number of targets affected is 3.

;Walk on Air
:The caster may walk on air as if it were solid ground for up to 3 minutes. The spell can be sustained for 1 minute per additional mana spent.

:This missile spell causes 3d6 damage in a radius of three yards. Mana burn can be used to either improve the damage by +2 or the radius by 2

;Enchant weapon
:The caster puts a temporary enchantment on a weapon that then grants its wielder +2 on attack rolls and any damage caused. Lasts for one combat encounter. Mana burn can be used to add +1 to both the attack and damage bonuses. 

:Touch-attack that puts target into stasis. For the target time stands still, it cannot move, attack or be attacked. Last for a number of hours equal
to successes rolled. 

;Summon Earth Elemental
:Caster summons an Earth Elemental under his control. The Elemental is destroyed when its HP are depleted or when dispelled by the caster. 

;Magic step
:The caster can teleport up to 10 yards in any direction. Each mana burn can add 10 yards to the distance teleported. No line of sight is needed, but the caster must have a clear image of the place where he wants to teleport to in his mind.

;Use moongate
:The caster can open moongates at special places (like stone circles) that allow instant travel over long distances. Moongates start to close slowly after 2 minutes. They can not be held open nor can they can only be open once every 6 hours.

;Return to life
:Caster can revive one fallen character as long as the body is still intact and warm. Upon success the character also gets back 2 HP. Mana burn can be used to increase the healing by 2 hitpoints. 

;Summon Phantom Steed
:The caster calls a phantom steed that can act as a mount for 24 hours. The phantom steed needs no rest and can walk on water. This spell can not be sustained, the steed must be resummoned after the 24 hours.
!Skill list 

The table below lists all available skills for WR&M. Of course GMs are free to add more skills, if necessary.

|Athletics|Warrior|Training in swimming, running and jumping.|
|Axes|Warrior|Training with axes and polearms|
|Blunt Weapons|Warrior|Training in all blunt weapons incl. maces and staves.|
|Riding|Warrior|Training in riding on horses and other common mounts.|
|Spears|Warrior|Training with spears and lances.|
|Swords|Warrior|Training with all kinds of swords, including two-handed ones.|
|Unarmed|Warrior|Training with unarmed fighting.|
|Acrobatics|Rogue|Training in activities like dancing, contortion, climbing, tightrope walking, tumbling.|
|Bows|Rogue|Skill for using bows and crossbows|
|Daggers|Rogue|Training with daggers and knives.|
|Firearms|Rogue|Training in the usage of exotic firearms.|
|Thievery|Rogue|Training in the roguish arts like picking locks and picking pockets.|
|Thrown Weapons|Rogue|Proficiency with  thrown weapons like shuriken.|
|Alchemy|Mage|Training in creating potions and salves.|
|Awareness|Mage|This skill is a measure of a characters awareness of his surroundings.|
|Herbalism|Mage|Knowledge of plants, herbs and their medical uses. Can be used to heal critically wounded characters.|
|Hermeticism|Mage|Skilled with arcane spells and rituals.|
|Lore|Mage|General knowledge.|
|Thaumaturgy|Mage|Proficiency with divine spells.|

!Talents list

The following table contains all talents available for characters in WR&M. GMs are free to add more if needed.

Armored caster
You may reduce the armor penalty by 2. May be taken more than once.
Blood mage
You may substitute mana with hitpoints when casting spells.
You have to select a cause. You get a +2 bonus on attack and damage rolls against enemies of that cause. May be taken more than once.
You can add your Mage attribute level to your magic attack damage once per combat
You are trained in a craft like blacksmithing, carpentry or bowmaking. May be taken more than once.
You may wield a weapon in your off-hand without penaly. Does not grant an extra attack.
You have a small animal like a cat or falcon as a pet that can do some simple tricks.
You are followed by a henchman, that carries your equipment and treasure around.
Your character is a trained hunter and may live off the land easily. When given enough time, he can provide enough food to feed a party of four.
You are a talented leader any may command troops.
Lucky devil
You may reroll any roll once per scene (or combat)
Massive attack
You can add your Warrior attribute level to your melee attack damage once per combat
Precise shot
You can add your Rogue attribute level to your ranged attack damage once per combat
You are trained in steering a boat or sailing ship and don't get any penalties for fighting on a sea vessel.
Sixth Sense
You  may roll the dice before any ambush etc., if you rolls 4+ you're not surprised and may act first.
Tough as nails
Every damage taken is reduced by 2.
!Non-human player characters
A common trope of the fantasy RPG genre are non-human player character, mainly Elves, Dwarves, Halflings and Gnomes. Some games even allow players to play a member of the more bestial races, like Orcs, Goblins or even more fantastic creatures. Although there are no Elves, Dwarves, Gnomes and Halflings in the campaign setting presented here in the book, they may be viable player options in other fantasy settings.

!Player races
At the beginning of character creation the player chooses the race of his character. He can choose from the following list, or the GM may create more races if he wishes.

    * Elf
      Elves are usually looking like slender, beautiful humans with slightly elongated limbs and pointed ears. Elves have less body hair than humans. Elves have an exceptional talent for magic. Elves live much longer than humans but mature about as fast.
      Racial talents: Exceptional Attribute (Mage), Sixth Sense*, Weak
    * Dwarf
      Dwarves are shorter and stockier than humans. Male dwarves usually sport thick and long beards. Dwarves are very strong and tough for their small size and are known for their fighting prowess. Dwarves live longer than humans but not as long as the Elves.
      Racial talents: Exceptional Attribute (Warrior), Craftsman* (craft of player's choice), No Talent for Magic
    * Halflings
      Halflings are even shorter than Dwarves and are sometimes even mistaken for human children. They usually live peaceful lives far away from the bustling towns of the humans. But if one of the members of that race goes on adventuring their exceptional talent for thievery shows.
      Racial talents: Exceptional Attribute (Rogue), Hunter*, Weak
    * Lizardmen
      Lizardmen are an intelligent species that evolved from lizards. Instead of their ancestors they are not cold-blooded anymore, but they still prefer hot and dry areas. They resemble a humanoid lizard with scales instead of skin which also doubles as armor. Lizardmen are known for there lack of strong emotions and their keen logic.
      Racial talents: Natural Armor (Defense 2), Tough as Nails*, Outcast
    * Goblins
      Goblins are the smallest of the greenskin races. They have a green skin, very long pointed ears and are about 1 yard tall. They have high voices and a mouth of razor-sharp teeth. Goblins seem to have a knack for salvaging and tinkering.
      Racial talents: Tinkerer, Lucky Devil*, Weak
    * Orcs
      Orcs are slightly larger than humans, green skinned and are exceptionally strong. They can be savage warriors but they have a strong sense of honor. They usually look down on the smaller races like Goblins and Halflings. Orcish adventurers are a rare sight to behold, but often they are accompanied by one of their tame black wolves.
      Racial talents: Berserker, Exceptional Attribute (Warrior), Outcast

*) See Appendix 1 for details

!Racial talents
A member of a non-human race gets a number of racial talents which help him to set apart from ordinary humans. Some of these talents are actually drawbacks meant to balance out the advantages that certain races get. GMs are encouraged to invent their own racial talents. The talents given in this chapter are meant as a source for inspiration. With the GMs approval players of other races may pick some of these talents as well.

This talent allows a character to go berserk during combat. This adds +2 to the Warrior attribute and all the damage caused. Temporarily the berserker ignores all damage effects. You still have to note down all the damage taken though, since the damage takes effect as soon as the berserk wears off. The Mage attribute is reduced to 0 during the duration of that effect and casting of magic is impossible. The character has to attack his nearest enemy only and is only allowed to fight in close quarters. When all the enemies are on the ground the berserker has to make an unmodified Easy (5) Mage check. If the check is successful, the effect ends and the character drop unconscious to the ground. If he has taken enough damage to be reduced to 0 or less HP he's dead or dying. If his HPs are still 1 or more, he's knocked out for 2d6 minutes before he awakes with a headache.
In the case the roll was unsuccessful he has to attack the nearest ally.  

Exceptional Attribute
This talent allows the player to roll two six-sided dice instead of one when making a check using the relevant attribute. The highest result counts.

Natural Armor
Natural armor usually is in the form of scales or thick fur that protects the character from damage. The Defense granted by natural armor works as long as no other armor is worn.

No Talent for Magic
A character with this talent has a hard time grasping the concepts of magic or has a natural resistance to channeling mana. When making a casting check, the character rolls two d6 and takes the lowest result. In addition to that mana costs are doubled.

A character with that talent has a knack for all things technical. He gets a +2 bonus on all checks related to repairing, dismantling or using technical equipment like mechanical traps, firearms, war golems, clockwork etc.

A character with this talent is more frail than the common man. He starts play with 3 + the Warrior Attribute and when levelling up he only gets 1d6-2 hitpoints (minimum is 1 hp though).

A character with this racial talent is considered an outcast in most societies. Every test related to social interaction with a member of a different race is modified by 3.

Dual Wielding

The talent Dual-wield already allows characters to wield two weapons at once, although it does not grant additional attacks. If the GM approves player may also attack with both weapons in one round if they take the talent Double Attack with has Dual-wield as a prerequisite. When using Double Attack the character gets an additional attack with his off-hand weapon. Please note that both weapons have to be of the same type in order to use this maneuver. Two melee weapons or two ranged weapons are fine (dragon pistols for example), but one ranged and one melee weapon can't be used in that way. Please note that you can't dual-wield two-handed weapons.

Mounted Combat and Vehicle Combat
Mounted combat and vehicle combat are basically handled much like combat between characters. The main difference are Maneuver checks. Fighting from horseback or out of a fast-moving vehicle like horse-drawn carriage can be a complicated and dangerous matter.

Whenever a character wants to perform a maneuver on a horse or on a moving vehicle he has to make a Maneuver check. When he's riding a horse (or similar) mount he makes a riding check with a DL decided by the GM everytime he wants to perform a maneuver. Just moving in a straight line is not considered a maneuver in itself as long as the rider/driver is not fighting. Here are some example for common DLs:

Maneuver                          DL
Walk (Horse)                     -
Canter (Horse)                   5
Gallop (Horse)                    9
Tight Turn                          7
Sudden Stop                      9
Jump over obstacle             7

When the maneuver check is successful the character can perfom combat actions like attacks, reloading his weapon or something similar. But if the check fails the character may fall from the horse or crash. In case the maneuver performed was riding/driving in a straight line, the character has to reduce speed immediately.

Ritual Magic
Especially spells of the higher circles are beyond the reach of most casters. For one the DLs are pretty high and the mana cost itself may pose a problem for beginner mages. But with GMs approval casters may choose to perform ritual magic.
The main difference between ritual magic and normal spell magic is that it takes a long time to perform. The following list gives the minimum casting times for ritual magic. Of course it doesn't usually make sense to use ritual magic for combat spells like Firebolt. The mana cost of the spell stays the same, and spell enhancement can be used, but the casting difficulty is reduced by 1 when the ritual is performed in the minimum time. If you take the double time, the DL is reduced by 2, and so on.

Circle                    Time            Max. Participants
1st circle                1 min           3
2nd circle                5 min          6
3rd circle                15 min          9
4th circle                1 hour          12

When more than one person performs the ritual they can pool their mana. If one or more participants have the Blood Mage talent they can use it to convert any participants HPs to Mana, too. This is often used in the form of ritual sacrifices where a Blood Mage performs a ritual and kills one of the (often involuntarily) participants to release his mana into the spell. The mana gained in such a way is doubled.

In this Bestiary you’ll find average stats for various non-player characters and common creatures. Please note that the Defense listed is always the unarmored Defense. Bonuses granted by armor or shields are listed in parenthesis. Optional : If you need non-human NPCs, like 
an Orcish Bandit, or an Elfish Mage, just add the racial talents listed in Appendix 2.

!Common NPCs

Apprentice Mage
Attributes: Warrior 2, Rogue 3, Mage 5
HP: 8, Mana: 10
Defense: 6
Skills: Alchemy, Blunt, Thaumaturgy
Talents: Familiar (Raven)
Spells: Frostburn, Healing Hand
Trappings: Mage robes, Staff, pouch with 2d6 silver pieces

Attributes: Warrior 5, Rogue 3, Mage 2 
HP: 11, Mana: 4
Defense: 10 (+2 for leather armor)
Skills: Axes, Bows, Riding
Talents: none
Trappings: Leather clothing, wide-brimmed hat, axe, crossbow with 10 bolts.

Attributes: Warrior 2, Rogue 2, Mage 1 
HP: 8, Mana: 2
Defense: 6
Skills: none
Talents: none
Trappings: Simple clothes, knife, pouch with 1 silver piece

Attributes: Warrior 3, Rogue 5, Mage 2 
HP: 9, Mana: 4
Defense: 10
Skills: Daggers, Thievery, Thrown
Talents: Dual-wield
Trappings: Dark clothes, hooded cloak, dagger, 1d6 throwing stars

Journeyman Mage
Attributes: Warrior 3, Rogue 3, Mage 5
HP: 12, Mana: 10
Defense: 6
Skills: Alchemy, Blunt, Lore, Thaumaturgy
Talents: Familiar (Raven), Channeller
Spells: Frostburn, Healing Hand, Lightning Bolt
Trappings: Mage robes, Staff, pouch with 2d6 silver pieces

Attributes: Warrior 6, Rogue 2, Mage 3 
HP: 16, Mana: 6
Defense: 10 (+6 for light plate armor, +1 for small shield)
Skills: Lore, Polearms, Riding, Swords
Talents: Leadership, Henchman
Trappings: Light plate armor, sword, small shield, warhorse

Attributes: Warrior 3, Rogue 3, Mage 5
HP: 12, Mana: 10
Defense: 6
Skills: Awareness, Blunt, Lore
Talents: Champion (Imperial Faith), Henchman
Spells: Healing Hand, Create Food and Water
Trappings: Priest robes, Staff, holy symbol

Attributes: Warrior 5, Rogue 3, Mage 2 
HP: 10, Mana: 4
Defense: 10 (+3 for scale armor, +2 for large shield)
Skills: Athletics, Firearms, Swords
Talents: none
Trappings: Scale armor, large shield, sword, dragon rifle with 20 shots.

Town Guard
Attributes: Warrior 5, Rogue 3, Mage 2 
HP: 11, Mana: 4
Defense: 10 (+3 for scale armor)
Skills: Bows, Polearms, Swords
Talents: none
Trappings: Scale armor, halberd, sword, crossbow with 10 bolts, manacles


Animal have slightly different stat blocks from humans. Instead of skills, talents and trappings, the animal's various attacks are listed. Animals can attack with all their natural attacks if not noted otherwise. In some cases the exploding die rule for damage does not apply.

Attributes: Warrior 8, Rogue 4, Mage 0 
HP: 20, Mana: 0
Defense: 10 (+2 for thick fur)
Attacks: 2x paws (uses Warrior attribute) 1d6+4 damage, Bite (uses Warrior attribute) 2d6 

Bird of prey
Attributes: Warrior 2, Rogue 6, Mage 0 
HP: 4, Mana: 0
Defense: 9 (+3 while flying)
Attacks: Beak1 (uses Rogue attribute) 1d6/2 damage
Notes: These stats can also be used for ravens and other birds of comparable size

Cat, large
Attributes: Warrior 4, Rogue 8, Mage 0 
HP: 12, Mana: 0
Defense: 8
Attacks: 2x Claws (uses Rogue attribute) 1d6+2 damage, Bite (uses Warrior attribute) 1d6+3 

Cat, small
Attributes: Warrior 2, Rogue 8, Mage 0 
HP: 5, Mana: 0
Defense: 8
Attacks: 2x Claws1 (uses Rogue attribute) 1d6/2 damage

Attributes: Warrior 4, Rogue 2, Mage 0 
HP: 6, Mana: 0
Defense: 7
Attacks: Bite1 (uses Warrior attribute) 1d6 damage
Notes: can be trained as a mount for small races

Fire beetle
Attributes: Warrior 4, Rogue 4, Mage 0 
HP: 8, Mana: 0
Defense: 8 (+3 for chitin armor)
Attacks: Fire spray (uses Rogue attribute) 1d6 damage, range 10 yards

Giant beetle
Attributes: Warrior 4, Rogue 4, Mage 0 
HP: 14, Mana: 0
Defense: 8 (+3 for chitin armor)
Attacks: Bite 1d6+2 damage

Giant leech
Attributes: Warrior 3, Rogue 6, Mage 0 
HP: 15, Mana: 0
Defense: 8
Attacks: Venomous bite 
(uses Rogue attribute) 
1d6-2 damage
 (mild poison)

Giant rat
Attributes: Warrior 4, Rogue 2, Mage 0 
HP: 12, Mana: 0
Defense: 7
Attacks: Bite (uses Warrior attribute) 1d6 damage

Giant spider
Attributes: Warrior 6, Rogue 6, Mage 0 
HP: 24, Mana: 0
Defense: 8 (+4 for chitin armor)
Attacks: Venomous bite 
 (uses Rogue attribute) 
1d6+2 damage (mild poison)
Notes: can be trained as a mount for small races

Attributes: Warrior 5, Rogue 5, Mage 0 
HP: 12, Mana: 0
Defense: 9
Attacks: Bite1 (uses Warrior attribute) 1d6 damage
Notes: Warhorses have 1d6+4 additional hitpoints and have one trample attack (which uses Warrior attribute) that causes 2d6 damage

Venomous snake
Attributes: Warrior 2, Rogue 6, Mage 0 
HP: 6, Mana: 0
Defense: 8
Attacks: venomous bite1 (uses Rogue at
tribute) 1d6/2 damage + poison (mild or lethal, see Chapter 6)

Attributes: Warrior 4, Rogue 4, Mage 0 
HP: 8, Mana: 0
Defense: 8
Attacks: Bite (uses Warrior attribute) 1d6 damage

Attributes: Warrior 6, Rogue 6, Mage 0 
HP: 25, Mana: 0
Defense: 10 (+2 for thick fur)
Attacks: Bite (uses Warrior attribute) 1d6+3 damage
Notes: can be trained as a mount

1) The exploding die rule does not apply

!Magical creatures and the undead

Attributes: Warrior 8, Rogue 6, Mage 2 
HP: 35, Mana: 4
Defense: 11 (+4 for scales)
Attacks: Bite (uses Warrior attribute) 1d6+3 damage, 2x claws (use Warrior attribute) 1d6+2 damage
Notes: can be trained as a mount

Fire Drake
Attributes: Warrior 8, Rogue 6, Mage 2 
HP: 38, Mana: 4
Defense: 11 (+4 for scales)
Attacks: Bite (uses Warrior attribute) 1d6+1 damage, 2x claws (use Warrior attribute) 1d6 damage, flame breath
(uses Rogue attribute) 2d6
Notes: can be trained as a mount

Elemental, Earth
Attributes: Warrior 10, Rogue 2, Mage 0 
HP: 40, Mana: 0
Defense: 10
Attacks: 2x stone fist (uses Warrior attribute) 2d6+2

Golem, war
Attributes: Warrior 10, Rogue 0, Mage 3 
HP: 20, Mana: 0
Defense: 9 (+5 armor plating)
Attacks: steel fist (uses Warrior attribute) 2d6 or can use normal weapons
Notes: The war golem has all the weapon skills he needs to use the weapons he's equipped with.

Golem, work
Attributes: Warrior 10, Rogue 0, Mage 2 
HP: 20, Mana: 0
Defense: 9 (+2 light armor plating)
Attacks: steel fist (uses Warrior attribute) 2d6

Attributes: Warrior 3, Rogue 3, Mage 0 
HP: 9, Mana: 0
Defense: 7 (+1 for rusted armor)
Skeleton Warrior - Trappings: Rusted armor, broken shield, sword
Skeleton Archer - Trappings: Rusted armor, bow with 10 arrows
Notes: Skeletons ignore half damage from all but blunt weapons and axes.

Attributes: Warrior 6, Rogue 0, Mage 0 
HP: 12, Mana: 0
Defense: 7
!Character Creation Summary
# Distribute 10 attribute levels among the three attributes Warrior, Rogue, and Mage. No attribute may be higher than six.
# Pick three skills
# Pick one talent
# (Optional : Choose a non-human race for your character and write down the racial talents on your character sheet)
# Calculate HP, Fate, Mana and Defense 
## HP = 6 + Warrior 
## Fate = 1x Rogue 
## Mana = 2x Mage 
## Defense = (Warrior + Rogue)/2 + 4
# Purchase starting equipment for 250 SP.
# Fill out character sheet.
|!Armor|!Defense|!Armor Penalty|!Cost (SP)|
|Padded cloth|1|0|8|
|Light plate|6|5|90|
|Heavy plate|7|5|120|
|Golem armor|8|*|*|
|Small shield|+1|+2|5|
|Large shield|+2|+4|12|
|Tower shield|+3|+6|15|

The stats given above are for full suits of armor.

Light and heavy plate - plate armor must be fitted to the wearer. Ill-fitted plate armor reduces all rolls by 2.

Golem armor - golem armor is a bulky armor created by the armor smiths of a bygone era. It not only is incredibly tough, but also grants a bonus of 1d6 to all weapon damage. Casting is impossible when using golem armor. There are rumors of special golem armor that not even allow spell casting but also are a magical implement in themselves. Golem armor is not available for sale.
!Warrior, Rogue & Mage
The core rulebook contains the complete game rules, including character creation, combat, magic, equipment and monsters, as well as a complete fantasy setting, the Fallen Imperium of Vaneria.

!From the Imperial Forges
From the Imperial Forges contains over 20 unique magical items for your WR&M game. These items have been designed by ~ENnie-nominated designer Colin Chapman (http://radioactiveapedesigns.com) known for his post-apocalyptive roleplaying game Atomic Highway!

!From the Imperial Forges 2 
From the Imperial Forges 2 contains 19 unique magical items for your WR&M game created by Colin Chapman.

!Discovered Lore
Discovered Lore contains six new playable races for your Warrior, Rogue & Mage campaign. Smash your foes as a hulking Mountain Giant or explore the depths of the oceans as a member of the ancient merfolk. In addition to that this book provides you with new magic items and a set of sample characters that can be used as starting player characters or as ~NPCs.

!The Art of Combat
The Art of Combat contains alternate armor rules, new talents and rules for dodging and parrying attacks which help you to make combats in WR&M even more exciting without adding too much complexity.

!From the Imperial Library
From The Imperial Library contains several variant magic systems, new and revised spells and talents. It’s the perfect supplement for players and ~GMs who want to turn WR&M’s magic to eleven!
Each player has to create a character in order to play. The player character is his or her representation in the game world. The characters played by the game master are called non-player characters or ~NPCs. All characters in WR&M are described by their three basic attributes, skills, talents and various other values, which will be explained in detail in this chapter.

WR&M uses three basic attributes to describe a character: Warrior, Rogue and Mage. Each attribute is usually ranked from 0 to 6, but monsters and veteran characters may have higher values. If an attribute is ranked at 0 you can't use any related skills. And in the case of the Mage attribute you can't cast even the simplest spell.

A character with a high rank in Warrior is the born fighter: strong, tough,fearless. Characters with a low rank in this attribute lack these abilities. Someone with a high Rogue attribute is witty, stealthy and quick with his feet and mind. A highly ranked Mage attribute is a sign of intelligence, strength of will and mental discipline.

Each player character starts with 10 attribute levels that may be freely distributed between the three attributes. No attribute may start higher than 6 though. While highly specialized characters are possible, a well-rounded character with a few levels in each attribute probably works best for new players.

Each character is also further detailed by a couple of skills. Skills are abilities a character has learned over the years like Riding or Thievery. Skills are not ranked like attributes though. You either have learned a skill, or you don't. Each character starts with three skills of the players choice. Please note that you can't choose a skill if the relevant attribute is ranked at level 0!

Talents give player characters special abilities that set them apart from mere commoners. You don't have to roll the dice in order to use talents. As soon as a character has acquired a new talent he gets access to a special ability. Some talents may be taken several times.
!Hitpoints, Fate and Mana

Hitpoints are a measure of how many hits a character may sustain before going down. A character with 0 HP is considered dead or dying. Fate can be used to save one's life in certain situations, or take over some narrative control from the GM. Mana is the raw magical energy that is used by Mages to cast magic spells. Characters can't perform any magic when their Mana is depleted.

Each character starts with Hipoints equal to 6 plus his Warrior attribute, Fate equal to his Rogue attribute and Mana equal to two times his Mage attribute. You start with at least 1 Fate if your Rogue attribute is at level 0, though.
!Armor and Defense

Each character has a Defense stat that is equal to 4 plus half the sum of his Warrior and Rogue attributes rounded down. Worn armor and shields grants a bonus to Defense but raise the Mana cost of spells by their Armor Penalty (AP).
!Basic Task Resolution

Every time a character wants to perform an action which has a chance of failing, the GM may ask the player to roll the dice to determine the outcome of said action. The basic task resolution method is the attribute check. The GM picks the appropriate attribute and decides how difficult the task at hand is. Then the player rolls one six-sided die (also called d6) and adds the relevant attribute's level to the roll's result. If the character knows any skills that might help in that situation, he may add 2 to his result. The final result is then compared to the difficulty level set by the GM. If the result is equal or higher the task was successful. If not, the task failed.

Optional: If a character knows more than one skill that could be used in a given situation, the GM may allow the player to add another 2 to the result.
!Exploding die

Whenever a player rolls a 6, the die may "explode". This means, the player may roll again and add the second result. If the second result is another 6, you roll again. Only damage rolls and attribute checks where the character owns an appropriate skill are subject to this rule.

!Automatic success

When the risk of failing is extremely low, or the task is only of minor importance to the story, and the character has the appropriate skill, the GM may decide that no roll is necessary.

!Unopposed check

If the task at hand is not actively opposed, the player has to beat a difficulty level determined by the GM.
* Difficulty (DL)
* Easy (5)
* Routine (7)
* Challenging  (9)
* Hard (11)
* Extreme (13)

!Opposed check

When two characters are in direct competition, the opposed check method is used. The DL of the active character is determined by a roll made by the passive character. 

Example: A thief wants to sneak past a guard unnoticed. The guard then rolls a d6 and adds his Mage attribute and the +2 bonus if he owns the Awareness skill to the result. This result then is the DL for the thief's attribute check.

Optional: Instead of rolling, you can just add 3 to the relevant attribute (and the skill bonus) to get the DL.

!Circumstantial modifiers

There are circumstances which can make tasks harder or easier to perform than usual: The lack of tools makes it harder to craft something, a master crafted weapon grants a bonus to an attack, or bad lighting conditions make it easier to hide in the shadows. The GM may add circumstantial modifiers to any DL if appropriate.

!Using Fate

A character can spend one of his Fate points to do the following (GM approval needed): 

* Ignore an attack that would have killed the character
* Change a minor detail in the game world. For example: your character knows the NPC you’ve just met. Or there is a shop in the town you just entered with the equipment you need.
* Reroll a single die roll or add +2 to a single check 

Fate doesn't regenerate automatically, so players are advised not to waste their Fate. ~GMs are meant to grant players Fate for heroic actions, good role playing and certain goals their characters achieved.

Whenever combat occurs, player characters and non-player characters act in turns. At the start of combat, the sequence in which the two sides in the conflict act is determined. This is called initiative. In most cases common sense dictates the initiative. If unsure roll a die for each side. The side with the higher result acts first.

Optional: A character with the Awareness skill may add +2 to the initiative roll.
!Combat actions

Combat turns are pretty short, so characters can only perform a few actions. Running a short distance, drawing a weapon, attacking a foe, casting a spell are reasonable actions that can be performed during one turn.
!Attack roll

When a character tries to hit another character in close or ranged combat, his player has to roll the dice to determine if he has hit. Attack rolls work like any other attribute check but the DL is always the target's Defense stat plus any applicable modifiers. Attack rolls are subject to the "exploding die" rule if the character has the appropriate skill and that each additional success after the first adds +1 to the damage caused. Please refer to the Magic chapter for magic attacks.

Example: A thief wants to backstab a guard with a dagger. The skill list determines that when using a dagger the Rogue attribute applies. The thief knows this skill, so he may also add the +2 modifier to his attack roll.
!Damage and Healing
After having scored a hit, you determine the damage caused. Damage is determined by the weapon used. See the weapon list for details. Please note that damage rolls are always subject to the "exploding die" rule. The victims hitpoints are reduced by a number of points equal to the damage caused. If the hitpoints drop to 0, the character is dead or dying. A character's HP may never drop below 0.

Optional: Characters who were reduced to under half their maximum hitpoints are considered seriously wounded and get a -3 modifier on all checks.

A character heals hitpoints equal to his highest attribute per day of rest. Only light activities are allowed during that time. If a character takes part in a combat, chase or a similar activity he may only heal a single hitpoint that day. Characters with the Herbalism skill may use his abilities to speed up healing. When treated by such a character, you get +2 ~HPs per day of rest.
!Using Magic

Characters with a Mage attribute of 1 or higher have access to spells. Spells can be found or bought. These spells must first be transferred to a character's personal spell book before they can be used. To cast a spell from the book, the character has to make a roll versus the DL or the spell. If successful, his mana pool is reduced by the amount listed for the spell.

!Magic implement

A character who wants to focus on magic usually owns a magic implement. This may be a staff, gauntlet, ring, or a similar piece of equipment. Magic implements are used to store spells that the magic user can later cast without having to spend any mana from his personal pool. Magic implements have to be charged with mana before they can be used and that mana pool is then used to power spell cast from it. As long as it is powered it also grants a thaumaturgy bonus equal to its level. An implement can hold 10 mana per level of the item. Powering the implement is expensive though. For each mana stored in the implement, the caster has to spend two from his personal pool. Implements may be charged in multiple sessions.

A character can only store spells he knows in a magic implement. The stored spell remains in the implement until replaced. A magic implement can store spells up to its level. A level 3 implement may store one 3rd circle spell, but it may also be used to store one 2nd circle and one 1st circle spell or three 1st circle spells.

!Mana regeneration
A character gets back his full mana pool for a good night's sleep and receives mana equal to his Mage attribute for one hour of meditation. Magic potions may also regenerate mana.

!Casting Spells
In order to cast spells a character needs at least Mage level 1. The thaumaturgy skill is helpful, but not necessary, especially if the character wants to use only a few simple spells. The range of all spells is the line of sight if the spell description does not say otherwise.
Spells are divided into four circles. Spells of the 1st circle are the easiest and less powerful, while 4th circle spell are considerably more powerful and need more skill to be cast.

Circle         Mana cost         Difficulty
 1st               1                  5 
 2nd               2                  7
 3rd               4                  9
 4th               8                  13


A caster that wears armor needs to add the AP of the armor worn to the mana cost.

!Mana burning
A spell caster may choose to burn additional mana to improve the spell's effects. Each level of mana burn costs half the initial mana cost and raises the spells DL by one. The effects of the mana burn are listed with each spells description. Please note that you have to use mana from your personal pool for mana burning even if you cast a spell from an implement.

!Sustaining spells
Usually all spells have a certain duration or cause an instant effect. But there may be cases when a caster wants to sustain a spell over longer periods of time. If a spell can be sustained, it's listed in the spells description. In order to sustain a spell over longer period of time, the caster has to concentrate which penalizes all of his actions by a modifier of -1. The mana cost for sustaining the spell is listed with the spell's description. 

!Spell Lists

[[1st Circle Spells]]
[[2nd Circle Spells]]
[[3rd Circle Spells]]
[[4th Circle Spells]]

!Variant: Warrior, Rogue, & Scholar
<<tiddler [[Variant: Warrior, Rogue, & Scholar]]>> 
Each character starts with 200 silver pieces (SP) to purchase equipment. Every character can wield every weapon. Spellcasting characters may wear armor, but the armor penalty of the armor worn raises the mana cost of each spell cast.




[[Magic Items]]
The following section is for the Gamemaster only. If you are a player, please stop reading here.

!Running Warrior, Rogue & Mage
WR&M leaves a lot of room for interpretation in the rules. Not everything you can think of has been covered by the rules and in many cases GM fiat plays a major role. It shares this with a lot of early roleplaying games, which are now called "old school". But that aspect of the game allows it to be a perfect toolbox for players and ~GMs alike. If there's something missing from the game, you need for your campaign, just add it. If there's something that bothers you, change it or drop it completely. The possibilities are endless and the rules-lite nature of the game allows you to make the game your own without having to fear you break the whole game.

!Start slow but then go epic
Especially if you haven't run WR&M before, you should start things slow. Don't throw your players into an epic adventure at once but try to get a feel for the rules and the lethality of combat first. There's nothing more frustrating for your gamers than to have to face a total party kill in the first session.
But after you're more comfortable with the game you should turn things up a notch. WR&M is supposed to be epic fantasy. The setting included in the book hints at powerful artifacts, lost technologies and ruined cities. This is probably what the players expect when they sit down at the gaming table, so the GM should deliver.

!GM rulings instead of rules
In most cases it's much faster and better for the flow of the game if the GM makes rulings when there's a rule discussion. Nothing destroys the mood of any game more than a lengthy discussion about some rules and the interpretation of what is printed in the book. To avoid that, the GM always has the last word in these cases. If the issue at hand still bothers you after the game, just look it up and make up your mind. But during the game you should just decide something instead of making a fuss about it.

!Make it your own
I can't stress this enough: make WR&M your own. ~GMs and players are encouraged to bring their own ideas to the table. Add new lands, create new monster, change the rules, write up your own spells. Whatever suits your fancy, do it. A lot of creativity went into the production of the game, but it definitely shouldn't end there! This book contains several optional rules that you can use, but you can of course add your own house rules as well. And if you think there's something critical or just very cool missing from the game, let us know!

!Setting the mood with music
When it comes to setting the mood nothing is better than playing some epic music in the background. Some people prefer movie and computer game soundtracks, some people prefer heavy metal tunes. The important part is that you and your players are comfortable with the music and that it enhances the mood of the game. Playing music from a horror movie in the background is a great way to improve the immersion if you're running a horror adventure.

!Character advancement
Characters in WR&M don’t have levels or need to amass experience points to improve their abilities. The GM decides when he thinks the characters are ready to advance. Usually this happens at the end of a successful adventure. If you want to let the characters advance faster, the you can allow them to advance after each session. Whenever the GM allows the players to advance they may do the following:

* Raise one attribute by one.
* Add 1d6 to either HP or Mana
* Gain an additional skill
* Gain a talent ^^1

^^1 Talents should be harder to get than an additional skill or ~HPs. The GM should send the player character on a sidequest to find a trainer, get admission to a special group or learn an ancient ritual that unlocks that talent.

Optional: The GM can allow players to add 3 points of HP or Mana when they level up instead of rolling the dice.

!Non-combat hazards
<<tiddler [[Non-combat hazards]]>>
!The Fallen Imperium of Vaneria

WR&M can be played in almost any setting, but it was created with the fallen Imperium of Vaneria in mind. The Vanerian people had conquered the whole continent in ages past and had built the most glorious civilization in all human history. Technological and magical advancements allowed the Valerian citizens to live in peace and prosperity. Golems did most of the hard and dangerous work and war golems helped defend the borders. When the last Emperor, Aurelius III, died, his successors started a bloody civil war. Five hundred years later, not much of the glorious Imperium remains. A few warlords still claim the Imperial throne, but none of them have enough power to unite the warring city states. Most Imperial war golems are destroyed; those that remained were outlawed centuries ago.


The former capital of the Imperium was razed at the end of the war and is now overrun by the undead. No sane person dares to explore the ruins of old Tukrael. What wonders may still be hidden among the ruins?

A city state in the foothills of the Dragontooth Mountains in northen Vaneria. It is the most civilized nation among the successors of the Imperium. The Vaikusians have a strong caste system, where the Noble and Warrior castes hold power while the lower castes provide prosperity. The Vaikusian Falcon Knights are one of the few military units that still carry dragon pistols as sidearms.

A city located in the Central Desert. It was an unimportant Imperial outpost before the war, but has become the most important trade city on the continent. Caravans from every city state trade with
each other in this beautiful city. None but the Scorpion Guard are allowed to bear arms in Joakalavi.

Traevar is a relatively small city at the shores of Lake Anytes. It is known for the Dark Spire, the last remaining magical academy from Imperial times.

The kingdom of Cemimus is the greatest rival of Vaikus. Ruled by a direct descendent of emperor Aurelius III, Cemimus is one of the nations that claim the Imperial throne. The nation is known for its ruthless mercenary armies and the corruption among its officials. Cemimus is currently waging a war against its neighbor, Bekel.

Bekel is a city state to the south of Cemimus and close to the former Imperial capital of Tukrael. It is known for the large ore deposits that are mined directly under the city. A large portion of the miners never leave the underground tunnels. Bekelan engineers and blacksmiths are among the best of the world.

Chaetril is one of the smaller city states. It is located in the grasslands to the west of Vaikus. Chaetril exports livestock and horses into all other city states. Its horses are only second to Imperial Warhorses. It is also the seat of the Patriarch of the Imperial Faith, the major religion of the continent. The cathedral of Chaetril is the home of the Paladins, an elite unit of church knights.

!Some Notes
The information presented here is not a complete campaign setting. It should form the seed of a campaign of your own. Who rules the city of Bekel? What is the Imperial Faith like? And what’s going on in Tukrael? Fill in the blanks. Don’t like the idea that the Falcon Knights carry pistols as sidearms? Change it. You want to have invading barbarian hordes from the east or even orcs? Put them in. It’s your sandbox; feel free to play in it.
[[Chapter 1: Characters]]
[[Chapter 2: Rules Mechanics]]
[[Chapter 3: Combat]]
[[Chapter 4: Magic]]  
[[Chapter 5: Equipment]] 
[[Chapter 6: Game Mastering]]
[[Chapter 7: The World]]
[[Appendix 1: Skills & Talents]]
[[Appendix 2: Optional Rules]]
[[Appendix 3: Bestiary]]
[[Appendix 4: Tables & Character Sheet]]
!Warrior, Rogue & Mage
;Game Design and Layout
:Michael Wolf

: Andrew Modro

;Cover and Interior Artwork
: © The Forge Studios, Pawel Dobosz and Maciej Zagorski. Used with permission.

;Playtesting and Advice
: Manuel Austermühle, Jason Beardsley, Sandra Friedrich, David Lucas Hinojosa, William Hopkins, Verena Knorpp, Rachael  Mansbach,  Andrew  Modro,  Greg Rawson, Adam Weber and Gloria Weber

;Special Thanks to
: Michael  Garcia,  William Hopkins,  Verena  Knorpp,  Rob  Lang,  Joshua Macy, Roberto Micheri, Andrew Modro, Zak Sawyer, Robin Stacey, Adam John Weber and the regulars of the #Stargazersworld IRC channel on Sorcery.net!
[[What is Warrior, Rogue & Mage?]]
ITEM                             SP
Adventurer's Kit                  5
Backpack                          4
Cask of beer                      6 
Cask of wine                      9
Donkey or Mule                   25
Iron Rations (for 1 week)        14
Lantern                           5
Lock pick                         2
Noble’s clothing                 12
Normal clothing                   3
Ox cart                           7
Packhorse                        30
Pickaxe                           3
Pole 3 yards                      1
Rations (for 1 week)              7
Riding horse                     75
Rope (10 yards)                   2
Saddle bags, saddle and bridle	  8
Torch                             1
Travel clothing                   5
Warhorse                        150
1st circle spell scroll          25
2nd circle spell scroll          50
3rd circle spell scroll          75
4th circle spell scroll         100
Spellbook                        20
Magic implement (1st circle)     35
Magic implement (2nd circle)     70
Magic implement (3rd circle)    140
Magic implement (4th circle)    250

Adventurer’s Kit – This kit contains flint and tinder, a water flask, a blanket, a bed roll and a small tent.

Iron Rations – These rations don’t spoil over time.

Lantern – lanterns produce a brighter light than torches and are not as easily blown out.

Magic Implement – A magic implement can take many forms (gauntlet, amulet, wand, etc.). For more details on magic implements see Chapter 4.

Torch – a lit or un-lit torch can be used as an improvised weapon. Use the Blunt skill. Damage is 1d6-2 for unlit and 1d6-1 for lit torches. Flammable enemies may be set ablaze.
; Adam Weber, Adam J. Weber Games
:When Michael asked me to write this foreword, I agreed eagerly. I hope to have the chance to meet Mr. Wolf in person someday (or better yet have the honor of playing this game with him).
:I am not the ravening fan boy type, but I fell for Warrior,  Rogue,  and  Mage  at  first  sight. There is something electric about this game, a feeling of limitless  potential. The  system  is  intuitive,  flexible,  and  fun. There  is  an  emphasis  on  character  over  numbers  that  is  created  by  the  simplicity and  openness  of  these  rules  that  I  find  refreshing. 
:When a game is made every designer hopes that people will like it, justifying all of their time and hard  work. Also,  designers  have  a  vision  that hopefully speaks through their work. I am proud and honored to have been a small part of Michael’s vision. 

;Rob Lang, The Free RPG Blog and 1KM1KT
:There are few natural phenomena that have more energy and passion than Michael Wolf. After physicists have given up looking for the Higgs Boson, they are going to break him apart to discover his source of power. Warrior Rogue and Mage is typical of Michael’s roleplaying game output: a complete game that wraps the familiar with paradigm ignoring features.
:There  are  no  classes,  just  your  desire  to  create  a character  with  distinct  abilities.  Balance  the  three characteristics of Warrior, Rogue and Mage to create endless combinations of character class. At its core, the system is light and complexity is brought about  by  your  choices  as  a  player,  not  by  pages of  rules.  Combine  Talents,  skills  and  attributes  to achieve epic successes.
:In  terms  of  layout  and  style,  Michael  has  attached  ‘the  bar’  (to  which  we  free  RPG  authors aspire) to a rocket bound for Jupiter. The graphics are both delighful and appropriate throughout and when  printed,  the  finished  book  feels  like  it  was born from the world of Vaneria described within. 
:I  would  like  to  be  the  first  to  thank  Michael  for sharing this superb work - a game which you’ll be left agog that it does not bear a price tag. It bears its Creative Commons ~BY-NC-SA license proudly. If the physicists  ever  manage  to  split  the  Michael,  they will be blinded by philanthropic desire to get you, me and a forum full of trolls gaming.

; Michael Wolf, Author of WR&M
:In the past, people have asked me why I bother to write games. There a already hundreds of roleplaying games out there and since I don’t intend to sell them and make some money, why bother? The reason is pretty simple: it’s fun!
:I  am  sure  every  GM  worth  his  salt  has  already thought  about  writing  his  own  game.  Sometimes you just want to challenge yourself, see if you can really pull it off and design and write a game that works. If someone else enjoys the work you’ve done, great,  but  usually  it’s  sufficient  to  know  that  you actually pulled it off.
:That  was  what  motivated  me  to  write  Warrior, Rogue & Mage in the first place. When I was under the shower I had an idea about using the basic fantasy RPG classes as the attributes of a character directly. And so I started writing down my ideas. 
:What you hold in your hands is a refined version of that initial idea. I really hope you enjoy reading and  playing  this  game  as  much  as  it  was  fun  to create!
<<closeAll>><<permaview>><<newTiddler>><<newJournal 'DD MMM YYYY'>><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel 'options »' 'Change TiddlyWiki advanced options'>>
Warrior, Rogue & Mage is ©2010 Michael Wolf. Some rights reserved. All contents of this document (aside from the artwork) have been licensed under a Creative Commons BY~NC~SA 3.0 Germany license.  

For more information check out www.creativecommons.com and www.stargazergames.eu.

Please note: This Whole Book May Be Freely Copied and Shared For Personal Use!
|''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. |
|''Date:''|mar 17, 2007|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
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);
Following is a list of sample magic items. GMs are encouraged to come up with their own magic items, or modify the samples to create even more exotic treasure for the player characters.

: This rune covered sword ignores any armor. Attack rolls with this weapon are made against basic Defense.
;Holy Sword
:This gold-hilted, silvery blade is bane against the undead, inflicting 2d6 damage to skeletons, zombies, vampires, and their ilk.

;Warmage armor
: This plate armor from the time of the Imperium uses special enchantments to allow casters to wear it without penalty. It’s statistics are equal to normal plate armor, but it’s AP is 0.
;Enchanted armor
:The most common of enchanted armors, these suits  and  shields  are  unusually  durable  and permit  the  flow  of  arcane  energies  more  effectively. Enchanted armors and shields gain a  +1 Defense bonus and reduce their Armor Penalties by 1. Roll 1d6 to determine the type, then another  1d6  to  determine  the  actual  armor/shield:
:Roll 1. Type
:1-4: Armor
:5-6: Shield|
:Roll 2. Actual armor/shield
:• Armor 
:1: Leather, 2: Scale, 3: Lamellar, 4: Chain, 5: Light Plate, 6: Heavy Plate
:• Shield 
:1-2: Small Shield, 3-5: Large Shield, 6: Tower Shield

;Healing potion
: This vial contains a red bubbling liquid that heals 1d6 HP when quaffed.
;Mana potion
: This vial contains a blue bubbling potion that restores 1d6 Mana points when quaffed.
;Gauntlets of Titanic Strength
: These large gauntlets cause 2d6 damage when used for unarmed attacks.
;Feathered cloak
: This cloak is completely covered by raven feathers that slow every fall, so that the wearer does not sustain any damage from the fall.
:This simple whitewood stave can extend or retract on command, shrinking so as to fit within the palm or growing up to 10 yards in length or any length in between. This makes it extremely versatile; it can be easily concealed, used as a baton  or  staff  in  combat,  used  as  a  walking stick, used for poling rafts and boats over shallow water, or for bridging gaps shorter than its full extended length. The  Changestave  has  the  same  traits  as  the staff when used in combat.
[[What is WR&M?|What is Warrior, Rogue & Mage?]]
[[Book Series]]
[[1: Characters|Chapter 1: Characters]]
[[2: Rules Mechanics|Chapter 2: Rules Mechanics]]
[[3: Combat|Chapter 3: Combat]]
[[4: Magic|Chapter 4: Magic]]  
[[5: Equipment|Chapter 5: Equipment]] 
[[6: Game Mastering|Chapter 6: Game Mastering]]
[[7: The World|Chapter 7: The World]]
[[A1: Skills & Talents|Appendix 1: Skills & Talents]]
[[A2: Optional Rules|Appendix 2: Optional Rules]]
[[A3: Bestiary|Appendix 3: Bestiary]]
[[A4: Tables & Character Sheet|Appendix 4: Tables & Character Sheet]]
Aside from combat there are a lot of ways a character may be harmed. The table below lists a few possible hazards.

Hazard                 Damage
Fall                   1d6 per 3 yards of fall
Suffocation/drowning   1d6 per round
Mild poison            1d3 initial damage, 1 damage per round until successful Warrior check vs. DL 7.
Lethal poison          1d6 initial damage, 2 damage per round until successful Warrior check vs. DL 11.
Fire                   1d6 per round exposed to the flames
<div class='header' macro='gradient vert #390108 #900'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
<div id='mainMenu'>
<div 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 id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
|''Description:''|Extends TiddlyWiki options with non encrypted password option.|
|''Date:''|Apr 19, 2007|
|''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
			// checkbox linked with this password "save this password on this computer"
			// text savePasswordCheckboxLabel
		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]) 
		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

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

		pasPassword: "Test password"
The Resource for Michael Wolf's Fantasy Roleplaying Game
Warrior, Rogue & Mage TiddlyWiki
Author: Clint Checketts

body {
background: #000;
!Link styles /% ============================================================= %/
#mainMenu a.button,
#sidebarOptions .sliderPanel a{
 color: #ffbf00;
 border: 0;
 background: transparent;

#mainMenu a.button:hover,
#sidebarOptions .sliderPanel a:hover
#sidebarOptions .sliderPanel a:active{
 color: #ff7f00;
 border: 0;
 border-bottom: #ff7f00 1px dashed;
 background: transparent;
 text-decoration: none;

#displayArea .button.highlight{
 color: #ffbf00;
 background: #4c4c4c;
!Header styles /% ============================================================= %/
 border-bottom: 2px solid #ffbf00;
 color: #fff;

.headerForeground a {
 color: #fff;

.header a:hover {
 border-bottom: 1px dashed #fff;
!Main menu styles /% ============================================================= %/
#mainMenu {color: #fff;}
#mainMenu h1{
 font-size: 1.1em;
#mainMenu li,#mainMenu ul{
 list-style: none;
 margin: 0;
 padding: 0;
!Sidebar styles /% ============================================================= %/
#sidebar {
 right: 0;
 color: #fff;
 border: 2px solid #ffbf00;
 border-width: 0 0 2px 2px;
#sidebarOptions {
 background-color: #4c4c4c;
 padding: 0;

#sidebarOptions a{
 margin: 0;
 color: #ffbf00;
 border: 0;
#sidebarOptions a:hover {
 color: #4c4c4c;
 background-color: #ffbf00;


#sidebarOptions a:active {
 color: #ffbf00;
 background-color: transparent;

#sidebarOptions .sliderPanel {
 background-color: #333;
 margin: 0;

#sidebarTabs {background-color: #4c4c4c;}
#sidebarTabs .tabSelected {
 padding: 3px 3px;
 cursor: default;
 color: #ffbf00;
 background-color: #666;
#sidebarTabs .tabUnselected {
 color: #ffbf00;
 background-color: #5f5f5f;
 padding: 0 4px;

#sidebarTabs .tabUnselected:hover,
#sidebarTabs .tabContents {
 background-color: #666;

.listTitle{color: #FFF;}
#sidebarTabs .tabContents a{
 color: #ffbf00;

#sidebarTabs .tabContents a:hover{
 color: #ff7f00;
 background: transparent;

#sidebarTabs .txtMoreTab .tabSelected,
#sidebarTabs .txtMoreTab .tab:hover,
#sidebarTabs .txtMoreTab .tabContents{
 color: #ffbf00;
 background: #4c4c4c;

#sidebarTabs .txtMoreTab .tabUnselected {
 color: #ffbf00;
 background: #5f5f5f;

.tab.tabSelected, .tab.tabSelected:hover{color: #ffbf00; border: 0; background-color: #4c4c4c;cursor:default;}
.tab.tabUnselected {background-color: #666;}
.tab.tabUnselected:hover{color:#ffbf00; border: 0;background-color: #4c4c4c;}
.tabContents {
 background-color: #4c4c4c;
 border: 0;
.tabContents .tabContents{background: #666;}
.tabContents .tabSelected{background: #666;}
.tabContents .tabUnselected{background: #5f5f5f;}
.tabContents .tab:hover{background: #666;}
!Message area styles /% ============================================================= %/
#messageArea {background-color: #666; color: #fff; border: 2px solid #ffbf00;}
#messageArea a:link, #messageArea a:visited {color: #ffbf00; text-decoration:none;}
#messageArea a:hover {color: #ff7f00;}
#messageArea a:active {color: #ff7f00;}
#messageArea .messageToolbar a{
 border: 1px solid #ffbf00;
 background: #4c4c4c;
!Popup styles /% ============================================================= %/
.popup {color: #fff; background-color: #4c4c4c; border: 1px solid #ffbf00;}
.popup li.disabled{color: #fff;}
.popup a {color: #ffbf00; }
.popup a:hover { background: transparent; color: #ff7f00; border: 0;}
.popup hr {color: #ffbf00; background: #ffbf00;}
!Tiddler Display styles /% ============================================================= %/
.title{color: #fff;}
h1, h2, h3, h4, h5 {
 color: #fff;
 background-color: transparent;
 border-bottom: 1px solid #333;

 color: #666;

.viewer {color: #fff; }

.viewer table{background: #666; color: #fff;}

.viewer th {background-color: #996; color: #fff;}

.viewer pre, .viewer code {color: #ddd; background-color: #4c4c4c; border: 1px solid #ffbf00;}

.viewer hr {color: #666;}

.tiddler .button {color: #4c4c4c;}
.tiddler .button:hover { color: #ffbf00; background-color: #4c4c4c;}
.tiddler .button:active {color: #ffbf00; background-color: #4c4c4c;}

.toolbar {
 color: #4c4c4c;

.toolbar a.button,
.toolbar a.button:hover,
.toolbar a.button:active,
.editorFooter a{
 border: 0;

.footer {
 color: #ddd;

.selected .footer {
 color: #888;

.highlight, .marked {
 color: #000;
 background-color: #ffe72f;
.editorFooter {
 color: #aaa;

-moz-border-radius-topleft: 3px;
-moz-border-radius-topright: 3px;

 background: #4c4c4c;
 border: 1px solid #4c4c4c; 

.selected .tagging,
.selected .tagged{
 background-color: #333;
 border: 1px solid #ffbf00;

.tagging .listTitle,
.tagged .listTitle{
 color: #fff;

.tagging .button,
.tagged .button{
 color: #ffbf00;
 border: 0;
 padding: 0;

.tagging .button:hover,
.tagged .button:hover{
background: transparent;

.selected .isTag .tagging.simple,
.selected .tagged.simple,
.isTag .tagging.simple,
.tagged.simple {
 float: none;
 display: inline;
 border: 0;
 background: transparent;
 color: #fff;
 margin: 0;

.cascade {
 background: #4c4c4c;
 color: #ddd;
 border: 1px solid #ffbf00;
Description: Contains the stuff you need to use Tiddlyspot
Note, you also need UploadPlugin, PasswordOptionPlugin and LoadRemoteFileThroughProxy
from http://tiddlywiki.bidix.info for a complete working Tiddlyspot site.

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

// 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

 "tiddlyspot password:",
 "<<option pasUploadPassword>>",

 "| 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]]|"

 "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."

 "<<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>"

| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |
| 21/10/2010 16:32:18 | JonasSusara | [[wyrm.html|file:///C:/Users/Jonas/Downloads/wyrm.html]] | [[store.cgi|http://wyrm.tiddlyspot.com/store.cgi]] | . | [[index.html | http://wyrm.tiddlyspot.com/index.html]] | . | ok |
| 22/10/2010 11:30:26 | JonasSusara | [[wyrm.html|file:///C:/Users/Jonas/Downloads/wyrm.html]] | [[store.cgi|http://wyrm.tiddlyspot.com/store.cgi]] | . | [[index.html | http://wyrm.tiddlyspot.com/index.html]] | . | failed |
| 22/10/2010 17:56:09 | JonasSusara | [[wyrm.html|file:///C:/Users/Jonas/Downloads/wyrm.html]] | [[store.cgi|http://wyrm.tiddlyspot.com/store.cgi]] | . | [[index.html | http://wyrm.tiddlyspot.com/index.html]] | . | failed |
| 22/10/2010 17:57:38 | JonasSusara | [[wyrm.html|file:///C:/Users/Jonas/Downloads/wyrm.html]] | [[store.cgi|http://wyrm.tiddlyspot.com/store.cgi]] | . | [[index.html | http://wyrm.tiddlyspot.com/index.html]] | . | ok |
| 22/10/2010 18:02:21 | JonasSusara | [[wyrm.html|file:///C:/Users/Jonas/Downloads/wyrm.html]] | [[store.cgi|http://wyrm.tiddlyspot.com/store.cgi]] | . | [[index.html | http://wyrm.tiddlyspot.com/index.html]] | . | ok |
| 22/10/2010 19:25:04 | JonasSusara | [[wyrm.html|file:///C:/Users/Jonas/Downloads/wyrm.html]] | [[store.cgi|http://wyrm.tiddlyspot.com/store.cgi]] | . | [[index.html | http://wyrm.tiddlyspot.com/index.html]] | . | ok |
| 23/10/2010 09:34:44 | JonasSusara | [[wyrm.html|file:///C:/Users/Jonas/Downloads/wyrm.html]] | [[store.cgi|http://wyrm.tiddlyspot.com/store.cgi]] | . | [[index.html | http://wyrm.tiddlyspot.com/index.html]] | . | ok |
| 26/10/2010 11:28:07 | JonasSusara | [[wyrm.html|file:///D:/misc/DOCS/JonasTW/wyrm.html]] | [[store.cgi|http://wyrm.tiddlyspot.com/store.cgi]] | . | [[index.html | http://wyrm.tiddlyspot.com/index.html]] | . |
| 26/10/2010 11:28:16 | JonasSusara | [[wyrm.html|file:///D:/misc/DOCS/JonasTW/wyrm.html]] | [[store.cgi|http://wyrm.tiddlyspot.com/store.cgi]] | . | [[index.html | http://wyrm.tiddlyspot.com/index.html]] | . | ok | ok |
| 26/10/2010 11:29:42 | JonasSusara | [[wyrm.html|file:///D:/misc/DOCS/JonasTW/wyrm.html]] | [[store.cgi|http://wyrm.tiddlyspot.com/store.cgi]] | . | [[index.html | http://wyrm.tiddlyspot.com/index.html]] | . |
|''Description:''|Save to web a TiddlyWiki|
|''Date:''|Feb 24, 2008|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
version.extensions.UploadPlugin = {
	major: 4, minor: 1, revision: 3,
	date: new Date("Feb 24, 2008"),
	source: 'http://tiddlywiki.bidix.info/#UploadPlugin',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	coreVersion: '2.2.0'

// Environment

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

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

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

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

config.macros.upload.action = function(params)
		// for missing macro parameter set value from options
		if (!params) params = {};
		var storeUrl = params[0] ? params[0] : config.options.txtUploadStoreUrl;
		var toFilename = params[1] ? params[1] : config.options.txtUploadFilename;
		var backupDir = params[2] ? params[2] : config.options.txtUploadBackupDir;
		var uploadDir = params[3] ? params[3] : config.options.txtUploadDir;
		var username = params[4] ? params[4] : config.options.txtUploadUserName;
		var password = config.options.pasUploadPassword; // for security reason no password as macro parameter	
		// for still missing parameter set default value
		if ((!storeUrl) && (document.location.toString().substr(0,4) == "http")) 
			storeUrl = bidix.dirname(document.location.toString())+'/'+config.macros.upload.defaultStoreScript;
		if (storeUrl.substr(0,4) != "http")
			storeUrl = bidix.dirname(document.location.toString()) +'/'+ storeUrl;
		if (!toFilename)
			toFilename = bidix.basename(window.location.toString());
		if (!toFilename)
			toFilename = config.macros.upload.defaultToFilename;
		if (!uploadDir)
			uploadDir = config.macros.upload.defaultUploadDir;
		if (!backupDir)
			backupDir = config.macros.upload.defaultBackupDir;
		// report error if still missing
		if (!storeUrl) {
			return false;
		if (config.macros.upload.authenticateUser && (!username || !password)) {
			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();
		var markList = wizard.getElement("markList");
		var listWrapper = document.createElement("div");
		var uploadCaption;
		if (document.location.toString().substr(0,4) == "http") 
			uploadCaption = config.macros.upload.label.saveLabel;
			uploadCaption = config.macros.upload.label.uploadLabel;
				{caption: uploadCaption, tooltip: config.macros.upload.label.promptOption, 
					onClick: config.macros.upload.action},
				{caption: this.cancelButton, tooltip: this.cancelButtonPrompt, onClick: this.onCancel}
	options: [
	refreshOptions: function(listWrapper) {
		var opts = [];
		for(i=0; i<this.options.length; i++) {
			var opt = {};
			opt.option = "";
			n = this.options[i];
			opt.name = n;
			opt.lowlight = !config.optionsDesc[n];
			opt.description = opt.lowlight ? this.unknownDescription : config.optionsDesc[n];
		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) {
	onCancel: function(e)
		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) {
		if (bidix.debugMode) 
		// Locate the storeArea div's 
		var posDiv = locateStoreArea(original);
		if((posDiv[0] == -1) || (posDiv[1] == -1)) {
	if(onlyIfDirty && !store.isDirty())
	// save on localdisk ?
	if (document.location.toString().substr(0,4) == "file") {
		var path = document.location.toString();
		var localPath = getLocalPath(path);
	// get original
	var uploadParams = new Array(storeUrl,toFilename,uploadDir,backupDir,username,password);
	var originalPath = document.location.toString();
	// If url is a directory : add index.html
	if (originalPath.charAt(originalPath.length-1) == "/")
		originalPath = originalPath + "index.html";
	var dest = config.macros.upload.destFile(storeUrl,toFilename,uploadDir);
	var log = new bidix.UploadLog();
	log.startUpload(storeUrl, dest, uploadDir,  backupDir);
	if (bidix.debugMode) 
		alert("about to execute Http - GET on "+originalPath);
	var r = doHttp("GET",originalPath,null,null,username,password,callback,uploadParams,null);
	if (typeof r == "string")
	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:")));
		} else {
	// do uploadRss
	if(config.options.chkGenerateAnRssFeed) {
		var rssPath = uploadParams[1].substr(0,uploadParams[1].lastIndexOf(".")) + ".xml";
		var rssUploadParams = new Array(uploadParams[0],rssPath,uploadParams[2],'',uploadParams[4],uploadParams[5]);
		var rssString = generateRss();
		// no UnicodeToUTF8 conversion needed when location is "file" !!!
		if (document.location.toString().substr(0,4) != "file")
			rssString = convertUnicodeToUTF8(rssString);	
	} else {

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:")));
			var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
		} else {
	// do uploadMain
	var revised = bidix.upload.updateOriginal(original,posDiv);

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

bidix.UploadLog.prototype.addText = function(text) {
	if (!this.tiddler)
	// 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)
			this.tiddler.text = textArray.join('\n');		
	// update tiddler fields
	this.tiddler.modifier = config.options.txtUserName;
	this.tiddler.modified = new Date();
	// refresh and notifiy for immediate update
	store.notify(this.tiddler.title, true);

bidix.UploadLog.prototype.startUpload = function(storeUrl, toFilename, uploadDir,  backupDir) {
	if (!this.tiddler)
	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 + " |";

bidix.UploadLog.prototype.endUpload = function(status) {
	if (!this.tiddler)
	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) 
	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) 
	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");

	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

// Backstage
	uploadOptions: {text: "upload", tooltip: "Change UploadOptions and Upload", content: '<<uploadOptions>>'}


Magic is very common in WR&M. Everyone with a Mage attribute value of 1 or higher can cast spells. If you want to run a more low-magic 
game, you can make the following changes:

The Mage attribute is replaced by the Scholar attribute. All skills that used Mage before now use the Scholar attribute. This is a purely cos-
metic change, so if this isn’t that important to you,  you  can  of  course  stick  to  the  Mage  attribute.

In order to cast spells a character needs to buy a new talent called “Spellcaster” which gives access to 1st circle spells. Spell casting works as usual, although you are restricted to basic spells when you start with a new character. All other  talents  that  affect  your  magic abilities  (like Blood Mage) need Spellcaster as a prerequisite now. When the character levels up, he can acquire “Advanced Spellcaster” which grants him access to the remaining spell circles.

This optional rule allows low-magic campaigns. By  disallowing  the  Spellcaster  talent  you  can even play without any magic at all.
|!Weapon|!Skill|!Damage|!Cost (SP)|
|Dragon pistol|Firearm|1d6+4|18|
|Dragon rifle|Firearm|2d6|25|
|Throwing star|Thrown|1d6-2|2|
|Two-handed weapon|*|2d6|10|

Bow - The maximum range of the bow is 80 yards. The DL for hitting a target at least 40 yards away is increased by 4. A bundle of 10 arrows costs 2 SP.

Crossbow - It takes one turn to reload the crossbow. A bundle of 10 bolts costs 2 SP.

Dagger - The dagger can be thrown or used in melee combat. If thrown the Thrown skill is used and the maximum range is 20 yards.

Dragon pistol - The maximum range of the dragon pistol is 20 yards. The DL for hitting a target at least 10 yards away is increased by 4. Reloading the pistol takes one turn. 10 shots costs 4 SP.

Dragon rifle -  The maximum range of the dragon pistol is 40 yards. The DL for hitting a target at least 20 yards away is increased by 4. Reloading the pistol takes one turn. 10 shots costs 4 SP.

Halberd - The halberd has a reach of 2 yards.

Longbow - The maximum range of the longbow  is 120 yards. The DL for hitting a target at least 60 yards away is increased by 4. A bundle of 10 arrows costs 2 SP.

Spear - The maximum range of the spear is 20 yards. It can also be used for melee attacks. In that case the Spear skill is used.

Throwing star - The maximum range of the shuriken is 20 yards.

Two-handed weapon - Swords, axes, maces and warhammers exist in larger, two-handed versions. The appropriate skill is used for each weapon.
WR&M is a simple, lightweight role playing game that allows a group of players and a game master (GM) to experience epic adventures in a fantasy world filled with conflict, monsters and wondrous magic.

Although WR&M uses the three archetypal roles of classic role playing games in its title, it doesn’t make use of classes. Players can freely create characters as they see fit without having to press them into the tight corset of character classes. Warrior, Rogue and Mage are actually the characters’ basic attributes, which measure their capabilities in combat, stealth and academics respectively.

This book assumes you are familiar with tabletop ~RPGs. If you have no idea how a tabletop role playing game is supposed to work, ask your geek friends; they’ll probably know.

If you have any questions regarding the game, feel free to contact the author at info@stargazersworld.com or check out the forums on the official stargazer website.
Copyright [[Osmosoft|http://www.tiddlywiki.com]]