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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

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

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

----
Also see [[AdvancedOptions]]
<<importTiddlers>>
Charitable lunch program run by [[Francis Abelard]]. Provides food for the homeless. Max Hobbs ([[Flea]]) sometimes shows up.
Free medical help for supers. Run by [[Dr. Chimera]].

The location moves from time to time, so I don’t have it listed as a place. Someone usually knows where it is.

The place doesn’t have the most up-to-date equipment, and if you need specialty testing (medical imaging, for example) you probably won’t get it (unless there’s a super nearby who can do it), but [[Dr. Chimera]] does have an extensive knowledge of the effects of certain powers and can handle many kinds of trauma from violence.

Usually they keep what they remove. I'm sure there's nothing sinister about that.

They have never been raided. I’m sure there’s nothing sinister about that either.
Sapient genius gorilla. Polymath. Speaks with a voder. Lives in a compound in town.

Basically, if you want to know something technical and you can get to see him, he probably knows it.

Same (evil) creator as [[Psimian]].
People looking to get superpowers. Often these people believe that super powered individuals are special or blessed or the next step in evolution. Ascenders often coalesce into cults.

Ascenders also tend to do things like lick random meteorites or set up poorly-balanced racks of chemicals attached to a lightning rod.

This would be sad and laughable if Ascenders didn't have a higher percentage of &ldquo;qifting&rdquo; than others.
Supervillain group. At large. Most thefts concentrated in the [[Bermuda Triangle]].
* [[Scrim]] (group invisibility)
* [[Vom]] (portal teleporter)
* [[FX]] (illusions)
And all of them steal.

Some people think they are organized by a [[Director]] or [[SM]] but that has never been proven.

At large.
Beat officer in the [[Flats]] (slum) area of town, and unacknowledged leader of much that is corrupt in the [[SCPD]]. “Leader” might be too strong, but he certainly takes a cut from it. Has refused requests to transfer or even to be promoted. Fifteen year veteran. Seventeen complaints of wrongful death, most of which did not go to investigation (though they’re supposed to).

Characters who investigate will notice that he lives better than a beat cop should.
Entertainment section of town: a roughly triangular area (hence the name) located between the [[Flats]], the [[Offices]], and the [[Mine]].
Superhuman prison. Most cells are actually some form of [[power sponge]]; the prison can hold about two hundred and fifty prisoners; there are male and female wings.

The prison is nominally administered by [[PICA]] but actual day-to-day workings are contracted out to private industry.

This list will quickly get out of date, but at the start of the campaign, the following villains are known to be incarcerated there:
* ''[[Cruncher]]'' who turns to a big metal person and likes to crunch things between her hands
* ''[[Flattop]]'' aka ''Silver Prism'' with a force field and bursts of silver energy
* ''[[Mockingword]]'' whose verbal spells can reduce you in power
* ''[[Portal]]'' who is a teleporter
* ''[[Rebound]]'' who reflects back any offensive power as the //opposite// power (heat to cold, that sort of thing)
* ''Sid the [[Blood Squid]]'' who has tongue tentacles that stretch long enough to wrap and suck the life out of a victim; a mere touch will stun the victim
Super transport or courier service. They have four employees: one administrative, one dispatcher, and two supers (an owner and an ex-con):

* ''[[Kimberly Rite]]'' Does the administrative work for the company.
* ''[[Michael Hong]]'' Dispatcher and something of a techie, because he maintains the communications equipment
* ''[[Nathaly Fenter]]'' Owner and Super, who worked (briefly) as “//Gitt’er Hero//” but she abandoned that after two appearances and later founded //Bon Voyageurs//. She still does most of the courier work. Powers appear to be limited to flight (big translucent wings appear though they aren’t physical in any way), and she has to be listening to or making music. (The effect lasts long enough for her to breathe, so she can sing herself in the air.)
* ''[[Caroline Embry]]'' Teleporter who has a six-year-old child; she fills in when she can. Got arrested and convicted for trespassing and theft of industrial secrets; she insists she didn’t do anything except accidentally teleport into a secure location. That’s the only record of her doing anything, but she served five years.
Luck-based villain. Possible connection to [[Lucky Strike]].

''Note''
Possible love interest for [[Flea]], a kind of a Black Cat/Catwoman thing.
Alien brain in a jar, used as a drone or remote by a certain evil organizations. The fact that it is a drone or remote is a secret.

The user has to be attuned to the brain, and the brain is kept under-oxygenated and possibly drunk on chemicals we know not of.

Known powers of "Brainpower" include telekinesis, a stasis beam, and flight.
Headquarters of the [[Magnificent Centurions]]. Contains a rumble room/danger room, and a number of sophisticated robots and a trophy room. Normally protected by a force shield....except for some administrative traffic and that one day a year...

Just outside the city, and connected by a rail line.

Camp Centurion is a decommissioned military base outside the city, purchased by the Centurions. It’s used for dangerous things: testing, constructing devices, examining and dismantling villain technology and gadgets.

The main building is tall and curved, about eight storeys tall, and has three underground levels. Floors are reinforced in main building to handle up to Density 8 (though that person might have to take the stairs if the service elevator is broken).

Camp Centurion has high but unobtrusive security. It’s surrounded by force field generators and scanners. Together, they keep out everything but natural wildlife and environment. Force field is between 1 and 8 (in //Icons//), depending on threat. The camp can be covered top and bottom by force field “domes” Scanners on grounds search for mental threats (possessed animals, for instance).  Outside of the main building, you need a pass. At least one room in each building has life support (in case of chemicals, gas, radiation, etc). Magical protections have lapsed due to recent events not relevant here. There are times when security is lessened: During delivery of supplies, for instance; or when the train arrives and departs for testing (roughly every three months), during the annual open house, or at the beginning and end of the Centurion fantasy camp, which is held there in the summer.

The camp is powered by reactor which uses combination of science, magic, and parallel universes. (The camp is now a known weak spot in dimensional walls.) 

The camp has a relatively small staff. If a task can be automated, it is. The functions of the camp are controlled by the camp computer, which can share databases with the main Centurion computer. There is no AI after the last one revolted.

''Qualities''
* Dangerous stuff happens here
* Takes the obvious precautions and some inobvious ones
* Weak spot in dimensional barriers

''The Rumble Room''
Used for training and testing supers. Can handle powers to level 8 (//Icons//): it’s tall enough for Growth 8, strong enough to withstand Shooting 8, and so on. A force field can be enabled to prevent Phasing out of the room, but is not in this scenario.  Applicants generally agree to a fair test, so mental attacks and some line-of-sight attacks can get through the window. (Lasers and light-based attacks cannot, in case a blast hits the window.)

Unless otherwise stated, the Rumble Room attacks as if it were Coordination 5 or Prowess 5. So to avoid a trap such as a pit, tentacles, or a flame cage, it is usually attacking at 5 versus Coordination (usually) or Prowess. 

''Rumble Robot I''
These simple robots take the place of civilians in simulations. They’re slow, blocky, delicate, and cheap to build. The quality “Minion” can be removed for a slightly tougher opponent.

''Rumble Robot II''
These robots are an actual opponent in simulations. They’re not minions. Normally they blast, but in lethal simulations, they can shoot. They can also be equipped with some customizations (such as Affects Phasing).
Lawrence Simons, ex-husband of [[Mitzi Braun]] and heat-based villain.

Powers include super strength and endurance, the ability to melt rock and summon magma/lava, the ability to telekinetically control that melted rock or lava, a heat aura that protects him from a lot of damage.

Obsessed with the idea that if he just does //enough// destruction, he can get Mitzi back. 

He’s also 52; every time he gets out of [[Black Rock Prison]] he has to steal to get re-established. 
See [[Bon Voyageurs]].

Known powers: Teleport, with a number of restrictions.
Originally known as the Flea Circus, this is now the headquarters for [[Silvertail]]. The [[Flea]], the [[Golden Bee]], and [[Mitzi Braun]] know it is there; so (presumably) do members of [[Consequence]].

This is the //second// Circus; the original is a warehouse in the [[Mine]] district, and it's still owned by Springtail. It mostly has the original Flea's gadgetry and memorabiliia.

The current circus is a hidden sub-basement in Springtail's home. It contains a teleport pod that travels to the headquarters of [[Consequence]].
Weekly newspaper best known for its ads and its personals, though the personals are mostly online now. (Still, the Weekly’s Strange Happenings column is looked at by everyone from occultists to cat-loving grandmothers.)

Think of it as Craigslist, if Craigslist still allowed escorts to advertise.
Leader of the local [[SKULL]] base. Full face mask. Occasionally changes height, build, or gender, so probably not the same person all the time.
The global superteam. Power levels tend to the 12-15 range, with Silvertail being a member.

Silvertail has a teleport pod in her headquarters, as do most members. It does simple biometrics to identify the occupant. (If you don't match the biometrics, you get teleported to a more secure part of the Consequence headquarters.)

Clearly one of their archfoes is Truthor, the global hacker syndicate that's working on doxing them.
Shapeshifter who takes on people’s appearances and destroys things from the inside.

At large.
[[WelcomeToTiddlyspot]]

[[Strange City]]
[[People]]
[[Organizations]]
[[Places]]
[[Objects]]
Subculture devoted to finding abandoned superhero or supervillain lairs and investigating them, possibly retrieving and selling old artifacts.

They have a high mortality rate. Closely connected with the [[Ascenders]].
Bar/Club for supers and those "in the life." There is a membership fee; one can buy one-night memberships, but most memberships turn out to be annual. Memberships can be suspended or revoked by management.

You must wear a mask. Masks are not available; you have to show up wearing one.

There are private rooms, a dance floor, overpriced drinks, and a few rooms with alternate environments.

Rules include no powers (which makes it a sort-of neutral ground) and no doxxing on the premises.
Name used for every doctor who works in the [[Abbattoir]]. Encyclopedic knowledge of the effects of powers and of trauma.

No known powers, but the Abbattoir is considered neutral ground. Possibly a shape-changer or someone who can absorb powers from samples.
Searcher for immortality, who has managed to stay young since the 1870s. His technique does involve killing young people and removing their life essence, but he figures you can't make omelettes without breaking a few eggs.

By accident he recently learned that if he absorbs the life-essence of a super killed in his particular manner, he can get some version of their powers. This makes him more of a threat than he used to be.

He has never been arrested and people are not generally aware of him.
Chef/cook for Kelley Robbins ([[Springtail]]). Flirts with [Mitzi Braun]]. Does not know Robbins' secret ID.

Widowed. Three children, two adult, one nearly so.

Does not know Robbins' secret ID. Does not know she is actually 52; thinks she is a trust fund baby, probably raised by Mitzi. 
Dimensional magical tyrant trapped in the body of a long-haired chihuahua. Doing his best to get out of the body, get one with better access to his powers, and take over the world, galaxy, and dimension.

Emperor Biff is an eight-pound long-haired chihuahua. He used to be a being of unimaginable cosmic power and now he is reduced to this. He is under guard/owned-by [[PICA]], the organization that deals with cosmic or mystical threats.

A spell has trapped the essence of Empyreanus Bane in this dog. They don't know if the dog is now immortal or not; they don't know what will happen to the essence if the dog dies. Therefore the organization protects him. Keeping him on base with other trapped cosmic beings is less risky than having him in someone's home. (For one thing, the base is armored.)

The dog can talk. He is prone to referring to humans as &ldquo;pokes of meat and heartbreak&rdquo; and once referred to his current predicament as &ldquo;a ton of cosmic mastery in a five-pound sack.&rdquo; He is haughty, mouthy, sarcastic and seems utterly unwilling to escape, possibly because of Rainbow.

[[Rainbow Timm]] is the young daughter of [[Dr. Timm]], one of the researchers in the organization. Dr. Timm has no spouse, so Rainbow is often in the complex. Rainbow likes to dress Emperor Biff in doll clothes and have elaborate tea parties. Rainbow and the Empyreanus Bane have formed a connection.

Dr. Timm is not sure whether the connection manages to control Emperor Biff or this is an eventual escape route for Empyreanus Bane. Perhaps when the dog body dies, the Bane will move to the attached victim. Regular scans by a magician show nothing, but...
The older of the two colleges is the Enoch Strange College. It is a liberal arts college with a reputation for turning out independent thinkers. Its specialty is the sociology of the occult, and its rare book library is the envy of universities this side of Arkham. There have been scandals &mdash; one of the professors founded a cult &mdash; but the place has been free of trouble for about fifteen years. (Of course, some would say that it's ripe for problems.)

''Note''

This is Miskatonic University, with people who will know or create magic problems.
Plant person who haunts [[Isley Park]]; also known as Lady of the Glade, Sundew, and was once Annie Glait.
Poor or slum area of the city. Built on a floodplain. Historically it floods about every decade.

For mass transit, serviced mostly by buses but there is one elevated rail line that extends its length.
Newly empowered by the Silver Storm, Max Hobbs is 17, homeless, dodging the authorities, and has named himself after a hero of the 1970s.
Frank runs the lunch program [[A Full Stomach]] that Max Hobbs ([[Flea]]) sometimes drops by.

Frank is in his mid-thirties and was a tech billionaire before a tremendous fall from grace, drug addiction, and a new-found purpose and a quiet spirituality. He lives hand-to-mouth, but is in the middle of court action trying to get back a percentage of the income from some patents he owned.
Country & Western bar in the [[Mine]] district. Generally regarded as neutral territory when supers want to talk instead of fight.

This might be because one of the bartenders is a minotaur. Maybe: nobody has seen him (or her) but everyone knows somebody who has.
Characters related to &ldquo;the plant lady's&rdquo; arrival are listed.
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>>

Mystery man from the 1940s, and a genius with bee venom. Tends to wear a mask, fedora, and suit. Leaping in the shoes.

Transported from the 1940s through time spent in a //Groundhog Day//-like pocket universe. Actually a black woman.

Trying hard to get used to the "no killing" thing, but [[Springtail]] has made it clear that killing is //bad//.

Powers include:
* Genius with chemicals (and bees)
* Baritsu
* The gun with spongy bullets that can deliver different payloads, all based on different manipulations of bee venom:
** Death, of course
** Paralysis
** Confusion and amnesia
Burger joint run by [[Hugo Turnside]] and his granddaughter [[Jade Glait]].

Yes, Hugo's daughter and Jade's mother has since become [[Epiphyte]] but he doesn't know that, and he took //her// daughter in. He thinks his daughter disappeared with her husband Edward Glait.
 Daniel Hodge. People who don't like him call him Hodgepodge.

Meet Dan Hodge. Dan has a couple of abilities that are really useful but don't make him capable of fighting or stealing focus from the players. (Even though he's in the bodyguard business.)

First of all, Dan has Transform. He can make himself look exactly like someone else, which is useful in the bodyguard biz. But even better: Dan can shoot a gun like an Olympic-level marksman.

Sounds good, right? And you add in the fact that Dan can duplicate himself five times, well, he sounds just like a focus-stealing GM character.

Except.

Dan is a coward.

He might copy someone and send the duplicates out...but never himself. He sits in the safe house and sends the duplicates off as decoys. He can shoot (and so can his duplicates) but damage them...and they go away.

When people know that Hodgepodge is on the case, well, weapons tend to involve lots of playing cards flying through the air and giving paper cuts. Or area effect tasers.

But Dan gets by.
Vegetarian cafe in the [[Offices]] district. Only open from 7:00 a.m. to 8:00 p.m.

Has an open patio in the back protected by fences and bushes (possibly low cedars) which supers sometimes use to talk.
Park that contains wilderness. Haunted by the Lady of the Glade (see [[Epiphyte]]). Closed at night; adults who go in there at night die. Gated on three sides and a stream on the fourth. Hasn't been mowed for...years.

Runaway kids whisper to each other that if they can get there, they'll be safe because the Lady of the Glade will protect them from pursuers.
Stochastic mastermind and randomly awful supervillain. Some say he can't die because heaven and hell won't take him.

''Note'' Imagine the Joker but add some superpowers.
The ride-share organization in Strange City. 

''Ideas''

* Karry continues to lose money but continues to operate. Possibly a money-laundering organization is funding them.
* A flying super offers his services to Karry for those who need to get there in a hurry, by air. 
See [[Bon Voyageurs]].
Sonic supervillain with mind control. Can influence whole crowds if the sound is properly amplified.

Generally racist and sexist, which is the source of his overconfidence and often his downfall.
I have used ‘Super’ as the tag for characters with known powers and ‘special’ for characters who function at that level but might not have overt powers. Note that many of these characters are villains. It's stipulated that villains outnumber heroes by at least a dozen to one, and probably twenty to one.
<<list filter "[tag[Super]] [tag[super]] [tag[special]]">>
''Teams''
<<list filter "[tag[superteam]]">>
''Definitely villains''
<<list filter "[tag[villain]]">>
Brand of lozenges. Endorsed by Liberty Lady and later Liberty Lightning, two superheroes in (respectively) New York and Los Angeles. The advertising stops on just this side of claiming that Liberty Lozenges activate your metagene if you have one, and possibly grant enhanced healing to others.

Liberty Lozenges has refused all official attempts to have analysis done.

The packaging has stars of different colours on it, and the rumour is that the //white// star on the {upper left, upper right} corner is the secret formulation that grants powers (depending what city you’re in; it varies).
Library consisting of lost or stolen books. Magic, of course. Books can be retrieved from there, but it is guarded by the Book Golems.

''Book Golems''

The book golems are spirits that roam the library. Treat them as ghosts, or astral projection without bodies: they can fly on the astral plane, pass through things (and there are very few rooms in the library protected against ghosts...because they would not be able to let these guardians in...but the library as a whole is protected), and have a great deal of trouble affecting things on the physical plane. They are not clever, but they do have a certain awareness. Vistors to the library are given protective tokens that identify them. Employees of the library are their own tokens: there is nothing to steal, and the attunement takes some time, but it can be revoked from a distance.

The library is decorated with headless statues of stone or bronze. The statues have books lying at their feet, which are never cleaned up—which seems odd, when the rest of the library is meticulously (even magically) tidied and organized. Here's why.

When the golem needs to take form on the earthly plane, it animates a statue, and places a book on its neck. From then on, the statue has the abilities described in the book (represented as variable abilities in the Servant description). Until that book is removed (a +2 difficulty to the task), the statue cannot change books. The book can be burned off, of course, but they are fire retardant; the statue can be immobilized, or the spirit can leave the statue, either by being exorcised by a puissant-enough magician or because its job is done. If the body is destroyed, the spirit is free to animate something else.

The books around the statues tend to be biographies of famous fighters, rogues, wizards, and so on.

If there is no statue around, the book golem can build itself a body entirely of books. It is not as tough as a body of stone or bronze, and more prone to flying apart if there is a sudden impact, but it has happened. The sight of an inukshuk of books stomping towards you does tends to give thieves pause.

There are ways to get around them. The book golems are not nearly as fierce on the astral plane, so they can be fought or imprisoned on the astral plane. It is possible that someone could switch the book before it is placed on their head so they have the abilities and skills of a renowned pacifist. There are a limited number of these spirits, so one could, in theory, turn off the protection for all the librarians and trust that the book golems will be busy with them instead of your operative.
/***
|''Name:''|LoadRemoteFileThroughProxy (previous LoadRemoteFileHijack)|
|''Description:''|When the TiddlyWiki file is located on the web (view over http) the content of [[SiteProxy]] tiddler is added in front of the file url. If [[SiteProxy]] does not exist "/proxy/" is added. |
|''Version:''|1.1.0|
|''Date:''|mar 17, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#LoadRemoteFileHijack|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0|
***/
//{{{
version.extensions.LoadRemoteFileThroughProxy = {
 major: 1, minor: 1, revision: 0, 
 date: new Date("mar 17, 2007"), 
 source: "http://tiddlywiki.bidix.info/#LoadRemoteFileThroughProxy"};

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

bidix.core.loadRemoteFile = loadRemoteFile;
loadRemoteFile = function(url,callback,params)
{
 if ((document.location.toString().substr(0,4) == "http") && (url.substr(0,4) == "http")){ 
 url = store.getTiddlerText("SiteProxy", "/proxy/") + url;
 }
 return bidix.core.loadRemoteFile(url,callback,params);
}
//}}}
Gang, mostly Latino, significant number super-powered, better trained than you’d think. Protecting their people as well as running numbers, prostitution, drugs, weapons. “War outfits” involve costumes. 

Two-word name, second is Libre or Libertad (Look up appropriate Spanish word)
Gadgeteer with luck powers, heroine. Powers similar to [[Botch]] but might not be connected.
Superhero team that guarded the city; been missing for a couple of years. Their headquarters, [[Camp Centurion]], opens to the public for one day a year for essentially summer camps.

Members included:

* ''Quantum Wyrd'' (kinda like Green Lantern)
* ''Black Aster'', environmental controller...she can control the weather or shape the wall into a hand that grabs you
* ''Heartbreak Kid'', a mentalist who is best ad manipulating emotions and who hasn't aged in ten years.
* ''Blue Streak'', a speedster who occasionally has to deal with an evil duplicate called Mean Streak.
* ''Shadowguard'', your plan-for-everything vigilante
[[Strange City]]

[[People]] 
[[Known parahumans]]

[[Organizations]]

[[Places]]

[[Objects]]
Current chief of police in Strange City (see [[SCPD]]).  As a detective was heavily involved with the [[Magnificent Centurions]], but her attitude is largely &ldquot;What have you done for us lately?&rdquot; Officially, the department frowns on non-sanctioned supers, but after some initial mistrust they probably won't hassle a hero //if// the hero is a help (from their point of view).

//Personal//

Divorced, part-time custody of three kids. One is an adult at [[Strange Institute of Technology]], one is a teenager, one is a tween. Currently no significant other.
The city is served by a rail line, which is mostly an elevated line, though parts in the [[Offices]] district are underground. One line extends across the [[Flats]] but the rest of the Flats is served by buses.

The city also has taxis. Ride-sharing is not illegal in Strange City, but there is only one “official” ride-sharing organization, named [[Karry]].
Captain Matthew Strong is [[SCPD]] and head of [[PRAT]].

Feels somewhat embattled, being in the city with the most supervillains per capita.

Always glad of an excuse to use the ion cannons. (Originally given to the city because of an alien invasion, they have been taken over by PRAT.)

Never married. No known sweethearts or romantic associations.
<<list filter "[tag[media]]">>
Sorcerer supervillain. MO is generally spell he has just learned and a couple of utility spells, but the spell he will have just learned is powerful.

Likes to animate statues.
See [[Bon Voyageurs]].
District of town that was formerly the mines and is now largely industrial and some slums. Many tunnels underneath; occasionally one will collapse.
Childhood friend of [[Silvertail]] in her secret identity and currently the person who runs her household. Mitzi is the same age but not a mutant, so she //looks// like she was born in 1968.

At 52, she is a former Marine, an excellent mechanic, a so-so driver, a borderline obsessive about order, a divorcee who has decided she is non-binary, and a good enough cook that she pays someone else to cook for real tough stuff ([[Eduardo Gutierrez]]). Eduardo does not know various secrets; he comes in to cook and supervise the pantry; he does, however, flirt with Mitzi.

Mitzi does not drink any more. She does not have children.

Her ex-husband is the supervillain [[Captain Magma]]. (Mitzi would point out he never got beyond Lieutenant.)
See [[Bon Voyageurs]].

Known powers:
* Flight (giant translucent wings of energy appear)
Her strength is normal-high, but that’s more from carrying things all the time than because of a power.
Group of supervillains:
* [[Buffalo]]
* [[Lariat]]
* [[Loco Motive]]
* [[Six-gun Sally]]
* [[Stagecoach]]
There are three newspapers.
* The Bee is the daily, and is part of a chain. Leans conservative or Republican. (See [[The Strange Bee (paper)]].)
* The Strange Times is a weekly with excellent investigative journalism. Founded in the early 1970s. Leans liberal or Democrat. (See [[Strange Times (paper)]].)
* The Citizen Weekly is best known for its ads and its personals, though the personals are mostly online now. (Still, the Weekly’s Strange Happenings column is looked at by everyone from occultists to cat-loving grandmothers.) (See the [[Citizen Weekly (paper)]].)
In a game:
* The Bee sometimes hires someone who wants to make a name and move up. It is also an excellent adversary if someone wants to be persecuted by a paper.
* The reporters from the Strange Times are likely to uncover things that someone doesn’t want uncovered.
* The Strange Happenings column is an excellent way to spread rumours and news, and its pseudonymous author might actually be a super or occult master.
A vocational college that teaches electronics and media presentation.

Best known among non-students for its online news show.
Objects unigue to the campaign.

<<list filter "[tag[object]]">>
Business and banking district of the city.
Organizations, formal and otherwise.
<<list filter "[tag[Organization]]">>
''Businesses'' (legal)
* [[Black Rock Prison]]
* [[Bon Voyageurs]]
* [[Citizen Weekly (paper)]]
* [[Free State (bar)]]
* [[Hamburger Hippie]]
* [[Home on the Grains (café)]]
* [[Karry]]
* [[Parahuman Security, Inc.]]
* [[Strange Times (paper)]]
* [[The Strange Bee (paper)]]
''Media''
(The lists of [[Newspapers]], [[Radio stations]], and [[Television stations]] are included here.)
<<list filter "[tag[media]]">>
''Municipal''
* [[Mass transit]]
* [[PRAT]]
* [[SCPD]]
''Cults &amp; Hate Groups''
Strange City has a number of groups that could be called aggressively-expansionist self-help organizations, but we're going to short-hand them as &ldquo;cults.&rdquo; At this point, most are just names and will be filled in if needed.
* [[Best Self]]
* [[Divine Light of the Avatar]]
* [[Exceptional Historical Army]]
* [[Hentai Tentacle League]]
* [[Purity88]]
* [[Solution Society]]
* [[Triple Triangle]]
The Parahuman Investigation and Corrections Agency is the federal organization that handles parahumans in the country. They try not to use the acronym; most members hate it.

They do have a prison nearby, [[Black Rock Prison]], but while that's //administered// by PICA, it is not //run// by PICA; day-to-day operations are contracted out to a private firm.

PICA has custody of [[Empyreanus Bane]], also known as Emperor Biff, and employs [[Dr. Timm]].
The Parahuman Response and Tactics team, a part of the [[SCPD]] who also never refer to themselves by acronym (though everyone else does).

Very eager to use the [[ion cannon]]s that they have.

Commanded by Captain [[Matt Strong]].
A small security firm that hires parahumans as security guards, usually by organizations that expect to have to deal with parahuman invasions. (There isn’t money to hire PSI for the university labs, though.) Buildings are generally set with alarms, and three-person teams head out (the third person stays in the truck). Team structure depends on the powers available, but PSI doesn't like to break up a team that works.

Because powers are relatively rare, PSI has had to be quite egalitarian in its hiring. Color, creed, sex, or criminal record don’t matter as much as whether you have a useful power. It is notable as a place where ex-cons can get work, once they have a Certificate of Rehabilitation from the government. ("Relatively rare" even in the city with the most villains per capita, once you eliminate hamlets that happen to have produced a supervillain.)

As an example, one successful team:

* ''[[Stalker]] (River “Eyes” Glimpt)'' Fixes “third sight” on one of the team and reports back if there’s any unusual problem. Unlike the other two, Glimpt has a criminal record, arrested for being the eyes for a criminal gang for a couple of jobs.
* ''[[Padlock]] (Dwight Celenza)'' Parahuman security team. He can bind things up.
* ''[[Scope]] (Mackenzie Ney)'' Parahuman security team. The one who finds things.
/***
|''Name:''|PasswordOptionPlugin|
|''Description:''|Extends TiddlyWiki options with non encrypted password option.|
|''Version:''|1.0.2|
|''Date:''|Apr 19, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#PasswordOptionPlugin|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0 (Beta 5)|
***/
//{{{
version.extensions.PasswordOptionPlugin = {
	major: 1, minor: 0, revision: 2, 
	date: new Date("Apr 19, 2007"),
	source: 'http://tiddlywiki.bidix.info/#PasswordOptionPlugin',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	license: '[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D]]',
	coreVersion: '2.2.0 (Beta 5)'
};

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

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

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

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

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

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

merge(config.optionsDesc,{
		pasPassword: "Test password"
	});
*/
//}}}
Being the people we've seen or heard about in the setting. For a list of supers only, see [[Known parahumans]].
<<list filter "[tag[Character]]">>

Here's a start at a relationship map:

[img[https://www.dropbox.com/s/w360c27c8ewgov1/StrangeCity.png?dl=0]]
Places that have been mentioned, including things like the Abbattoir, which moves but it's a place you go to. (For most businesses, though, see [[Organizations]].)
<<list filter "[tag[Place]]">>
Very on-the-nose name for a group of confidence artists, who can be hired to create a distraction or get certain information. Their existence is not public knowledge, but those with Streetwise or equivalent can know of them.
''Note'' For convenience, I have added a couple of tags that indicate power levels: characters fit into one of four characters, if the tier is named: borough, city, national, and global. Presumably we could go further in each direction, but we don't need to right now. I have also added the tags &ldquo;Super&rdquo; for characters with known powers and &ldquo;special&rdquo; for characters without known powers but who can successfully interact at a particular level. 
* Batman is &ldquo;special&rdquo; because he has no known powers but he can compete at a &ldquo;global tier&rdquo; 
* ~Spider-Man is of a &ldquo;national tier&rdquo; power level even though he chooses to operate at a city level.

For our convenience, &ldquo;tier&rdquo; is a //power// measurement, not a scope measurement. Characters change scope too often for a discussion of it to be really useful.

Former movie host turned monster controller, with a “Midas Monster Glove” that turns regular people into monsters under his control. (He escaped [[Black Rock Prison]] because it turns out that //any// glove can be the Midas Monster Glove.) If the monster has appeared in a movie, Professor Macabre can make it.

Older man, but handsome. Has a particular hate on for WANT, one of the television stations in town, which fired him when it was acquired by a network.

At large.
Psychic baboon hive mind of human intelligence who lives in a troop of baboons. [[PICA]] has never been able to catch //all// the baboons so “he” has never been really caught.

Same (evil) creator as [[Adam Silverback]].

Known powers include mental blast, illusions, force wall.
Anti-mutant human purity organization. The ‘88’ is believed to be a reference to ‘HH,’ a common white power slogan.

The organization created the [[VIGILANT]] robots to hunt and capture or kill mutants.

''Note'' Created to be a stand-in for Genocide if I run //Champions// adventures.
There are three big stations whose formats change occasionally. They are currently oldies, talk radio, and country
& western. They are owned by syndicates, and the programming is dictated elsewhere. The rest are small radio
stations that cater to specialized tastes.

''Ideas''
• One of the talk radio hosts might choose to make vigilantes a convenient scapegoat for everything.
Urban myth. Supposedly she is a spirit for wronged women; summon her and she destroys the one who did you wrong and all accomplices (men and women). Stories about her usually involve her killing the lackeys, then using them as zombies to kill the main villain.
Strange City Police Department. Headed by [[Marion Stokes]]. Has a "special weapons and tactics" thing in [[PRAT]].

Certain parts of the police department are famously corrupt (see [[Beauregard Ram]]).
Evil terrorist organization and marketing force.

The local franchise, er, base is headed by [[Commander Dread]]. To the layperson, a force of terror and evil. But the  organization's founders have a clearly-defined market:

''Wannabe supervillains''

Specifically, the kind who attempt to set up organizations to overthrow the world. You know, the kind that superheroes defeat on a regular basis, because their ideas are not top-notch. Maybe even half-baked.

They've set up a franchise operation, and they will help you create your evil organization. (There might even be a multi-level marketing aspect to it, where you get to sponsor a new evil organization.) They have many, many features that you can buy for your organization, and they get a cut of your income until you reach a certain threshold.

For buying in, they provide:
* Name recognition. Everybody knows and fears SKULL.
* Standard weapons and tactics.(Uniforms and weapons for twenty are included in the initial franchise fee, and you can always buy more from them.) Tactics are written in the [[Skin-Bound Book]] (their manual of policies and procedures), but you can buy training.
* Access to someone who will sell you a base.
* Computers, a link, and encryption.
* A cool name, like [[Commander Dread]], Commander Plague, Commander Panic, Commander Destruction, chosen when your group is founded.
* Stationery and the facilities to break into local broadcasts and interwebs. (Check on [[ViewTube]]: there are over twenty-five world domination threats stored there, from the last four years. There is a SKULL channel, and part of the Dark Web is devoted to it.)
* Two jobs by an established SKULL supervillain team.
* You can buy a base, and they will build one for you. The exact mechanism depends on your local geography, but: 
** They do have an automated borer robot that will dig out one of eighteen floorplans for you and put the exterior in place for an underground base.
** They actually have construction teams who will come in and do the interior for you, and it only costs a bit more. (Plus, you don't have to kill them afterward; they're already bound by oath.)
** The Skybase is popular and based on reliable blimp technology, though more expensive than it used to be (because of the helium shortage). 
** Only a few Islebases are available, but they're quite swanky.
** Escape vehicles are essential, but do cost extra.

There is also an insurance company to insure your minions. Once you're caught, of course, coverage ceases.

Depending on your interests, you might want to buy laboratories to research That Which Man Was Not Meant To Know, or to research giving minions super-powers. (If you have enough money, you can buy a supervillain team for after those first two jobs.)

Basically, they can provide at a ridiculous markup anything you need, customized with the SKULL logo.

''Note'' Created because I thought it was a cool idea, but can also replace Viper or other supercriminal organizations when running adventures from other game worlds.
A superhero RPG setting
Flea Family
Policies, procedures, tactics and strategies for a [[SKULL]] franchise. 
An organization devoted to the truth and -- Just kidding.

A destructive cult, primarily devoted to the wealth of [[Stacey Solve]], daughter of the founder [[Stephen Solve]] (born Harold Lafayette).

They soak you for money to teach you courses so that you can learn how to develop the &ldquo;superhero inside of you&rdquo; and occasionally put troublemakers in lethal situations. If the troublemaker survives, look! Proof of their methods! If the troublemaker dies, look! They did not have enough faith!
Former sidekick who has finally reached maturity. (Part of her powers is extremely retarded aging, so despite being a kid sidekick in the 1970s, she only just now looks like she is old enough to be an adult.)

Because of this slowed aging, she has been a sidekick to a number of heroes and has more experience than most. She also has contacts galore and enemies to match. 

Her headquarters is called the [[Circus]] (inherited from the original Flea's "Flea Circus"). Her house is large-ish (kind of a mini-mansion) and is run by her friend [[Mitzi Braun]], who is the same age as she is but is not a mutant or powered in any way.

Known powers include:
* Leaping
* Create images of self as escape mechanism
* Retarded aging (about 6:1)
* Limited protection from kinetic attacks
* Corrosive touch
* Some enhanced strength
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.

This particular one describes Strange City, a superhero RPG setting which is most notable for being the city in North America with the most supervillains per capita (once you eliminate villages and hamlets that happen to have produced a supervillain). While some supervillains are in prison and some are shared and some are clumped on teams, this still means that there are about sixty to eighty supervillains for three or four heroes. Given that there //were// the [[Magnificent Centurions]], who have been (somewhat ineffectually) replaced by [[Team Hero]], that means that the Strange City urban area has about a hundred and fifty to two hundred supervillains. (Granted, about a hundred are being held in [[Black Rock Prison]].)

As it happens, the city also has professors who are nationally-recognized experts on the occult, a famously-corrupt portion of the police force, and a university famous for its technical work. There's plenty to do!

There should be a section of [[GM Secrets]] that describe why this is so, but I haven't gotten around to it yet.  See also the note about [[Power and Scope]].

''Topics''
* [[People]]
* [[Organizations]]
* [[Places]]
* [[Objects]]
* See also the note about [[Power and Scope]]

''Geography''
There is a river winding through it, and the river empties into a large body of water. (I have not decided on east coast or west coast or near a big lake...probably the third.) Much of the poor part of the city is on the floodplain.
 
Named districts so far:
* [[Bermuda Triangle]]
* [[Flats]]
* [[Mine]]
* [[Offices]]
* [[The Coast]]
* [[Foots]]

''Smidgen of History''
Strange City is near high-quality pitchblende, and the need for it drove much of the urbanization. Even though the village had existed since the seventeenth century (founded by Ezekial and Hepsibah Strange), it didn't become a city until the late 1950s.

The first overt supers show up in 1961 in Strange City with the appearance of the [[Dream Zodiac]] group of supervillains and [[Dr. Futura]], who opposed them. A careful reading of history may show that many of the supernatural abilities shown in the past were superowers.

''Education''
* [[Enoch Strange College]]
* [[Nugget College]]
* [[Strange Institute of Technology]]

''Media''
See also the separate tiddler [[Media]].
* [[Citizen Weekly (paper)]]
* [[Strange Times (paper)]]
* [[The Strange Bee (paper)]]
* WANT (TV)

''Culture''
Being cultural bits that don't fit elsewhere.
* [[Terminology]]

''Game Mechanics''
Game notes that are metatextual are usually separated out with the tag [[game mechanics]].
<<list filter "[tag[game mechanics]]">>
The technical college for the area. Despite the name, the SIT is no longer affiliated with the state college system, but it is a public college. It mostly deals with technical matters. 

Critics say that it exists primarily to feed the ravenous maw of the local tech scene and that it turns out drones instead of thinkers&mdash;but they are well learned drones, for all of that. There certainly are professors whose experiments are on the cutting edge, and in fact a bequest from the Judas Strange Foundation requires experiments that are risky.

The SIT campus is on the edge of town. It has a complex maze of delivery and steam tunnels underneath it that make it well-suited for criminal lairs, but the criminals in question are usually creating or growing dope.

''Note''

Basically, SIT exists for technological stuff and [[Enoch Strange College]] exists for the occult and liberal arts connections.
A weekly with excellent investigative journalism. Founded in the early 1970s. Leans liberal or Democrat.
Teenagers who have banded together in the absence of the [[Magnificent Centurions]]:

* Aria
* Identity Thief (or ID)
* Backspace
* Gateway
* Growth Spurt
* Argus
Two of the stations are network affiliates. The networks do local news, but most of the programming is imported. The half station is part of the educational process at Nugget College, a private institution in town. Its programming is entirely local and changes with each semester. Some shows have a continuity because students stay with them from term to term, but all of them change once in a while.

''Ideas''
* Annoying or sycophantic questions will probably come from reporters at the network affiliates; truly oddball shows and &ldquo;events&rdquo; will come from [[Nugget College]] as a student experiment. Sometimes a new reporter is looking to make a name and get hired by a bigger station somewhere.
I know James hates invented slang, but there simply would be in-terms that the various groups use. I've tried to lift them from other subcultures.
* //Civilian// Someone who isn't in the life. Also called a //straight// or a //norm//. Supervillains tend to use the word //citizen//.
* //In the life// Being a parahuman, involved with the superhero-supervillain lifestyle.
* //Pass// People with powers who look normal &ldquo;pass&rdquo; So Superman or Johnny Storm passes. Metamorpho or Ben Grimm does not pass. As a side effect, people who can pass tend to have costumes; people who cannot don't.
* //Super// Having powers. Sometimes this gets used for people with high levels of training who can move with powered people, but some folks make a distinction. (Know your audience.)
 
Daily newspaper. Part of a chain. Leans conservative.
[[Ascenders]] 
Thoughts on how one might do troupe play with superheroes.

* First of all, obviously, each player controls multiple characters.
* Characters for our purposes act at one of four levels: neighbourhood, city, nation, or global. Characters can easily move between their current level and the next (a neighbourhood hero might handle something at the city level, for instance, or a national-level hero can handle an adventure in a single city). Moving more levels is not impossible but generally requires some plot sugar, like the neighbourhood hero kidnapped by aliens who becomes part of some interstellar hijinks.
* Note that the //level// has nothing to do with power, but in some systems it's easier to make them match (for example, in //Mutants &amp; Masterminds// it's easy to say the various tiers are PL8, PL10, PL12, and PL14, but they don't //have// to be. Really we're talking about the //scope// of their activities.
* Experience is per //player// and not per //character//. If James, playing Springtail and the Acrobatic Flea, has the Flea stop a major smuggling operation, Springtail might well get the Corrosion Touch she's been talking about but never shown.
* To facilitate this, experience is handed out at the end of the adventure, not at the end of the session.

Those are off the top of my head; thoughts are welcome and we'll re-visit this as 
/***
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 = 'jhmcmullen';

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

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

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

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

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

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

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

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

});
//}}}
Jugal Amaranth, born with the mutant ability to open any lock. He is trying to go straight but people know about his power. 

(There are locks he can’t open but he’s never met them.)
These are NPC names that aren't assigned to anyone or anything; as things are created, they will move out of here into their own entries.
* Sandra J. Allan
* Mia Berg
* Pamela Bobo
* Caroline R. Bratton
* Rabeea Leena Cham
* Edward C. Chiles
* Kimberly Lloyd Dodgen
* Gertrude Opal Garrison (goes by &ldquo;Opal&rdquo;)
* Joan E. Hildebrandt
* Linda Isham
* Tom Kugler
* Benjamin Kumar
* Michael Lauver
* Ida Magnussen
* Lorine J. Maples
* Howard V. Miller
* Danielle Mitchel
* Anthony Otto
* Virginia Scott
* Ronald Sibley
* Palmer Spivey
* Mary Turner
* Nydia van Deursen
* James Vasquez
* Patricia Walker
* Scott Williams
| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |
| 05/08/2020 15:31:48 | JHMcMullen | [[/|http://jhmcmullen.tiddlyspot.com/#AdvancedOptions]] | [[store.cgi|http://jhmcmullen.tiddlyspot.com/store.cgi]] | . | [[index.html | http://jhmcmullen.tiddlyspot.com/index.html]] | . |
| 05/08/2020 15:44:16 | JHMcMullen | [[/|http://jhmcmullen.tiddlyspot.com/]] | [[store.cgi|http://jhmcmullen.tiddlyspot.com/store.cgi]] | . | [[index.html | http://jhmcmullen.tiddlyspot.com/index.html]] | . |
| 10/08/2020 08:37:06 | jhmcmullen | [[/|http://jhmcmullen.tiddlyspot.com/]] | [[store.cgi|http://jhmcmullen.tiddlyspot.com/store.cgi]] | . | [[index.html | http://jhmcmullen.tiddlyspot.com/index.html]] | . |
| 22/08/2020 13:25:36 | jhmcmullen | [[/|http://jhmcmullen.tiddlyspot.com/]] | [[store.cgi|http://jhmcmullen.tiddlyspot.com/store.cgi]] | . | [[index.html | http://jhmcmullen.tiddlyspot.com/index.html]] | . |
| 01/10/2020 11:52:16 | jhmcmullen | [[/|http://jhmcmullen.tiddlyspot.com/]] | [[store.cgi|http://jhmcmullen.tiddlyspot.com/store.cgi]] | . | [[index.html | http://jhmcmullen.tiddlyspot.com/index.html]] | . | ok |
| 01/10/2020 11:53:04 | jhmcmullen | [[/|http://jhmcmullen.tiddlyspot.com/]] | [[store.cgi|http://jhmcmullen.tiddlyspot.com/store.cgi]] | . | [[index.html | http://jhmcmullen.tiddlyspot.com/index.html]] | . | ok |
| 01/10/2020 12:07:26 | jhmcmullen | [[/|http://jhmcmullen.tiddlyspot.com/]] | [[store.cgi|http://jhmcmullen.tiddlyspot.com/store.cgi]] | . | [[index.html | http://jhmcmullen.tiddlyspot.com/index.html]] | . | ok |
| 01/10/2020 14:56:05 | jhmcmullen | [[/|http://jhmcmullen.tiddlyspot.com/]] | [[store.cgi|http://jhmcmullen.tiddlyspot.com/store.cgi]] | . | [[index.html | http://jhmcmullen.tiddlyspot.com/index.html]] | . | ok |
| 01/10/2020 15:53:54 | jhmcmullen | [[/|http://jhmcmullen.tiddlyspot.com/]] | [[store.cgi|http://jhmcmullen.tiddlyspot.com/store.cgi]] | . | [[index.html | http://jhmcmullen.tiddlyspot.com/index.html]] | . | ok |
| 01/10/2020 16:00:09 | jhmcmullen | [[/|http://jhmcmullen.tiddlyspot.com/]] | [[store.cgi|http://jhmcmullen.tiddlyspot.com/store.cgi]] | . | [[index.html | http://jhmcmullen.tiddlyspot.com/index.html]] | . |
/***
|''Name:''|UploadPlugin|
|''Description:''|Save to web a TiddlyWiki|
|''Version:''|4.1.3|
|''Date:''|Feb 24, 2008|
|''Source:''|http://tiddlywiki.bidix.info/#UploadPlugin|
|''Documentation:''|http://tiddlywiki.bidix.info/#UploadPluginDoc|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0|
|''Requires:''|PasswordOptionPlugin|
***/
//{{{
version.extensions.UploadPlugin = {
	major: 4, minor: 1, revision: 3,
	date: new Date("Feb 24, 2008"),
	source: 'http://tiddlywiki.bidix.info/#UploadPlugin',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	coreVersion: '2.2.0'
};

//
// Environment
//

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

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

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

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

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

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

//
// uploadOptions Macro
//

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

//
// upload functions
//

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

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

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

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

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

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

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

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

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

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

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

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

//
// Utilities
// 

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

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

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

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

//
// Initializations
//

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

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

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

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


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


//}}}

Giant robots that hunt and capture or kill non-humans.

I mean, clearly a substitute for a certain other giant robot, which in turn is a ripoff of a comic book giant robot.
We know he can resist a nuke.

From the name, probably super strong and electrical.
Mob family, created by non-Italians and named after the character in //The Princess Bride//.

They have a history rather like a certain gang in Quebec: originally started by the police as a fake mob family to investigate the others, some of the detectives involved really liked the money, so they brought in real criminals. They still co-operate enough to get members of //other// families convicted.

Other crime organizations tend to be referred to by ethnicity: the [[Irish Mob]], the [[Jamaicans]], the [[Russians]].
@@font-weight:bold;font-size:1.3em;color:#444; //Welcome!// &nbsp;&nbsp;@@ 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://jhmcmullen.tiddlyspot.com/controlpanel]] (your control panel username is //jhmcmullen//).
<<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.
Doctor who has become vampire-like, and occasionally suffers mental breaks where he imagines he is Dracula, lord of the vampires, and who has been trapped in an inferior body, and all he has to do is perform whatever ritual to get his //real// body back.

The ritual of choice is generally complicated by the fact that there is a [[Dracula]] although he is currently dead or trapped.
The ion cannons are Kirbytech provided by the [[Magnificent Centurions]] at some time in the past. They are slow to energize (take several rounds) and cause tremendous amounts of damage; imagine a tank but on a trailer, and more dangerous.

There are materials that are proof against ion cannons, but they are pretty much the nuclear option.

[[PRAT]] is very proud of its ion cannons and Captain [[Matt Strong]] is eager to use them.
Power neutralization or absorption technology. There are commonly two forms:
* //Personal restraints// are carried by law enforcement personnel (and available to other buyers). They work on pretty much all powers but are limited in how much they can nullify and for how long. They are normally available as collars with locks, but there are manacles as well. They are good enough, but can be defeated if you pick the lock, exert yourself consistently enough to drain the battery, overpower them, or such-like.
* //Room restraints// are limited to a room and can restrain more superpowers but at the cost of being more specific. Defeat these by leaving (duh!) or by having a power that they haven't programmed in. That is, if identical twins have different powers and can contrive for each to be locked in the cell of the other, they can use their powers. By default, the room does exactly what the personal restraints do: neutralize //everything// at a lower level than if they were fine-tuned.