Welcome to TiddlyWiki created by Jeremy Ruston; Copyright © 2004-2007 Jeremy Ruston, Copyright © 2007-2011 UnaMesa Association
|''Type:''|file|
|''URL:''|https://tiddlytools.github.io/|
|''Workspace:''|(default)|
This tiddler was automatically created to record the details of this server
Grants the Aegis Guard a shield that absorbs 300 damage. When the shield takes fatal damage, it releases a pulse of energy that knocks back nearby ground units. The shield refreshes to full every 60 seconds.
!![[Aegis Guard]]
Royal Guard heavy assault infantry.
Can attack ground units.
[img[https://bnetcmsus-a.akamaihd.net/cms/page_media/D497EK83CWSS1572391216926.png]]
!Stats
Sight: 10
Cost: <<tiddler Costs with:"125" "350" "30" "4">>
Speed: 2.25
Hit Points: 300 + 75 per Rank (max 525)
Armor: 1 + 1 per Rank (max 4)
Tags: Armored, Biological, Ground
Weapon: Punisher Grenades
Damage: 20 (+20 vs Armored) (max 35/70)
Upgrades: +5/+10 per Rank
Targets: ground
Cooldown: 1.5 <<tiddler Time>> (0.5 during [[High Grade Stimpacks]])
Range: 6
!!Ability Card
| [[Move]] | [[Stop]] | [[Hold Position]] | [[Patrol]] | [[Attack]] |
| <<tiddler [[IMG##Royal Guard of the Dominion (Marauder)]]>>+++^*@<<tiddler [[Royal Guard of the Dominion (Marauder)]]>>=== | <<tiddler [[IMG##Might of the Empire (Marauder)]]>>+++^*@<<tiddler [[Might of the Empire (Marauder)]]>>=== | <<tiddler [[IMG##Aegis Barrier]]>>+++^*@<<tiddler [[Aegis Barrier]]>>=== | <<tiddler [[IMG##Incapacitator Shells]]>>+++^*@<<tiddler [[Incapacitator Shells]]>>=== ||
| <<tiddler [[IMG##High Grade Stimpacks]]>>+++^*@<<tiddler [[High Grade Stimpacks]]>>=== |||||
![[Talents|MengskTalents]]
<<tiddler [[MengskTalent##6]]>><<tiddler [[MengskTalent##8]]>><<tiddler [[MengskTalent##15]]>>
Movement speed increased by <d ref="$UpgradeEffectArrayValue:VikingMengskSpeed:Unit,VikingMengskFighter,Speed$/Unit,VikingMengskFighter,Speed*100" player="0"/>%.
Further increases the range of units within Supply Bunkers by +<d ref="$UpgradeEffectArrayValue:BunkerDepotMengskRange:Behavior,BunkerMengskWeaponRangeBonus,Modification.WeaponRange$"/>.
Doubles the Imperial Support Indoctrinated Laborers and Troopers provide.
Arms the Silo with a Tactical Missile.<n/><n/>Tactical Missiles take <d ref="Effect,GhostMengskNukeCP,InitialDelay + Effect,GhostMengskNukeCP,ExpireDelay + Effect,GhostMengskNukeDetonateCP,InitialDelay"/> seconds to land, but they deal up to <d ref="Effect,GhostMengskNukeDamage,Amount"/> (+<d ref="Effect,GhostMengskNukeDamage,AttributeBonus[Structure]"/> vs. structures) damage in a small radius.<n/><n/>Use an Emperor's Shadow to designate the target.
Allows Shock Divisions in Siege Mode to fire at air units at a reduced rate while being carried by an Imperial Intercessor. This Imperial Intercessor's abilities are disabled while the Shock Division on board.
Transforms the Sky Fury to Assault Mode. In this mode Sky Furies move on the ground and can only attack ground targets.
/***
|Name|AutoTaggerPlugin|
|Source|http://www.TiddlyTools.com/#AutoTaggerPlugin|
|Documentation|http://www.TiddlyTools.com/#AutoTaggerPluginInfo|
|Version|1.8.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|Tag tiddlers with date, author, etc. and/or scan the tiddler for any tags that are embedded in the content|
~AutoTagger ''automatically generates tag values for all newly created or edited tiddlers''
!!!!!Documentation
> see [[AutoTaggerPluginInfo]]
!!!!!Configuration
<<<
|<<option chkAutoTagAuthor>> add 'created by' author tag //(when a tiddler is first created)//||
|<<option chkAutoTagEditor>> add 'edited by' author tag //(when a tiddler is updated)//||
|<<option chkAutoTagDate>> add 'creation date' tag, using date format:|<<option txtAutoTagFormat>>|
|<<option chkAutoTagModDate>> add 'modification date' tag, using date format:|<<option txtAutoTagModFormat>>|
|<<option chkAutoTagNewTags>> add default tag(s) when creating new tiddlers:|<<option txtAutoTagNewTags>>|
|<<option chkAutoTagDefault>> add default tag(s) when saving tiddlers that are not otherwise tagged:|<<option txtAutoTagDefault>>|
|<<option chkAutoTagTrigger>> scan tiddler content for matching tags when tagged with:|<<option txtAutoTagTrigger>>|
|<<option chkAutoTagAliases>> replace 'aliased' tags using definitions contained in:|<<option txtAutoTagAliases>>|
|borderless|k
<<<
!!!!!Revisions
<<<
2010.06.30 1.8.0 in saveTiddler(), added extra checks for valid alias definitions
| Please see [[AutoTaggerPluginInfo]] for previous revision details |
2005.08.15 1.0.0 Initial Release
<<<
!!!!!Code
***/
//{{{
version.extensions.AutoTaggerPlugin= {major: 1, minor: 8, revision: 0, date: new Date(2010,6,30)};
var co=config.options; // shorthand temp variable
if (co.chkAutoTagDate==undefined) co.chkAutoTagDate=false;
if (co.chkAutoTagModDate==undefined) co.chkAutoTagModDate=false;
if (co.chkAutoTagEditor==undefined) co.chkAutoTagEditor=false;
if (co.chkAutoTagAuthor==undefined) co.chkAutoTagAuthor=false;
if (co.chkAutoTagTrigger==undefined) co.chkAutoTagTrigger=false;
if (co.txtAutoTagTrigger==undefined) co.txtAutoTagTrigger="auto";
if (co.chkAutoTagDefault==undefined) co.chkAutoTagDefault=false;
if (co.txtAutoTagDefault==undefined) co.txtAutoTagDefault="untagged";
if (co.txtAutoTagFormat==undefined) co.txtAutoTagFormat="YYYY.0MM.0DD";
if (co.txtAutoTagModFormat==undefined) co.txtAutoTagModFormat="YYYY.0MM.0DD";
if (co.chkAutoTagNewTags==undefined) co.chkAutoTagNewTags=false;
if (co.txtAutoTagNewTags==undefined) co.txtAutoTagNewTags="";
if (co.chkAutoTagAliases==undefined) co.chkAutoTagAliases=true;
if (co.txtAutoTagAliases==undefined) co.txtAutoTagAliases="AutoTaggerAliases";
// hijack displayTiddler()
Story.prototype.autotagger_displayTiddler=Story.prototype.displayTiddler;
Story.prototype.displayTiddler=function(srcElement,tiddler,template,animate,unused,customFields,toggle)
{
var title=(tiddler instanceof Tiddler)?tiddler.title:tiddler;
this.autotagger_displayTiddler.apply(this,arguments);
if (!config.options.chkAutoTagNewTags) return; // IF add new tags is enabled
if (!story.isDirty(title)) return; // AND tiddler is being edited
if (store.tiddlerExists(title)) return; // AND tiddler doesn't exist
var newtags=config.options.txtAutoTagNewTags.readBracketedList(); // get new tags
for (var t=0; t<newtags.length; t++)
story.setTiddlerTag(title,newtags[t],+1); // preload tag edit field
}
// hijack saveTiddler()
TiddlyWiki.prototype.autotagger_SaveTiddler=TiddlyWiki.prototype.saveTiddler;
TiddlyWiki.prototype.saveTiddler=function(title,newTitle,newBody,modifier,modified,tags,fields)
{
var co=config.options; // shorthand temp variable
var newTags = [];
if (tags) newTags = (typeof tags == "string") ? tags.readBracketedList() : tags;
var txt=store.getTiddlerText(config.options.txtAutoTagAliases,'')
if (config.options.chkAutoTagAliases && txt.length) {
// replace tag aliases with one or more other tags
var map={};
var list=txt.split('\n');
for (var i=0; i<list.length; i++) {
var parts=list[i].split('=');
var name=parts.shift(); var val=parts.join('=');
if (val.length) map[name]=val.readBracketedList();
}
for (var a in map) if (newTags.contains(a)) {
newTags.splice(newTags.indexOf(a),1); // remove alias
for (var i=0; i<map[a].length; i++) // add replacements
newTags.pushUnique(map[a][i]);
}
}
var now=new Date().formatString(co.txtAutoTagFormat);
if (co.chkAutoTagDate && (store.getTiddler(title)==undefined))
if (newTitle!=now) newTags.pushUnique(now); // created date - don't add to journals
if (co.chkAutoTagAuthor && (store.getTiddler(title)==undefined))
newTags.pushUnique(co.txtUserName); // creator
if (co.chkAutoTagEditor && store.getTiddler(title))
newTags.pushUnique(co.txtUserName); // modifier
if (co.chkAutoTagModDate && store.getTiddler(title))
newTags.pushUnique(new Date().formatString(co.txtAutoTagModFormat)); // modified
var allTags = store.getTags(); // scan content for tags
if (co.chkAutoTagTrigger && co.txtAutoTagTrigger.length && newTags.contains(co.txtAutoTagTrigger))
for (var t=0; t<allTags.length; t++) {
if (allTags[t][0]=='systemConfig') continue; // don't add 'systemConfig'
if ((newBody.indexOf(allTags[t][0])!=-1) || (newTitle.indexOf(allTags[t][0])!=-1))
newTags.pushUnique(allTags[t][0]); // autotag
}
for (var t=0; t<newTags.length; t++)
newTags[t]=String.encodeTiddlyLink(newTags[t]); // add brackets around tags
if (!newTags.length && co.chkAutoTagDefault && co.txtAutoTagDefault.length)
newTags.push(co.txtAutoTagDefault); // untagged - add default tag
arguments[5]=newTags.join(" ");
return this.autotagger_SaveTiddler.apply(this,arguments);
}
//}}}
/***
|Name|AutoTaggerPlugin|
|Source|http://www.TiddlyTools.com/#AutoTaggerPlugin|
|Documentation|http://www.TiddlyTools.com/#AutoTaggerPluginInfo|
|Version|1.8.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|documentation|
|Description|documentation for AutoTaggerPlugin|
~AutoTagger ''automatically generates tag values for all newly created or edited tiddlers''
!!!!!Usage
<<<
Whenever you //create a new tiddler//, ~AutoTagger can add various tags for you:
* original author
* creation date
* default tag(s) (pre-loaded into tiddler editor)
* default tag(s) (when saving tiddlers that are not otherwise tagged)
Whenever you //edit an existing tiddler//, ~AutoTagger can add various tags for you:
* most recent author
* modification date
* default tag(s) (when saving tiddlers that are not otherwise tagged)
If you enter ''//auto//'' as a tiddler tag value, ~AutoTagger ''scans the tiddler content'' (including title) for text that matches any existing tags, and ''automatically adds any embedded tags that it finds''.
You can also create a tiddler that defines a set of [[AutoTaggerAliases]] to ''replace a single tag with one or more alternative tags''. The alias definitions use this format:
{{{
aliastag=tag1 tag2 tag3...
aliastag=tag4 tag5 tag6...
etc.
}}}
Notes:
* After the new tags have been added to the tiddler, they are treated just as if you had entered them by hand and can be edited to make any changes you want.
* As long as the "auto" tag is still present on a tiddler, ~AutoTagger will re-scan that tiddler's content each time it is edited. If you DO edit the generated tags, you can remove the "auto" tag from the tiddler to prevent it from being re-scanned when you press 'done' to finish editing. If you have set the "auto" tag on a tiddler, and then add several tags to your document, those tags will ''not'' be automatically added to the tiddler until you actually edit that tiddler and press 'done' to trigger an AutoTagger scan. The special-purpose ''"systemConfig" tag is never added automatically, even if matched in the tiddler content'', since this tag should be added manually to ensure it is always used appropriately.
*@@display:inline;Normally, aliases are removed and replaced by the indicated alternatives defined in the [[AutoTaggerAliases]] configuration. To retain an original alias tag (in addition to it's substitutes), include it in it's set of substitutes, like this:
{{{
aliastag=aliasgtag tag1 tag2 tag3...
}}}
@@
*@@display:inline;Alias definitions are processed in the order they occur in [[AutoTaggerAliases]]. If a given alias definition includes another alias that occurs after it in the configuration, the second alias will be replaced when it's definition is processed.
{{{
aliastag=tag1 anotheraliastag tag2...
anotheraliastag=tag3 tag4...
}}}
which results in: {{{tag1 tag2 tag3 tag4}}}
@@
<<<
!!!!!Configuration
<<<
|<<option chkAutoTagAuthor>> add 'created by' author tag //(when a tiddler is first created)//||
|{{{<<option chkAutoTagAuthor>>}}}||
|<<option chkAutoTagEditor>> add 'edited by' author tag //(when a tiddler is updated)//||
|{{{<<option chkAutoTagEditor>>}}}||
|<<option chkAutoTagDate>> add 'creation date' tag, using date format:|<<option txtAutoTagFormat>>|
|{{{<<option chkAutoTagDate>>}}}|{{{<<option txtAutoTagFormat>>}}}|
|<<option chkAutoTagModDate>> add 'modification date' tag, using date format:|<<option txtAutoTagModFormat>>|
|{{{<<option chkAutoTagModDate>>}}}|{{{<<option txtAutoTagModFormat>>}}}|
|<<option chkAutoTagNewTags>> add default tag(s) when creating new tiddlers:|<<option txtAutoTagNewTags>>|
|{{{<<option chkAutoTagNewTags>>}}}|{{{<<option txtAutoTagNewTags>>}}}|
|<<option chkAutoTagDefault>> add default tag(s) when saving tiddlers that are not otherwise tagged:|<<option txtAutoTagDefault>>|
|{{{<<option chkAutoTagDefault>>}}}|{{{<<option txtAutoTagDefault>>}}}|
|<<option chkAutoTagTrigger>> scan tiddler content for matching tags when tagged with:|<<option txtAutoTagTrigger>>|
|{{{<<option chkAutoTagTrigger>>}}}|{{{<<option txtAutoTagTrigger>>}}}|
|<<option chkAutoTagAliases>> replace 'aliased' tags using definitions contained in:|<<option txtAutoTagAliases>>|
|{{{<<option chkAutoTagAliases>>}}}|{{{<<option txtAutoTagAliases>>}}}|
|borderless|k
<<<
!!!!!Revisions
<<<
2010.06.30 1.8.0 in saveTiddler(), added extra checks for valid alias definitions
2008.03.29 1.7.1 in displayTiddler(), get title from tiddler object (if needed). Fixes errors caused when calling function passes a tiddler *object* instead of a tiddler *title*
2008.03.27 1.7.0 added aliasing (using [[AutoTaggerAliases]] definition)
2008.03.11 [*.*.*] plugin size reduction - moved documentation to [[AutoTaggerPluginInfo]]
2007.10.18 1.6.0 hijack displayTiddler() to add option to use default tags when creating new tiddlers (preloads tag edit field). Based on requests from RA and DavidWinfield.
2007.06.28 1.5.1 in hijack of saveChanges(), use apply() to allow additional params (such as "fields") to be correctly passed through to the core
2007.03.14 1.5.0 added support for tagging tiddlers with modification date
2007.01.20 1.4.1 don't add create date tag to dated journal tiddlers (based on request from ConalElliot)
2006.12.10 1.4.0 added option to use default tag value when no tags are specified
2006.08.29 1.3.3 use newTags.contains() instead of newTags.find() to check for 'auto' tag
2006.06.15 1.3.2 hijack TiddlyWiki.prototype.saveTiddler instead of store.saveTiddler. Permits other plugins to also hijack the function (thanks to Simon Baird for finding this!)
2006.05.31 1.3.1 Re-assemble tags into a space-separated string (use encodeTiddlyLink to add {{{[[...]]}}} as needed) before passing it on to core (or other hijacked function)
2005.10.09 1.3.0 Added 'edited by' tagging. Combined documentation and code into a single tiddler
2005.08.16 1.2.0 Added optional scanning for tags in tiddler content (based on suggestion from Jacques Turbé)
2005.08.15 1.1.0 Added 'created by' tag generation (based on suggestion from Elise Springer). Renamed from DateTag to AutoTagger
2005.08.15 1.0.0 Initial Release
<<<
Killing an enemy unit grants one stack.
Each stack grants 10% increased attack speed and regenerates 1 life per second for 30 seconds.
Can stack up to 20 times.
!![[Blackhammer]]
Royal Guard heavy assault mech. Can use Overwatch Mode.
Can attack ground and air units.
[img[https://bnetcmsus-a.akamaihd.net/cms/page_media/ZIAPO4EHX6BX1572391215688.png]]
[img[https://vignette.wikia.nocookie.net/starcraft/images/e/e3/HighImpactPayload_LotVGame_1.png/revision/latest/scale-to-width-down/30?cb=20170115164336]] Overwatch Mode
| !Level | !Talent |
|09 - New Unit: Blackhammer|Royal Guard heavy assault mech. Can use Overwatch Mode.|
|14 - Advanced Royal Guard Upgrade Cache|Unlocks the following upgrades:<br>-Blackhammers grant 3 armor to units positioned beneath them (Researched at the Armory).|
|15 - Promotion Granted|Royal Guard units can now attain Veterancy: Rank 3, gaining the following abilities:<br>-Increases the attack speed of Blackhammers in Overwatch Mode.|
Bombards a target location, randomly delivering payloads near that location, which deal <d ref="Effect,ArtilleryMengskBombardmentDamage,Amount"/> damage to enemy ground units.
Contains upgrades for Factory and Starport units. <n/><n/><c val="ffff8a">Enables:</c><n/>- Blackhammers at the Factory
Royal Guard Infantry-production facility.<n/><n/><c val="ffff8a">Enables:</c><n/>- Aegis Guards
Order nearby [[Dominion Laborer]]s to don [[Dominion Trooper]] suits at a [[Enlistment Center]] or [[Supply Bunker]].
Cooldown: 5 <<tiddler Time>>
Order nearby [[Dominion Trooper]]s to don [[Dominion Laborer]] suits at a [[Enlistment Center]] or [[Supply Bunker]].
Cooldown: 5 <<tiddler Time>>
/***
|Name:|CloseOnCancelPlugin|
|Description:|Closes the tiddler if you click new tiddler then cancel. Default behaviour is to leave it open|
|Version:|3.0.1a|
|Date:|27-Jun-2011|
|Source:|http://mptw.tiddlyspot.com/#CloseOnCancelPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
***/
//{{{
merge(config.commands.cancelTiddler,{
handler_mptw_orig_closeUnsaved: config.commands.cancelTiddler.handler,
handler: function(event,src,title) {
this.handler_mptw_orig_closeUnsaved(event,src,title);
if (!story.isDirty(title) && !store.tiddlerExists(title) && !store.isShadowTiddler(title))
story.closeTiddler(title,true);
return false;
}
});
//}}}
|>|>|>|>|>|>|[[Layout1|CommanderPrestige]] - [[Layout2|CommanderPrestige4]]|
|>|>|>|>|>|>|For suggestions, requests and feedbacks post a reply [[here|https://www.reddit.com/r/starcraft2coop/comments/hwn2rk/fancy_table_with_commander_guides_and_the_new/]].|
|>|>|>|>|>|>|[[STARCRAFT II 5.0 PATCH NOTES - BLIZZARD ENTERTAINMENT - JULY 27, 2020|https://starcraft2.com/en-us/news/23482838]]<br>CO-OP COMMANDER PRESTIGE<br>A new “Prestige” system has been added that allows players to play through the level 1-15 progression up to three additional times per commander.<br>Each time a player activates Prestige with a given commander, they will unlock a unique Prestige Talent, which can be used to change the core gameplay of the commander.<br>Only one Prestige Talent may be equipped at a time for each commander and it is possible that a player equips none of these talents, in which case, the commander will receive their standard loadout.<br>With 18 commanders and 3 Prestige Talents per commander, this means there are 54 new Prestige Talents to try out.|
|>|>|>|>|>|>|<<tiddler Subsourian>>|
|>|>|>|>|>|>|<<tiddler CoopXpTable>>|
|>|>|>|>|>|>|<<tiddler CtG>>|
|>|>|>|>|>|>| <html><a name="ToC" /></html><<tiddler PrestData##TableOfContents>> |
|<<tiddler [[PrestData##Raynor]]>><br><<tiddler [[PrestData##RaynorMasteries]]>>|!lvl|!Prestige Talents|!Posts|!Videos|>| !Raynor<html><a name="Raynor" /></html>+++*@ <html><a name="ToC" /></html><<tiddler PrestData##TableOfContents>> === |
|~|0|<<tiddler [[PrestData##RaynorPrestige0Name]]>>|<<tiddler [[PrestData##RaynorPrestige0Posts]]>>|<<tiddler [[PrestData##RaynorPrestige0Videos]]>>|Advantage|<<tiddler [[PrestData##RaynorPrestige0Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##RaynorPrestige0Disadvantage]]>>|
|~|1|<<tiddler [[PrestData##RaynorPrestige1Name]]>>|<<tiddler [[PrestData##RaynorPrestige1Posts]]>>|<<tiddler [[PrestData##RaynorPrestige1Videos]]>>|Advantage|<<tiddler [[PrestData##RaynorPrestige1Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##RaynorPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##RaynorPrestige2Name]]>>|<<tiddler [[PrestData##RaynorPrestige2Posts]]>>|<<tiddler [[PrestData##RaynorPrestige2Videos]]>>|Advantage|<<tiddler [[PrestData##RaynorPrestige2Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##RaynorPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##RaynorPrestige3Name]]>>|<<tiddler [[PrestData##RaynorPrestige3Posts]]>>|<<tiddler [[PrestData##RaynorPrestige3Videos]]>>|Advantage|<<tiddler [[PrestData##RaynorPrestige3Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##RaynorPrestige3Disadvantage]]>>|
|>|>|>|>|>|>| <html><a name="ToC" /></html><<tiddler PrestData##TableOfContents>> |
|<<tiddler [[PrestData##Kerrigan]]>><br><<tiddler [[PrestData##KerriganMasteries]]>>|!lvl|!Prestige Talents|!Posts|!Videos|>|!Kerrigan<html><a name="Kerrigan" /></html>+++*@ <html><a name="ToC" /></html><<tiddler PrestData##TableOfContents>> ===|
|~|0|<<tiddler [[PrestData##KerriganPrestige0Name]]>>|<<tiddler [[PrestData##KerriganPrestige0Posts]]>>|<<tiddler [[PrestData##KerriganPrestige0Videos]]>>|Advantage|<<tiddler [[PrestData##KerriganPrestige0Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##KerriganPrestige0Disadvantage]]>>|
|~|1|<<tiddler [[PrestData##KerriganPrestige1Name]]>>|<<tiddler [[PrestData##KerriganPrestige1Posts]]>>|<<tiddler [[PrestData##KerriganPrestige1Videos]]>>|Advantage|<<tiddler [[PrestData##KerriganPrestige1Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##KerriganPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##KerriganPrestige2Name]]>>|<<tiddler [[PrestData##KerriganPrestige2Posts]]>>|<<tiddler [[PrestData##KerriganPrestige2Videos]]>>|Advantage|<<tiddler [[PrestData##KerriganPrestige2Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##KerriganPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##KerriganPrestige3Name]]>>|<<tiddler [[PrestData##KerriganPrestige3Posts]]>>|<<tiddler [[PrestData##KerriganPrestige3Videos]]>>|Advantage|<<tiddler [[PrestData##KerriganPrestige3Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##KerriganPrestige3Disadvantage]]>>|
|>|>|>|>|>|>| <html><a name="ToC" /></html><<tiddler PrestData##TableOfContents>> |
|<<tiddler [[PrestData##Artanis]]>><br><<tiddler [[PrestData##ArtanisMasteries]]>>|!lvl|!Prestige Talents|!Posts|!Videos|>|!Artanis<html><a name="Artanis" /></html>+++*@ <html><a name="ToC" /></html><<tiddler PrestData##TableOfContents>> ===|
|~|0|<<tiddler [[PrestData##ArtanisPrestige0Name]]>>|<<tiddler [[PrestData##ArtanisPrestige0Posts]]>>|<<tiddler [[PrestData##ArtanisPrestige0Videos]]>>|Advantage|<<tiddler [[PrestData##ArtanisPrestige0Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##ArtanisPrestige0Disadvantage]]>>|
|~|1|<<tiddler [[PrestData##ArtanisPrestige1Name]]>>|<<tiddler [[PrestData##ArtanisPrestige1Posts]]>>|<<tiddler [[PrestData##ArtanisPrestige1Videos]]>>|Advantage|<<tiddler [[PrestData##ArtanisPrestige1Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##ArtanisPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##ArtanisPrestige2Name]]>>|<<tiddler [[PrestData##ArtanisPrestige2Posts]]>>|<<tiddler [[PrestData##ArtanisPrestige2Videos]]>>|Advantage|<<tiddler [[PrestData##ArtanisPrestige2Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##ArtanisPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##ArtanisPrestige3Name]]>>|<<tiddler [[PrestData##ArtanisPrestige3Posts]]>>|<<tiddler [[PrestData##ArtanisPrestige3Videos]]>>|Advantage|<<tiddler [[PrestData##ArtanisPrestige3Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##ArtanisPrestige3Disadvantage]]>>|
|>|>|>|>|>|>| <html><a name="ToC" /></html><<tiddler PrestData##TableOfContents>> |
|<<tiddler [[PrestData##Swann]]>><br><<tiddler [[PrestData##SwannMasteries]]>>|!lvl|!Prestige Talents|!Posts|!Videos|>|!Swann<html><a name="Swann" /></html>+++*@ <html><a name="ToC" /></html><<tiddler PrestData##TableOfContents>> ===|
|~|0|<<tiddler [[PrestData##SwannPrestige0Name]]>>|<<tiddler [[PrestData##SwannPrestige0Posts]]>>|<<tiddler [[PrestData##SwannPrestige0Videos]]>>|Advantage|<<tiddler [[PrestData##SwannPrestige0Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##SwannPrestige0Disadvantage]]>>|
|~|1|<<tiddler [[PrestData##SwannPrestige1Name]]>>|<<tiddler [[PrestData##SwannPrestige1Posts]]>>|<<tiddler [[PrestData##SwannPrestige1Videos]]>>|Advantage|<<tiddler [[PrestData##SwannPrestige1Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##SwannPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##SwannPrestige2Name]]>>|<<tiddler [[PrestData##SwannPrestige2Posts]]>>|<<tiddler [[PrestData##SwannPrestige2Videos]]>>|Advantage|<<tiddler [[PrestData##SwannPrestige2Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##SwannPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##SwannPrestige3Name]]>>|<<tiddler [[PrestData##SwannPrestige3Posts]]>>|<<tiddler [[PrestData##SwannPrestige3Videos]]>>|Advantage|<<tiddler [[PrestData##SwannPrestige3Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##SwannPrestige3Disadvantage]]>>|
|>|>|>|>|>|>| <html><a name="ToC" /></html><<tiddler PrestData##TableOfContents>> |
|<<tiddler [[PrestData##Zagara]]>><br><<tiddler [[PrestData##ZagaraMasteries]]>>|!lvl|!Prestige Talents|!Posts|!Videos|>|!Zagara<html><a name="Zagara" /></html>+++*@ <html><a name="ToC" /></html><<tiddler PrestData##TableOfContents>> ===|
|~|0|<<tiddler [[PrestData##ZagaraPrestige0Name]]>>|<<tiddler [[PrestData##ZagaraPrestige0Posts]]>>|<<tiddler [[PrestData##ZagaraPrestige0Videos]]>>|Advantage|<<tiddler [[PrestData##ZagaraPrestige0Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##ZagaraPrestige0Disadvantage]]>>|
|~|1|<<tiddler [[PrestData##ZagaraPrestige1Name]]>>|<<tiddler [[PrestData##ZagaraPrestige1Posts]]>>|<<tiddler [[PrestData##ZagaraPrestige1Videos]]>>|Advantage|<<tiddler [[PrestData##ZagaraPrestige1Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##ZagaraPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##ZagaraPrestige2Name]]>>|<<tiddler [[PrestData##ZagaraPrestige2Posts]]>>|<<tiddler [[PrestData##ZagaraPrestige2Videos]]>>|Advantage|<<tiddler [[PrestData##ZagaraPrestige2Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##ZagaraPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##ZagaraPrestige3Name]]>>|<<tiddler [[PrestData##ZagaraPrestige3Posts]]>>|<<tiddler [[PrestData##ZagaraPrestige3Videos]]>>|Advantage|<<tiddler [[PrestData##ZagaraPrestige3Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##ZagaraPrestige3Disadvantage]]>>|
|>|>|>|>|>|>| <html><a name="ToC" /></html><<tiddler PrestData##TableOfContents>> |
|<<tiddler [[PrestData##Vorazun]]>><br><<tiddler [[PrestData##VorazunMasteries]]>>|!lvl|!Prestige Talents|!Posts|!Videos|>|!Vorazun<html><a name="Vorazun" /></html>+++*@ <html><a name="ToC" /></html><<tiddler PrestData##TableOfContents>> ===|
|~|0|<<tiddler [[PrestData##VorazunPrestige0Name]]>>|<<tiddler [[PrestData##VorazunPrestige0Posts]]>>|<<tiddler [[PrestData##VorazunPrestige0Videos]]>>|Advantage|<<tiddler [[PrestData##VorazunPrestige0Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##VorazunPrestige0Disadvantage]]>>|
|~|1|<<tiddler [[PrestData##VorazunPrestige1Name]]>>|<<tiddler [[PrestData##VorazunPrestige1Posts]]>>|<<tiddler [[PrestData##VorazunPrestige1Videos]]>>|Advantage|<<tiddler [[PrestData##VorazunPrestige1Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##VorazunPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##VorazunPrestige2Name]]>>|<<tiddler [[PrestData##VorazunPrestige2Posts]]>>|<<tiddler [[PrestData##VorazunPrestige2Videos]]>>|Advantage|<<tiddler [[PrestData##VorazunPrestige2Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##VorazunPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##VorazunPrestige3Name]]>>|<<tiddler [[PrestData##VorazunPrestige3Posts]]>>|<<tiddler [[PrestData##VorazunPrestige3Videos]]>>|Advantage|<<tiddler [[PrestData##VorazunPrestige3Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##VorazunPrestige3Disadvantage]]>>|
|>|>|>|>|>|>| <html><a name="ToC" /></html><<tiddler PrestData##TableOfContents>> |
|<<tiddler [[PrestData##Karax]]>><br><<tiddler [[PrestData##KaraxMasteries]]>>|!lvl|!Prestige Talents|!Posts|!Videos|>|!Karax<html><a name="Karax" /></html>+++*@ <html><a name="ToC" /></html><<tiddler PrestData##TableOfContents>> ===|
|~|0|<<tiddler [[PrestData##KaraxPrestige0Name]]>>|<<tiddler [[PrestData##KaraxPrestige0Posts]]>>|<<tiddler [[PrestData##KaraxPrestige0Videos]]>>|Advantage|<<tiddler [[PrestData##KaraxPrestige0Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##KaraxPrestige0Disadvantage]]>>|
|~|1|<<tiddler [[PrestData##KaraxPrestige1Name]]>>|<<tiddler [[PrestData##KaraxPrestige1Posts]]>>|<<tiddler [[PrestData##KaraxPrestige1Videos]]>>|Advantage|<<tiddler [[PrestData##KaraxPrestige1Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##KaraxPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##KaraxPrestige2Name]]>>|<<tiddler [[PrestData##KaraxPrestige2Posts]]>>|<<tiddler [[PrestData##KaraxPrestige2Videos]]>>|Advantage|<<tiddler [[PrestData##KaraxPrestige2Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##KaraxPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##KaraxPrestige3Name]]>>|<<tiddler [[PrestData##KaraxPrestige3Posts]]>>|<<tiddler [[PrestData##KaraxPrestige3Videos]]>>|Advantage|<<tiddler [[PrestData##KaraxPrestige3Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##KaraxPrestige3Disadvantage]]>>|
|>|>|>|>|>|>| <html><a name="ToC" /></html><<tiddler PrestData##TableOfContents>> |
|<<tiddler [[PrestData##Abathur]]>><br><<tiddler [[PrestData##AbathurMasteries]]>>|!lvl|!Prestige Talents|!Posts|!Videos|>|!Abathur<html><a name="Abathur" /></html>+++*@ <html><a name="ToC" /></html><<tiddler PrestData##TableOfContents>> ===|
|~|0|<<tiddler [[PrestData##AbathurPrestige0Name]]>>|<<tiddler [[PrestData##AbathurPrestige0Posts]]>>|<<tiddler [[PrestData##AbathurPrestige0Videos]]>>|Advantage|<<tiddler [[PrestData##AbathurPrestige0Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##AbathurPrestige0Disadvantage]]>>|
|~|1|<<tiddler [[PrestData##AbathurPrestige1Name]]>>|<<tiddler [[PrestData##AbathurPrestige1Posts]]>>|<<tiddler [[PrestData##AbathurPrestige1Videos]]>>|Advantage|<<tiddler [[PrestData##AbathurPrestige1Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##AbathurPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##AbathurPrestige2Name]]>>|<<tiddler [[PrestData##AbathurPrestige2Posts]]>>|<<tiddler [[PrestData##AbathurPrestige2Videos]]>>|Advantage|<<tiddler [[PrestData##AbathurPrestige2Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##AbathurPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##AbathurPrestige3Name]]>>|<<tiddler [[PrestData##AbathurPrestige3Posts]]>>|<<tiddler [[PrestData##AbathurPrestige3Videos]]>>|Advantage|<<tiddler [[PrestData##AbathurPrestige3Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##AbathurPrestige3Disadvantage]]>>|
|>|>|>|>|>|>| <html><a name="ToC" /></html><<tiddler PrestData##TableOfContents>> |
|<<tiddler [[PrestData##Alarak]]>><br><<tiddler [[PrestData##AlarakMasteries]]>>|!lvl|!Prestige Talents|!Posts|!Videos|>|!Alarak<html><a name="Alarak" /></html>+++*@ <html><a name="ToC" /></html><<tiddler PrestData##TableOfContents>> ===|
|~|0|<<tiddler [[PrestData##AlarakPrestige0Name]]>>|<<tiddler [[PrestData##AlarakPrestige0Posts]]>>|<<tiddler [[PrestData##AlarakPrestige0Videos]]>>|Advantage|<<tiddler [[PrestData##AlarakPrestige0Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##AlarakPrestige0Disadvantage]]>>|
|~|1|<<tiddler [[PrestData##AlarakPrestige1Name]]>>|<<tiddler [[PrestData##AlarakPrestige1Posts]]>>|<<tiddler [[PrestData##AlarakPrestige1Videos]]>>|Advantage|<<tiddler [[PrestData##AlarakPrestige1Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##AlarakPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##AlarakPrestige2Name]]>>|<<tiddler [[PrestData##AlarakPrestige2Posts]]>>|<<tiddler [[PrestData##AlarakPrestige2Videos]]>>|Advantage|<<tiddler [[PrestData##AlarakPrestige2Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##AlarakPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##AlarakPrestige3Name]]>>|<<tiddler [[PrestData##AlarakPrestige3Posts]]>>|<<tiddler [[PrestData##AlarakPrestige3Videos]]>>|Advantage|<<tiddler [[PrestData##AlarakPrestige3Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##AlarakPrestige3Disadvantage]]>>|
|>|>|>|>|>|>| <html><a name="ToC" /></html><<tiddler PrestData##TableOfContents>> |
|<<tiddler [[PrestData##Nova]]>><br><<tiddler [[PrestData##NovaMasteries]]>>|!lvl|!Prestige Talents|!Posts|!Videos|>|!Nova<html><a name="Nova" /></html>+++*@ <html><a name="ToC" /></html><<tiddler PrestData##TableOfContents>> ===|
|~|0|<<tiddler [[PrestData##NovaPrestige0Name]]>>|<<tiddler [[PrestData##NovaPrestige0Posts]]>>|<<tiddler [[PrestData##NovaPrestige0Videos]]>>|Advantage|<<tiddler [[PrestData##NovaPrestige0Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##NovaPrestige0Disadvantage]]>>|
|~|1|<<tiddler [[PrestData##NovaPrestige1Name]]>>|<<tiddler [[PrestData##NovaPrestige1Posts]]>>|<<tiddler [[PrestData##NovaPrestige1Videos]]>>|Advantage|<<tiddler [[PrestData##NovaPrestige1Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##NovaPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##NovaPrestige2Name]]>>|<<tiddler [[PrestData##NovaPrestige2Posts]]>>|<<tiddler [[PrestData##NovaPrestige2Videos]]>>|Advantage|<<tiddler [[PrestData##NovaPrestige2Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##NovaPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##NovaPrestige3Name]]>>|<<tiddler [[PrestData##NovaPrestige3Posts]]>>|<<tiddler [[PrestData##NovaPrestige3Videos]]>>|Advantage|<<tiddler [[PrestData##NovaPrestige3Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##NovaPrestige3Disadvantage]]>>|
|>|>|>|>|>|>| <html><a name="ToC" /></html><<tiddler PrestData##TableOfContents>> |
|<<tiddler [[PrestData##Stukov]]>><br><<tiddler [[PrestData##StukovMasteries]]>>|!lvl|!Prestige Talents|!Posts|!Videos|>|!Stukov<html><a name="Stukov" /></html>+++*@ <html><a name="ToC" /></html><<tiddler PrestData##TableOfContents>> ===|
|~|0|<<tiddler [[PrestData##StukovPrestige0Name]]>>|<<tiddler [[PrestData##StukovPrestige0Posts]]>>|<<tiddler [[PrestData##StukovPrestige0Videos]]>>|Advantage|<<tiddler [[PrestData##StukovPrestige0Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##StukovPrestige0Disadvantage]]>>|
|~|1|<<tiddler [[PrestData##StukovPrestige1Name]]>>|<<tiddler [[PrestData##StukovPrestige1Posts]]>>|<<tiddler [[PrestData##StukovPrestige1Videos]]>>|Advantage|<<tiddler [[PrestData##StukovPrestige1Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##StukovPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##StukovPrestige2Name]]>>|<<tiddler [[PrestData##StukovPrestige2Posts]]>>|<<tiddler [[PrestData##StukovPrestige2Videos]]>>|Advantage|<<tiddler [[PrestData##StukovPrestige2Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##StukovPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##StukovPrestige3Name]]>>|<<tiddler [[PrestData##StukovPrestige3Posts]]>>|<<tiddler [[PrestData##StukovPrestige3Videos]]>>|Advantage|<<tiddler [[PrestData##StukovPrestige3Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##StukovPrestige3Disadvantage]]>>|
|>|>|>|>|>|>| <html><a name="ToC" /></html><<tiddler PrestData##TableOfContents>> |
|<<tiddler [[PrestData##Fenix]]>><br><<tiddler [[PrestData##FenixMasteries]]>>|!lvl|!Prestige Talents|!Posts|!Videos|>|!Fenix<html><a name="Fenix" /></html>+++*@ <html><a name="ToC" /></html><<tiddler PrestData##TableOfContents>> ===|
|~|0|<<tiddler [[PrestData##FenixPrestige0Name]]>>|<<tiddler [[PrestData##FenixPrestige0Posts]]>>|<<tiddler [[PrestData##FenixPrestige0Videos]]>>|Advantage|<<tiddler [[PrestData##FenixPrestige0Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##FenixPrestige0Disadvantage]]>>|
|~|1|<<tiddler [[PrestData##FenixPrestige1Name]]>>|<<tiddler [[PrestData##FenixPrestige1Posts]]>>|<<tiddler [[PrestData##FenixPrestige1Videos]]>>|Advantage|<<tiddler [[PrestData##FenixPrestige1Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##FenixPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##FenixPrestige2Name]]>>|<<tiddler [[PrestData##FenixPrestige2Posts]]>>|<<tiddler [[PrestData##FenixPrestige2Videos]]>>|Advantage|<<tiddler [[PrestData##FenixPrestige2Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##FenixPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##FenixPrestige3Name]]>>|<<tiddler [[PrestData##FenixPrestige3Posts]]>>|<<tiddler [[PrestData##FenixPrestige3Videos]]>>|Advantage|<<tiddler [[PrestData##FenixPrestige3Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##FenixPrestige3Disadvantage]]>>|
|>|>|>|>|>|>| <html><a name="ToC" /></html><<tiddler PrestData##TableOfContents>> |
|<<tiddler [[PrestData##Dehaka]]>><br><<tiddler [[PrestData##DehakaMasteries]]>>|!lvl|!Prestige Talents|!Posts|!Videos|>|!Dehaka<html><a name="Dehaka" /></html>+++*@ <html><a name="ToC" /></html><<tiddler PrestData##TableOfContents>> ===|
|~|0|<<tiddler [[PrestData##DehakaPrestige0Name]]>>|<<tiddler [[PrestData##DehakaPrestige0Posts]]>>|<<tiddler [[PrestData##DehakaPrestige0Videos]]>>|Advantage|<<tiddler [[PrestData##DehakaPrestige0Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##DehakaPrestige0Disadvantage]]>>|
|~|1|<<tiddler [[PrestData##DehakaPrestige1Name]]>>|<<tiddler [[PrestData##DehakaPrestige1Posts]]>>|<<tiddler [[PrestData##DehakaPrestige1Videos]]>>|Advantage|<<tiddler [[PrestData##DehakaPrestige1Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##DehakaPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##DehakaPrestige2Name]]>>|<<tiddler [[PrestData##DehakaPrestige2Posts]]>>|<<tiddler [[PrestData##DehakaPrestige2Videos]]>>|Advantage|<<tiddler [[PrestData##DehakaPrestige2Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##DehakaPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##DehakaPrestige3Name]]>>|<<tiddler [[PrestData##DehakaPrestige3Posts]]>>|<<tiddler [[PrestData##DehakaPrestige3Videos]]>>|Advantage|<<tiddler [[PrestData##DehakaPrestige3Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##DehakaPrestige3Disadvantage]]>>|
|>|>|>|>|>|>| <html><a name="ToC" /></html><<tiddler PrestData##TableOfContents>> |
|<<tiddler [[PrestData##Han&Horner]]>><br><<tiddler [[PrestData##Han&HornerMasteries]]>>|!lvl|!Prestige Talents|!Posts|!Videos|>|!Han&Horner<html><a name="Han&Horner" /></html>+++*@ <html><a name="ToC" /></html><<tiddler PrestData##TableOfContents>> ===|
|~|0|<<tiddler [[PrestData##Han&HornerPrestige0Name]]>>|<<tiddler [[PrestData##Han&HornerPrestige0Posts]]>>|<<tiddler [[PrestData##Han&HornerPrestige0Videos]]>>|Advantage|<<tiddler [[PrestData##Han&HornerPrestige0Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##Han&HornerPrestige0Disadvantage]]>>|
|~|1|<<tiddler [[PrestData##Han&HornerPrestige1Name]]>>|<<tiddler [[PrestData##Han&HornerPrestige1Posts]]>>|<<tiddler [[PrestData##Han&HornerPrestige1Videos]]>>|Advantage|<<tiddler [[PrestData##Han&HornerPrestige1Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##Han&HornerPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##Han&HornerPrestige2Name]]>>|<<tiddler [[PrestData##Han&HornerPrestige2Posts]]>>|<<tiddler [[PrestData##Han&HornerPrestige2Videos]]>>|Advantage|<<tiddler [[PrestData##Han&HornerPrestige2Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##Han&HornerPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##Han&HornerPrestige3Name]]>>|<<tiddler [[PrestData##Han&HornerPrestige3Posts]]>>|<<tiddler [[PrestData##Han&HornerPrestige3Videos]]>>|Advantage|<<tiddler [[PrestData##Han&HornerPrestige3Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##Han&HornerPrestige3Disadvantage]]>>|
|>|>|>|>|>|>| <html><a name="ToC" /></html><<tiddler PrestData##TableOfContents>> |
|<<tiddler [[PrestData##Tychus]]>><br><<tiddler [[PrestData##TychusMasteries]]>>|!lvl|!Prestige Talents|!Posts|!Videos|>|!Tychus<html><a name="Tychus" /></html>+++*@ <html><a name="ToC" /></html><<tiddler PrestData##TableOfContents>> ===|
|~|0|<<tiddler [[PrestData##TychusPrestige0Name]]>>|<<tiddler [[PrestData##TychusPrestige0Posts]]>>|<<tiddler [[PrestData##TychusPrestige0Videos]]>>|Advantage|<<tiddler [[PrestData##TychusPrestige0Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##TychusPrestige0Disadvantage]]>>|
|~|1|<<tiddler [[PrestData##TychusPrestige1Name]]>>|<<tiddler [[PrestData##TychusPrestige1Posts]]>>|<<tiddler [[PrestData##TychusPrestige1Videos]]>>|Advantage|<<tiddler [[PrestData##TychusPrestige1Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##TychusPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##TychusPrestige2Name]]>>|<<tiddler [[PrestData##TychusPrestige2Posts]]>>|<<tiddler [[PrestData##TychusPrestige2Videos]]>>|Advantage|<<tiddler [[PrestData##TychusPrestige2Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##TychusPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##TychusPrestige3Name]]>>|<<tiddler [[PrestData##TychusPrestige3Posts]]>>|<<tiddler [[PrestData##TychusPrestige3Videos]]>>|Advantage|<<tiddler [[PrestData##TychusPrestige3Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##TychusPrestige3Disadvantage]]>>|
|>|>|>|>|>|>| <html><a name="ToC" /></html><<tiddler PrestData##TableOfContents>> |
|<<tiddler [[PrestData##Zeratul]]>><br><<tiddler [[PrestData##ZeratulMasteries]]>>|!lvl|!Prestige Talents|!Posts|!Videos|>|!Zeratul<html><a name="Zeratul" /></html>+++*@ <html><a name="ToC" /></html><<tiddler PrestData##TableOfContents>> ===|
|~|0|<<tiddler [[PrestData##ZeratulPrestige0Name]]>>|<<tiddler [[PrestData##ZeratulPrestige0Posts]]>>|<<tiddler [[PrestData##ZeratulPrestige0Videos]]>>|Advantage|<<tiddler [[PrestData##ZeratulPrestige0Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##ZeratulPrestige0Disadvantage]]>>|
|~|1|<<tiddler [[PrestData##ZeratulPrestige1Name]]>>|<<tiddler [[PrestData##ZeratulPrestige1Posts]]>>|<<tiddler [[PrestData##ZeratulPrestige1Videos]]>>|Advantage|<<tiddler [[PrestData##ZeratulPrestige1Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##ZeratulPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##ZeratulPrestige2Name]]>>|<<tiddler [[PrestData##ZeratulPrestige2Posts]]>>|<<tiddler [[PrestData##ZeratulPrestige2Videos]]>>|Advantage|<<tiddler [[PrestData##ZeratulPrestige2Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##ZeratulPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##ZeratulPrestige3Name]]>>|<<tiddler [[PrestData##ZeratulPrestige3Posts]]>>|<<tiddler [[PrestData##ZeratulPrestige3Videos]]>>|Advantage|<<tiddler [[PrestData##ZeratulPrestige3Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##ZeratulPrestige3Disadvantage]]>>|
|>|>|>|>|>|>| <html><a name="ToC" /></html><<tiddler PrestData##TableOfContents>> |
|<<tiddler [[PrestData##Stetmann]]>><br><<tiddler [[PrestData##StetmannMasteries]]>>|!lvl|!Prestige Talents|!Posts|!Videos|>|!Stetmann<html><a name="Stetmann" /></html>+++*@ <html><a name="ToC" /></html><<tiddler PrestData##TableOfContents>> ===|
|~|0|<<tiddler [[PrestData##StetmannPrestige0Name]]>>|<<tiddler [[PrestData##StetmannPrestige0Posts]]>>|<<tiddler [[PrestData##StetmannPrestige0Videos]]>>|Advantage|<<tiddler [[PrestData##StetmannPrestige0Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##StetmannPrestige0Disadvantage]]>>|
|~|1|<<tiddler [[PrestData##StetmannPrestige1Name]]>>|<<tiddler [[PrestData##StetmannPrestige1Posts]]>>|<<tiddler [[PrestData##StetmannPrestige1Videos]]>>|Advantage|<<tiddler [[PrestData##StetmannPrestige1Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##StetmannPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##StetmannPrestige2Name]]>>|<<tiddler [[PrestData##StetmannPrestige2Posts]]>>|<<tiddler [[PrestData##StetmannPrestige2Videos]]>>|Advantage|<<tiddler [[PrestData##StetmannPrestige2Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##StetmannPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##StetmannPrestige3Name]]>>|<<tiddler [[PrestData##StetmannPrestige3Posts]]>>|<<tiddler [[PrestData##StetmannPrestige3Videos]]>>|Advantage|<<tiddler [[PrestData##StetmannPrestige3Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##StetmannPrestige3Disadvantage]]>>|
|>|>|>|>|>|>| <html><a name="ToC" /></html><<tiddler PrestData##TableOfContents>> |
|<<tiddler [[PrestData##Mengsk]]>><br><<tiddler [[PrestData##MengskMasteries]]>>|!lvl|!Prestige Talents|!Posts|!Videos|>|!Mengsk<html><a name="Mengsk" /></html>+++*@ <html><a name="ToC" /></html><<tiddler PrestData##TableOfContents>> ===|
|~|0|<<tiddler [[PrestData##MengskPrestige0Name]]>>|<<tiddler [[PrestData##MengskPrestige0Posts]]>>|<<tiddler [[PrestData##MengskPrestige0Videos]]>>|Advantage|<<tiddler [[PrestData##MengskPrestige0Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##MengskPrestige0Disadvantage]]>>|
|~|1|<<tiddler [[PrestData##MengskPrestige1Name]]>>|<<tiddler [[PrestData##MengskPrestige1Posts]]>>|<<tiddler [[PrestData##MengskPrestige1Videos]]>>|Advantage|<<tiddler [[PrestData##MengskPrestige1Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##MengskPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##MengskPrestige2Name]]>>|<<tiddler [[PrestData##MengskPrestige2Posts]]>>|<<tiddler [[PrestData##MengskPrestige2Videos]]>>|Advantage|<<tiddler [[PrestData##MengskPrestige2Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##MengskPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##MengskPrestige3Name]]>>|<<tiddler [[PrestData##MengskPrestige3Posts]]>>|<<tiddler [[PrestData##MengskPrestige3Videos]]>>|Advantage|<<tiddler [[PrestData##MengskPrestige3Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##MengskPrestige3Disadvantage]]>>|
|>|>|>|>|>|>| <html><a name="ToC" /></html><<tiddler PrestData##TableOfContents>> |
|>|>|>|>|>|>|!Resources|
|>|>|>|>|>|>|<<tiddler [[PrestData##Resources]]>>|
|>|>|>|>|<<tiddler Subsourian>>|
|>|>|>|>|<<tiddler CtG>>|
|<<tiddler [[PrestData##Raynor]]>><br><<tiddler [[PrestData##RaynorMasteries]]>>|!lvl|!Prestige Talents|>|!Raynor|
|~|0|<<tiddler [[PrestData##RaynorPrestige0Name]]>>|Advantage|<<tiddler [[PrestData##RaynorPrestige0Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##RaynorPrestige0Disadvantage]]>>|
|~|~|~|Posts|<<tiddler [[PrestData##RaynorPrestige0Posts]]>>|
|~|~|~|Videos|<<tiddler [[PrestData##RaynorPrestige0Videos]]>>|
|~|1|<<tiddler [[PrestData##RaynorPrestige1Name]]>>|Advantage|<<tiddler [[PrestData##RaynorPrestige1Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##RaynorPrestige1Disadvantage]]>>|
|~|~|~|Posts|<<tiddler [[PrestData##RaynorPrestige1Posts]]>>|
|~|~|~|Videos|<<tiddler [[PrestData##RaynorPrestige1Videos]]>>|
|~|2|<<tiddler [[PrestData##RaynorPrestige2Name]]>>|Advantage|<<tiddler [[PrestData##RaynorPrestige2Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##RaynorPrestige2Disadvantage]]>>|
|~|~|~|Posts|<<tiddler [[PrestData##RaynorPrestige2Posts]]>>|
|~|~|~|Videos|<<tiddler [[PrestData##RaynorPrestige2Videos]]>>|
|~|3|<<tiddler [[PrestData##RaynorPrestige3Name]]>>|Advantage|<<tiddler [[PrestData##RaynorPrestige3Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##RaynorPrestige3Disadvantage]]>>|
|~|~|~|Posts|<<tiddler [[PrestData##RaynorPrestige3Posts]]>>|
|~|~|~|Videos|<<tiddler [[PrestData##RaynorPrestige3Videos]]>>|
|>|>|>|>||
|<<tiddler [[PrestData##Kerrigan]]>><br><<tiddler [[PrestData##KerriganMasteries]]>>|!lvl|!Prestige Talents|>|!Kerrigan|
|~|0|<<tiddler [[PrestData##KerriganPrestige0Name]]>>|Advantage|<<tiddler [[PrestData##KerriganPrestige0Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##KerriganPrestige0Disadvantage]]>>|
|~|1|<<tiddler [[PrestData##KerriganPrestige1Name]]>>|Advantage|<<tiddler [[PrestData##KerriganPrestige1Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##KerriganPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##KerriganPrestige2Name]]>>|Advantage|<<tiddler [[PrestData##KerriganPrestige2Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##KerriganPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##KerriganPrestige3Name]]>>|Advantage|<<tiddler [[PrestData##KerriganPrestige3Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##KerriganPrestige3Disadvantage]]>>|
|>|>|>|>||
|<<tiddler [[PrestData##Artanis]]>><br><<tiddler [[PrestData##ArtanisMasteries]]>>|!lvl|!Prestige Talents|>|!Artanis|
|~|0|<<tiddler [[PrestData##ArtanisPrestige0Name]]>>|Advantage|<<tiddler [[PrestData##ArtanisPrestige0Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##ArtanisPrestige0Disadvantage]]>>|
|~|1|<<tiddler [[PrestData##ArtanisPrestige1Name]]>>|Advantage|<<tiddler [[PrestData##ArtanisPrestige1Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##ArtanisPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##ArtanisPrestige2Name]]>>|Advantage|<<tiddler [[PrestData##ArtanisPrestige2Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##ArtanisPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##ArtanisPrestige3Name]]>>|Advantage|<<tiddler [[PrestData##ArtanisPrestige3Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##ArtanisPrestige3Disadvantage]]>>|
|>|>|>|>||
|<<tiddler [[PrestData##Swann]]>><br><<tiddler [[PrestData##SwannMasteries]]>>|!lvl|!Prestige Talents|>|!Swann|
|~|0|<<tiddler [[PrestData##SwannPrestige0Name]]>>|Advantage|<<tiddler [[PrestData##SwannPrestige0Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##SwannPrestige0Disadvantage]]>>|
|~|1|<<tiddler [[PrestData##SwannPrestige1Name]]>>|Advantage|<<tiddler [[PrestData##SwannPrestige1Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##SwannPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##SwannPrestige2Name]]>>|Advantage|<<tiddler [[PrestData##SwannPrestige2Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##SwannPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##SwannPrestige3Name]]>>|Advantage|<<tiddler [[PrestData##SwannPrestige3Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##SwannPrestige3Disadvantage]]>>|
|>|>|>|>||
|<<tiddler [[PrestData##Zagara]]>><br><<tiddler [[PrestData##ZagaraMasteries]]>>|!lvl|!Prestige Talents|>|!Zagara|
|~|0|<<tiddler [[PrestData##ZagaraPrestige0Name]]>>|Advantage|<<tiddler [[PrestData##ZagaraPrestige0Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##ZagaraPrestige0Disadvantage]]>>|
|~|1|<<tiddler [[PrestData##ZagaraPrestige1Name]]>>|Advantage|<<tiddler [[PrestData##ZagaraPrestige1Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##ZagaraPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##ZagaraPrestige2Name]]>>|Advantage|<<tiddler [[PrestData##ZagaraPrestige2Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##ZagaraPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##ZagaraPrestige3Name]]>>|Advantage|<<tiddler [[PrestData##ZagaraPrestige3Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##ZagaraPrestige3Disadvantage]]>>|
|>|>|>|>||
|<<tiddler [[PrestData##Vorazun]]>><br><<tiddler [[PrestData##VorazunMasteries]]>>|!lvl|!Prestige Talents|>|!Vorazun|
|~|0|<<tiddler [[PrestData##VorazunPrestige0Name]]>>|Advantage|<<tiddler [[PrestData##VorazunPrestige0Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##VorazunPrestige0Disadvantage]]>>|
|~|1|<<tiddler [[PrestData##VorazunPrestige1Name]]>>|Advantage|<<tiddler [[PrestData##VorazunPrestige1Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##VorazunPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##VorazunPrestige2Name]]>>|Advantage|<<tiddler [[PrestData##VorazunPrestige2Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##VorazunPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##VorazunPrestige3Name]]>>|Advantage|<<tiddler [[PrestData##VorazunPrestige3Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##VorazunPrestige3Disadvantage]]>>|
|>|>|>|>||
|<<tiddler [[PrestData##Karax]]>><br><<tiddler [[PrestData##KaraxMasteries]]>>|!lvl|!Prestige Talents|>|!Karax|
|~|0|<<tiddler [[PrestData##KaraxPrestige0Name]]>>|Advantage|<<tiddler [[PrestData##KaraxPrestige0Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##KaraxPrestige0Disadvantage]]>>|
|~|1|<<tiddler [[PrestData##KaraxPrestige1Name]]>>|Advantage|<<tiddler [[PrestData##KaraxPrestige1Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##KaraxPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##KaraxPrestige2Name]]>>|Advantage|<<tiddler [[PrestData##KaraxPrestige2Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##KaraxPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##KaraxPrestige3Name]]>>|Advantage|<<tiddler [[PrestData##KaraxPrestige3Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##KaraxPrestige3Disadvantage]]>>|
|>|>|>|>||
|<<tiddler [[PrestData##Abathur]]>><br><<tiddler [[PrestData##AbathurMasteries]]>>|!lvl|!Prestige Talents|>|!Abathur|
|~|0|<<tiddler [[PrestData##AbathurPrestige0Name]]>>|Advantage|<<tiddler [[PrestData##AbathurPrestige0Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##AbathurPrestige0Disadvantage]]>>|
|~|1|<<tiddler [[PrestData##AbathurPrestige1Name]]>>|Advantage|<<tiddler [[PrestData##AbathurPrestige1Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##AbathurPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##AbathurPrestige2Name]]>>|Advantage|<<tiddler [[PrestData##AbathurPrestige2Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##AbathurPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##AbathurPrestige3Name]]>>|Advantage|<<tiddler [[PrestData##AbathurPrestige3Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##AbathurPrestige3Disadvantage]]>>|
|>|>|>|>||
|<<tiddler [[PrestData##Alarak]]>><br><<tiddler [[PrestData##AlarakMasteries]]>>|!lvl|!Prestige Talents|>|!Alarak|
|~|0|<<tiddler [[PrestData##AlarakPrestige0Name]]>>|Advantage|<<tiddler [[PrestData##AlarakPrestige0Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##AlarakPrestige0Disadvantage]]>>|
|~|1|<<tiddler [[PrestData##AlarakPrestige1Name]]>>|Advantage|<<tiddler [[PrestData##AlarakPrestige1Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##AlarakPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##AlarakPrestige2Name]]>>|Advantage|<<tiddler [[PrestData##AlarakPrestige2Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##AlarakPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##AlarakPrestige3Name]]>>|Advantage|<<tiddler [[PrestData##AlarakPrestige3Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##AlarakPrestige3Disadvantage]]>>|
|>|>|>|>||
|<<tiddler [[PrestData##Nova]]>><br><<tiddler [[PrestData##NovaMasteries]]>>|!lvl|!Prestige Talents|>|!Nova|
|~|0|<<tiddler [[PrestData##NovaPrestige0Name]]>>|Advantage|<<tiddler [[PrestData##NovaPrestige0Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##NovaPrestige0Disadvantage]]>>|
|~|1|<<tiddler [[PrestData##NovaPrestige1Name]]>>|Advantage|<<tiddler [[PrestData##NovaPrestige1Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##NovaPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##NovaPrestige2Name]]>>|Advantage|<<tiddler [[PrestData##NovaPrestige2Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##NovaPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##NovaPrestige3Name]]>>|Advantage|<<tiddler [[PrestData##NovaPrestige3Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##NovaPrestige3Disadvantage]]>>|
|>|>|>|>||
|<<tiddler [[PrestData##Stukov]]>><br><<tiddler [[PrestData##StukovMasteries]]>>|!lvl|!Prestige Talents|>|!Stukov|
|~|0|<<tiddler [[PrestData##StukovPrestige0Name]]>>|Advantage|<<tiddler [[PrestData##StukovPrestige0Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##StukovPrestige0Disadvantage]]>>|
|~|1|<<tiddler [[PrestData##StukovPrestige1Name]]>>|Advantage|<<tiddler [[PrestData##StukovPrestige1Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##StukovPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##StukovPrestige2Name]]>>|Advantage|<<tiddler [[PrestData##StukovPrestige2Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##StukovPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##StukovPrestige3Name]]>>|Advantage|<<tiddler [[PrestData##StukovPrestige3Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##StukovPrestige3Disadvantage]]>>|
|>|>|>|>||
|<<tiddler [[PrestData##Fenix]]>><br><<tiddler [[PrestData##FenixMasteries]]>>|!lvl|!Prestige Talents|>|!Fenix|
|~|0|<<tiddler [[PrestData##FenixPrestige0Name]]>>|Advantage|<<tiddler [[PrestData##FenixPrestige0Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##FenixPrestige0Disadvantage]]>>|
|~|1|<<tiddler [[PrestData##FenixPrestige1Name]]>>|Advantage|<<tiddler [[PrestData##FenixPrestige1Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##FenixPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##FenixPrestige2Name]]>>|Advantage|<<tiddler [[PrestData##FenixPrestige2Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##FenixPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##FenixPrestige3Name]]>>|Advantage|<<tiddler [[PrestData##FenixPrestige3Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##FenixPrestige3Disadvantage]]>>|
|>|>|>|>||
|<<tiddler [[PrestData##Dehaka]]>><br><<tiddler [[PrestData##DehakaMasteries]]>>|!lvl|!Prestige Talents|>|!Dehaka|
|~|0|<<tiddler [[PrestData##DehakaPrestige0Name]]>>|Advantage|<<tiddler [[PrestData##DehakaPrestige0Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##DehakaPrestige0Disadvantage]]>>|
|~|1|<<tiddler [[PrestData##DehakaPrestige1Name]]>>|Advantage|<<tiddler [[PrestData##DehakaPrestige1Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##DehakaPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##DehakaPrestige2Name]]>>|Advantage|<<tiddler [[PrestData##DehakaPrestige2Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##DehakaPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##DehakaPrestige3Name]]>>|Advantage|<<tiddler [[PrestData##DehakaPrestige3Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##DehakaPrestige3Disadvantage]]>>|
|>|>|>|>||
|<<tiddler [[PrestData##Han&Horner]]>><br><<tiddler [[PrestData##Han&HornerMasteries]]>>|!lvl|!Prestige Talents|>|!Han&Horner|
|~|0|<<tiddler [[PrestData##Han&HornerPrestige0Name]]>>|Advantage|<<tiddler [[PrestData##Han&HornerPrestige0Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##Han&HornerPrestige0Disadvantage]]>>|
|~|1|<<tiddler [[PrestData##Han&HornerPrestige1Name]]>>|Advantage|<<tiddler [[PrestData##Han&HornerPrestige1Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##Han&HornerPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##Han&HornerPrestige2Name]]>>|Advantage|<<tiddler [[PrestData##Han&HornerPrestige2Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##Han&HornerPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##Han&HornerPrestige3Name]]>>|Advantage|<<tiddler [[PrestData##Han&HornerPrestige3Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##Han&HornerPrestige3Disadvantage]]>>|
|>|>|>|>||
|<<tiddler [[PrestData##Tychus]]>><br><<tiddler [[PrestData##TychusMasteries]]>>|!lvl|!Prestige Talents|>|!Tychus|
|~|0|<<tiddler [[PrestData##TychusPrestige0Name]]>>|Advantage|<<tiddler [[PrestData##TychusPrestige0Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##TychusPrestige0Disadvantage]]>>|
|~|1|<<tiddler [[PrestData##TychusPrestige1Name]]>>|Advantage|<<tiddler [[PrestData##TychusPrestige1Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##TychusPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##TychusPrestige2Name]]>>|Advantage|<<tiddler [[PrestData##TychusPrestige2Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##TychusPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##TychusPrestige3Name]]>>|Advantage|<<tiddler [[PrestData##TychusPrestige3Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##TychusPrestige3Disadvantage]]>>|
|>|>|>|>||
|<<tiddler [[PrestData##Zeratul]]>><br><<tiddler [[PrestData##ZeratulMasteries]]>>|!lvl|!Prestige Talents|>|!Zeratul|
|~|0|<<tiddler [[PrestData##ZeratulPrestige0Name]]>>|Advantage|<<tiddler [[PrestData##ZeratulPrestige0Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##ZeratulPrestige0Disadvantage]]>>|
|~|1|<<tiddler [[PrestData##ZeratulPrestige1Name]]>>|Advantage|<<tiddler [[PrestData##ZeratulPrestige1Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##ZeratulPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##ZeratulPrestige2Name]]>>|Advantage|<<tiddler [[PrestData##ZeratulPrestige2Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##ZeratulPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##ZeratulPrestige3Name]]>>|Advantage|<<tiddler [[PrestData##ZeratulPrestige3Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##ZeratulPrestige3Disadvantage]]>>|
|>|>|>|>||
|<<tiddler [[PrestData##Stetmann]]>><br><<tiddler [[PrestData##StetmannMasteries]]>>|!lvl|!Prestige Talents|>|!Stetmann|
|~|0|<<tiddler [[PrestData##StetmannPrestige0Name]]>>|Advantage|<<tiddler [[PrestData##StetmannPrestige0Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##StetmannPrestige0Disadvantage]]>>|
|~|1|<<tiddler [[PrestData##StetmannPrestige1Name]]>>|Advantage|<<tiddler [[PrestData##StetmannPrestige1Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##StetmannPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##StetmannPrestige2Name]]>>|Advantage|<<tiddler [[PrestData##StetmannPrestige2Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##StetmannPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##StetmannPrestige3Name]]>>|Advantage|<<tiddler [[PrestData##StetmannPrestige3Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##StetmannPrestige3Disadvantage]]>>|
|>|>|>|>||
|<<tiddler [[PrestData##Mengsk]]>><br><<tiddler [[PrestData##MengskMasteries]]>>|!lvl|!Prestige Talents|>|!Mengsk|
|~|0|<<tiddler [[PrestData##MengskPrestige0Name]]>>|Advantage|<<tiddler [[PrestData##MengskPrestige0Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##MengskPrestige0Disadvantage]]>>|
|~|1|<<tiddler [[PrestData##MengskPrestige1Name]]>>|Advantage|<<tiddler [[PrestData##MengskPrestige1Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##MengskPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##MengskPrestige2Name]]>>|Advantage|<<tiddler [[PrestData##MengskPrestige2Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##MengskPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##MengskPrestige3Name]]>>|Advantage|<<tiddler [[PrestData##MengskPrestige3Advantage]]>>|
|~|~|~|Disadvantage|<<tiddler [[PrestData##MengskPrestige3Disadvantage]]>>|
|>|>|>|>||
|>|>|>|>|!Resources|
|>|>|>|>|<<tiddler [[PrestData##Resources]]>>|
|>|>|>|>|>|>|[[Layout1|CommanderPrestige]] - [[Layout2|CommanderPrestige4]]|
|>|>|>|>|>|>|For suggestions, requests and feedbacks post a reply [[here|https://www.reddit.com/r/starcraft2coop/comments/hwn2rk/fancy_table_with_commander_guides_and_the_new/]].|
|>|>|>|>|>|>|[[STARCRAFT II 5.0 PATCH NOTES - BLIZZARD ENTERTAINMENT - JULY 27, 2020|https://starcraft2.com/en-us/news/23482838]]<br>CO-OP COMMANDER PRESTIGE<br>A new “Prestige” system has been added that allows players to play through the level 1-15 progression up to three additional times per commander.<br>Each time a player activates Prestige with a given commander, they will unlock a unique Prestige Talent, which can be used to change the core gameplay of the commander.<br>Only one Prestige Talent may be equipped at a time for each commander and it is possible that a player equips none of these talents, in which case, the commander will receive their standard loadout.<br>With 18 commanders and 3 Prestige Talents per commander, this means there are 54 new Prestige Talents to try out.|
|>|>|>|>|>|>| Table of Contents<html><a name="ToC" /></html> [[##Raynor]][[##Kerrigan]][[##Artanis]][[##Swann]][[##Zagara]][[##Vorazun]][[##Karax]][[##Abathur]][[##Alarak]][[##Nova]][[##Stukov]][[##Fenix]][[##Dehaka]][[##Han&Horner]][[##Tychus]][[##Zeratul]][[##Stetmann]][[##Mengsk]] |
|>|>|>|>|>|>|<<tiddler Subsourian>>|
|>|>|>|>|>|<<tiddler CtG>>|
|>|>|>|>|>|>|!Raynor<html><a name="Raynor" /></html>+++*@ Table of Contents<html><a name="ToC" /></html> [[##Raynor]][[##Kerrigan]][[##Artanis]][[##Swann]][[##Zagara]][[##Vorazun]][[##Karax]][[##Abathur]][[##Alarak]][[##Nova]][[##Stukov]][[##Fenix]][[##Dehaka]][[##Han&Horner]][[##Tychus]][[##Zeratul]][[##Stetmann]][[##Mengsk]] ===|
|<<tiddler [[PrestData##Raynor]]>><br><<tiddler [[PrestData##RaynorMasteries]]>>||Prestige0|Prestige1|Prestige2|Prestige3|
|~|Name|<<tiddler [[PrestData##RaynorPrestige0Name]]>>|<<tiddler [[PrestData##RaynorPrestige1Name]]>>|<<tiddler [[PrestData##RaynorPrestige2Name]]>>|<<tiddler [[PrestData##RaynorPrestige3Name]]>>|
|~|Posts|<<tiddler [[PrestData##RaynorPrestige0Posts]]>>|<<tiddler [[PrestData##RaynorPrestige1Posts]]>>|<<tiddler [[PrestData##RaynorPrestige2Posts]]>>|<<tiddler [[PrestData##RaynorPrestige3Posts]]>>|
|~|Videos|<<tiddler [[PrestData##RaynorPrestige0Videos]]>>|<<tiddler [[PrestData##RaynorPrestige1Videos]]>>|<<tiddler [[PrestData##RaynorPrestige2Videos]]>>|<<tiddler [[PrestData##RaynorPrestige3Videos]]>>|
|~|Advantage|<<tiddler [[PrestData##RaynorPrestige0Advantage]]>>|<<tiddler [[PrestData##RaynorPrestige1Advantage]]>>|<<tiddler [[PrestData##RaynorPrestige2Advantage]]>>|<<tiddler [[PrestData##RaynorPrestige3Advantage]]>>|
|~|Disadvantage|<<tiddler [[PrestData##RaynorPrestige0Disadvantage]]>>|<<tiddler [[PrestData##RaynorPrestige1Disadvantage]]>>|<<tiddler [[PrestData##RaynorPrestige2Disadvantage]]>>|<<tiddler [[PrestData##RaynorPrestige3Disadvantage]]>>|
|>|>|>|>|>|>| Table of Contents<html><a name="ToC" /></html> [[##Raynor]][[##Kerrigan]][[##Artanis]][[##Swann]][[##Zagara]][[##Vorazun]][[##Karax]][[##Abathur]][[##Alarak]][[##Nova]][[##Stukov]][[##Fenix]][[##Dehaka]][[##Han&Horner]][[##Tychus]][[##Zeratul]][[##Stetmann]][[##Mengsk]] |
|>|>|>|>|>|>|!Kerrigan<html><a name="Kerrigan" /></html>+++*@ Table of Contents<html><a name="ToC" /></html> [[##Raynor]][[##Kerrigan]][[##Artanis]][[##Swann]][[##Zagara]][[##Vorazun]][[##Karax]][[##Abathur]][[##Alarak]][[##Nova]][[##Stukov]][[##Fenix]][[##Dehaka]][[##Han&Horner]][[##Tychus]][[##Zeratul]][[##Stetmann]][[##Mengsk]] ===|
|<<tiddler [[PrestData##Kerrigan]]>><br><<tiddler [[PrestData##KerriganMasteries]]>>||Prestige0|Prestige1|Prestige2|Prestige3|
|~|Name|<<tiddler [[PrestData##KerriganPrestige0Name]]>>|<<tiddler [[PrestData##KerriganPrestige1Name]]>>|<<tiddler [[PrestData##KerriganPrestige2Name]]>>|<<tiddler [[PrestData##KerriganPrestige3Name]]>>|
|~|Posts|<<tiddler [[PrestData##KerriganPrestige0Posts]]>>|<<tiddler [[PrestData##KerriganPrestige1Posts]]>>|<<tiddler [[PrestData##KerriganPrestige2Posts]]>>|<<tiddler [[PrestData##KerriganPrestige3Posts]]>>|
|~|Videos|<<tiddler [[PrestData##KerriganPrestige0Videos]]>>|<<tiddler [[PrestData##KerriganPrestige1Videos]]>>|<<tiddler [[PrestData##KerriganPrestige2Videos]]>>|<<tiddler [[PrestData##KerriganPrestige3Videos]]>>|
|~|Advantage|<<tiddler [[PrestData##KerriganPrestige0Advantage]]>>|<<tiddler [[PrestData##KerriganPrestige1Advantage]]>>|<<tiddler [[PrestData##KerriganPrestige2Advantage]]>>|<<tiddler [[PrestData##KerriganPrestige3Advantage]]>>|
|~|Disadvantage|<<tiddler [[PrestData##KerriganPrestige0Disadvantage]]>>|<<tiddler [[PrestData##KerriganPrestige1Disadvantage]]>>|<<tiddler [[PrestData##KerriganPrestige2Disadvantage]]>>|<<tiddler [[PrestData##KerriganPrestige3Disadvantage]]>>|
|>|>|>|>|>|>| Table of Contents<html><a name="ToC" /></html> [[##Raynor]][[##Kerrigan]][[##Artanis]][[##Swann]][[##Zagara]][[##Vorazun]][[##Karax]][[##Abathur]][[##Alarak]][[##Nova]][[##Stukov]][[##Fenix]][[##Dehaka]][[##Han&Horner]][[##Tychus]][[##Zeratul]][[##Stetmann]][[##Mengsk]] |
|>|>|>|>|>|>|!Artanis<html><a name="Artanis" /></html>+++*@ Table of Contents<html><a name="ToC" /></html> [[##Raynor]][[##Kerrigan]][[##Artanis]][[##Swann]][[##Zagara]][[##Vorazun]][[##Karax]][[##Abathur]][[##Alarak]][[##Nova]][[##Stukov]][[##Fenix]][[##Dehaka]][[##Han&Horner]][[##Tychus]][[##Zeratul]][[##Stetmann]][[##Mengsk]] ===|
|<<tiddler [[PrestData##Artanis]]>><br><<tiddler [[PrestData##ArtanisMasteries]]>>||Prestige0|Prestige1|Prestige2|Prestige3|
|~|Name|<<tiddler [[PrestData##ArtanisPrestige0Name]]>>|<<tiddler [[PrestData##ArtanisPrestige1Name]]>>|<<tiddler [[PrestData##ArtanisPrestige2Name]]>>|<<tiddler [[PrestData##ArtanisPrestige3Name]]>>|
|~|Posts|<<tiddler [[PrestData##ArtanisPrestige0Posts]]>>|<<tiddler [[PrestData##ArtanisPrestige1Posts]]>>|<<tiddler [[PrestData##ArtanisPrestige2Posts]]>>|<<tiddler [[PrestData##ArtanisPrestige3Posts]]>>|
|~|Videos|<<tiddler [[PrestData##ArtanisPrestige0Videos]]>>|<<tiddler [[PrestData##ArtanisPrestige1Videos]]>>|<<tiddler [[PrestData##ArtanisPrestige2Videos]]>>|<<tiddler [[PrestData##ArtanisPrestige3Videos]]>>|
|~|Advantage|<<tiddler [[PrestData##ArtanisPrestige0Advantage]]>>|<<tiddler [[PrestData##ArtanisPrestige1Advantage]]>>|<<tiddler [[PrestData##ArtanisPrestige2Advantage]]>>|<<tiddler [[PrestData##ArtanisPrestige3Advantage]]>>|
|~|Disadvantage|<<tiddler [[PrestData##ArtanisPrestige0Disadvantage]]>>|<<tiddler [[PrestData##ArtanisPrestige1Disadvantage]]>>|<<tiddler [[PrestData##ArtanisPrestige2Disadvantage]]>>|<<tiddler [[PrestData##ArtanisPrestige3Disadvantage]]>>|
|>|>|>|>|>|>| Table of Contents<html><a name="ToC" /></html> [[##Raynor]][[##Kerrigan]][[##Artanis]][[##Swann]][[##Zagara]][[##Vorazun]][[##Karax]][[##Abathur]][[##Alarak]][[##Nova]][[##Stukov]][[##Fenix]][[##Dehaka]][[##Han&Horner]][[##Tychus]][[##Zeratul]][[##Stetmann]][[##Mengsk]] |
|>|>|>|>|>|>|!Swann<html><a name="Swann" /></html>+++*@ Table of Contents<html><a name="ToC" /></html> [[##Raynor]][[##Kerrigan]][[##Artanis]][[##Swann]][[##Zagara]][[##Vorazun]][[##Karax]][[##Abathur]][[##Alarak]][[##Nova]][[##Stukov]][[##Fenix]][[##Dehaka]][[##Han&Horner]][[##Tychus]][[##Zeratul]][[##Stetmann]][[##Mengsk]] ===|
|<<tiddler [[PrestData##Swann]]>><br><<tiddler [[PrestData##SwannMasteries]]>>||Prestige0|Prestige1|Prestige2|Prestige3|
|~|Name|<<tiddler [[PrestData##SwannPrestige0Name]]>>|<<tiddler [[PrestData##SwannPrestige1Name]]>>|<<tiddler [[PrestData##SwannPrestige2Name]]>>|<<tiddler [[PrestData##SwannPrestige3Name]]>>|
|~|Posts|<<tiddler [[PrestData##SwannPrestige0Posts]]>>|<<tiddler [[PrestData##SwannPrestige1Posts]]>>|<<tiddler [[PrestData##SwannPrestige2Posts]]>>|<<tiddler [[PrestData##SwannPrestige3Posts]]>>|
|~|Videos|<<tiddler [[PrestData##SwannPrestige0Videos]]>>|<<tiddler [[PrestData##SwannPrestige1Videos]]>>|<<tiddler [[PrestData##SwannPrestige2Videos]]>>|<<tiddler [[PrestData##SwannPrestige3Videos]]>>|
|~|Advantage|<<tiddler [[PrestData##SwannPrestige0Advantage]]>>|<<tiddler [[PrestData##SwannPrestige1Advantage]]>>|<<tiddler [[PrestData##SwannPrestige2Advantage]]>>|<<tiddler [[PrestData##SwannPrestige3Advantage]]>>|
|~|Disadvantage|<<tiddler [[PrestData##SwannPrestige0Disadvantage]]>>|<<tiddler [[PrestData##SwannPrestige1Disadvantage]]>>|<<tiddler [[PrestData##SwannPrestige2Disadvantage]]>>|<<tiddler [[PrestData##SwannPrestige3Disadvantage]]>>|
|>|>|>|>|>|>| Table of Contents<html><a name="ToC" /></html> [[##Raynor]][[##Kerrigan]][[##Artanis]][[##Swann]][[##Zagara]][[##Vorazun]][[##Karax]][[##Abathur]][[##Alarak]][[##Nova]][[##Stukov]][[##Fenix]][[##Dehaka]][[##Han&Horner]][[##Tychus]][[##Zeratul]][[##Stetmann]][[##Mengsk]] |
|>|>|>|>|>|>|!Zagara<html><a name="Zagara" /></html>+++*@ Table of Contents<html><a name="ToC" /></html> [[##Raynor]][[##Kerrigan]][[##Artanis]][[##Swann]][[##Zagara]][[##Vorazun]][[##Karax]][[##Abathur]][[##Alarak]][[##Nova]][[##Stukov]][[##Fenix]][[##Dehaka]][[##Han&Horner]][[##Tychus]][[##Zeratul]][[##Stetmann]][[##Mengsk]] ===|
|<<tiddler [[PrestData##Zagara]]>><br><<tiddler [[PrestData##ZagaraMasteries]]>>||Prestige0|Prestige1|Prestige2|Prestige3|
|~|Name|<<tiddler [[PrestData##ZagaraPrestige0Name]]>>|<<tiddler [[PrestData##ZagaraPrestige1Name]]>>|<<tiddler [[PrestData##ZagaraPrestige2Name]]>>|<<tiddler [[PrestData##ZagaraPrestige3Name]]>>|
|~|Posts|<<tiddler [[PrestData##ZagaraPrestige0Posts]]>>|<<tiddler [[PrestData##ZagaraPrestige1Posts]]>>|<<tiddler [[PrestData##ZagaraPrestige2Posts]]>>|<<tiddler [[PrestData##ZagaraPrestige3Posts]]>>|
|~|Videos|<<tiddler [[PrestData##ZagaraPrestige0Videos]]>>|<<tiddler [[PrestData##ZagaraPrestige1Videos]]>>|<<tiddler [[PrestData##ZagaraPrestige2Videos]]>>|<<tiddler [[PrestData##ZagaraPrestige3Videos]]>>|
|~|Advantage|<<tiddler [[PrestData##ZagaraPrestige0Advantage]]>>|<<tiddler [[PrestData##ZagaraPrestige1Advantage]]>>|<<tiddler [[PrestData##ZagaraPrestige2Advantage]]>>|<<tiddler [[PrestData##ZagaraPrestige3Advantage]]>>|
|~|Disadvantage|<<tiddler [[PrestData##ZagaraPrestige0Disadvantage]]>>|<<tiddler [[PrestData##ZagaraPrestige1Disadvantage]]>>|<<tiddler [[PrestData##ZagaraPrestige2Disadvantage]]>>|<<tiddler [[PrestData##ZagaraPrestige3Disadvantage]]>>|
|>|>|>|>|>|>| Table of Contents<html><a name="ToC" /></html> [[##Raynor]][[##Kerrigan]][[##Artanis]][[##Swann]][[##Zagara]][[##Vorazun]][[##Karax]][[##Abathur]][[##Alarak]][[##Nova]][[##Stukov]][[##Fenix]][[##Dehaka]][[##Han&Horner]][[##Tychus]][[##Zeratul]][[##Stetmann]][[##Mengsk]] |
|>|>|>|>|>|>|!Vorazun<html><a name="Vorazun" /></html>+++*@ Table of Contents<html><a name="ToC" /></html> [[##Raynor]][[##Kerrigan]][[##Artanis]][[##Swann]][[##Zagara]][[##Vorazun]][[##Karax]][[##Abathur]][[##Alarak]][[##Nova]][[##Stukov]][[##Fenix]][[##Dehaka]][[##Han&Horner]][[##Tychus]][[##Zeratul]][[##Stetmann]][[##Mengsk]] ===|
|<<tiddler [[PrestData##Vorazun]]>><br><<tiddler [[PrestData##VorazunMasteries]]>>||Prestige0|Prestige1|Prestige2|Prestige3|
|~|Name|<<tiddler [[PrestData##VorazunPrestige0Name]]>>|<<tiddler [[PrestData##VorazunPrestige1Name]]>>|<<tiddler [[PrestData##VorazunPrestige2Name]]>>|<<tiddler [[PrestData##VorazunPrestige3Name]]>>|
|~|Posts|<<tiddler [[PrestData##VorazunPrestige0Posts]]>>|<<tiddler [[PrestData##VorazunPrestige1Posts]]>>|<<tiddler [[PrestData##VorazunPrestige2Posts]]>>|<<tiddler [[PrestData##VorazunPrestige3Posts]]>>|
|~|Videos|<<tiddler [[PrestData##VorazunPrestige0Videos]]>>|<<tiddler [[PrestData##VorazunPrestige1Videos]]>>|<<tiddler [[PrestData##VorazunPrestige2Videos]]>>|<<tiddler [[PrestData##VorazunPrestige3Videos]]>>|
|~|Advantage|<<tiddler [[PrestData##VorazunPrestige0Advantage]]>>|<<tiddler [[PrestData##VorazunPrestige1Advantage]]>>|<<tiddler [[PrestData##VorazunPrestige2Advantage]]>>|<<tiddler [[PrestData##VorazunPrestige3Advantage]]>>|
|~|Disadvantage|<<tiddler [[PrestData##VorazunPrestige0Disadvantage]]>>|<<tiddler [[PrestData##VorazunPrestige1Disadvantage]]>>|<<tiddler [[PrestData##VorazunPrestige2Disadvantage]]>>|<<tiddler [[PrestData##VorazunPrestige3Disadvantage]]>>|
|>|>|>|>|>|>| Table of Contents<html><a name="ToC" /></html> [[##Raynor]][[##Kerrigan]][[##Artanis]][[##Swann]][[##Zagara]][[##Vorazun]][[##Karax]][[##Abathur]][[##Alarak]][[##Nova]][[##Stukov]][[##Fenix]][[##Dehaka]][[##Han&Horner]][[##Tychus]][[##Zeratul]][[##Stetmann]][[##Mengsk]] |
|>|>|>|>|>|>|!Karax<html><a name="Karax" /></html>+++*@ Table of Contents<html><a name="ToC" /></html> [[##Raynor]][[##Kerrigan]][[##Artanis]][[##Swann]][[##Zagara]][[##Vorazun]][[##Karax]][[##Abathur]][[##Alarak]][[##Nova]][[##Stukov]][[##Fenix]][[##Dehaka]][[##Han&Horner]][[##Tychus]][[##Zeratul]][[##Stetmann]][[##Mengsk]] ===|
|<<tiddler [[PrestData##Karax]]>><br><<tiddler [[PrestData##KaraxMasteries]]>>||Prestige0|Prestige1|Prestige2|Prestige3|
|~|Name|<<tiddler [[PrestData##KaraxPrestige0Name]]>>|<<tiddler [[PrestData##KaraxPrestige1Name]]>>|<<tiddler [[PrestData##KaraxPrestige2Name]]>>|<<tiddler [[PrestData##KaraxPrestige3Name]]>>|
|~|Posts|<<tiddler [[PrestData##KaraxPrestige0Posts]]>>|<<tiddler [[PrestData##KaraxPrestige1Posts]]>>|<<tiddler [[PrestData##KaraxPrestige2Posts]]>>|<<tiddler [[PrestData##KaraxPrestige3Posts]]>>|
|~|Videos|<<tiddler [[PrestData##KaraxPrestige0Videos]]>>|<<tiddler [[PrestData##KaraxPrestige1Videos]]>>|<<tiddler [[PrestData##KaraxPrestige2Videos]]>>|<<tiddler [[PrestData##KaraxPrestige3Videos]]>>|
|~|Advantage|<<tiddler [[PrestData##KaraxPrestige0Advantage]]>>|<<tiddler [[PrestData##KaraxPrestige1Advantage]]>>|<<tiddler [[PrestData##KaraxPrestige2Advantage]]>>|<<tiddler [[PrestData##KaraxPrestige3Advantage]]>>|
|~|Disadvantage|<<tiddler [[PrestData##KaraxPrestige0Disadvantage]]>>|<<tiddler [[PrestData##KaraxPrestige1Disadvantage]]>>|<<tiddler [[PrestData##KaraxPrestige2Disadvantage]]>>|<<tiddler [[PrestData##KaraxPrestige3Disadvantage]]>>|
|>|>|>|>|>|>| Table of Contents<html><a name="ToC" /></html> [[##Raynor]][[##Kerrigan]][[##Artanis]][[##Swann]][[##Zagara]][[##Vorazun]][[##Karax]][[##Abathur]][[##Alarak]][[##Nova]][[##Stukov]][[##Fenix]][[##Dehaka]][[##Han&Horner]][[##Tychus]][[##Zeratul]][[##Stetmann]][[##Mengsk]] |
|>|>|>|>|>|>|!Abathur<html><a name="Abathur" /></html>+++*@ Table of Contents<html><a name="ToC" /></html> [[##Raynor]][[##Kerrigan]][[##Artanis]][[##Swann]][[##Zagara]][[##Vorazun]][[##Karax]][[##Abathur]][[##Alarak]][[##Nova]][[##Stukov]][[##Fenix]][[##Dehaka]][[##Han&Horner]][[##Tychus]][[##Zeratul]][[##Stetmann]][[##Mengsk]] ===|
|<<tiddler [[PrestData##Abathur]]>><br><<tiddler [[PrestData##AbathurMasteries]]>>||Prestige0|Prestige1|Prestige2|Prestige3|
|~|Name|<<tiddler [[PrestData##AbathurPrestige0Name]]>>|<<tiddler [[PrestData##AbathurPrestige1Name]]>>|<<tiddler [[PrestData##AbathurPrestige2Name]]>>|<<tiddler [[PrestData##AbathurPrestige3Name]]>>|
|~|Posts|<<tiddler [[PrestData##AbathurPrestige0Posts]]>>|<<tiddler [[PrestData##AbathurPrestige1Posts]]>>|<<tiddler [[PrestData##AbathurPrestige2Posts]]>>|<<tiddler [[PrestData##AbathurPrestige3Posts]]>>|
|~|Videos|<<tiddler [[PrestData##AbathurPrestige0Videos]]>>|<<tiddler [[PrestData##AbathurPrestige1Videos]]>>|<<tiddler [[PrestData##AbathurPrestige2Videos]]>>|<<tiddler [[PrestData##AbathurPrestige3Videos]]>>|
|~|Advantage|<<tiddler [[PrestData##AbathurPrestige0Advantage]]>>|<<tiddler [[PrestData##AbathurPrestige1Advantage]]>>|<<tiddler [[PrestData##AbathurPrestige2Advantage]]>>|<<tiddler [[PrestData##AbathurPrestige3Advantage]]>>|
|~|Disadvantage|<<tiddler [[PrestData##AbathurPrestige0Disadvantage]]>>|<<tiddler [[PrestData##AbathurPrestige1Disadvantage]]>>|<<tiddler [[PrestData##AbathurPrestige2Disadvantage]]>>|<<tiddler [[PrestData##AbathurPrestige3Disadvantage]]>>|
|>|>|>|>|>|>| Table of Contents<html><a name="ToC" /></html> [[##Raynor]][[##Kerrigan]][[##Artanis]][[##Swann]][[##Zagara]][[##Vorazun]][[##Karax]][[##Abathur]][[##Alarak]][[##Nova]][[##Stukov]][[##Fenix]][[##Dehaka]][[##Han&Horner]][[##Tychus]][[##Zeratul]][[##Stetmann]][[##Mengsk]] |
|>|>|>|>|>|>|!Alarak<html><a name="Alarak" /></html>+++*@ Table of Contents<html><a name="ToC" /></html> [[##Raynor]][[##Kerrigan]][[##Artanis]][[##Swann]][[##Zagara]][[##Vorazun]][[##Karax]][[##Abathur]][[##Alarak]][[##Nova]][[##Stukov]][[##Fenix]][[##Dehaka]][[##Han&Horner]][[##Tychus]][[##Zeratul]][[##Stetmann]][[##Mengsk]] ===|
|<<tiddler [[PrestData##Alarak]]>><br><<tiddler [[PrestData##AlarakMasteries]]>>||Prestige0|Prestige1|Prestige2|Prestige3|
|~|Name|<<tiddler [[PrestData##AlarakPrestige0Name]]>>|<<tiddler [[PrestData##AlarakPrestige1Name]]>>|<<tiddler [[PrestData##AlarakPrestige2Name]]>>|<<tiddler [[PrestData##AlarakPrestige3Name]]>>|
|~|Posts|<<tiddler [[PrestData##AlarakPrestige0Posts]]>>|<<tiddler [[PrestData##AlarakPrestige1Posts]]>>|<<tiddler [[PrestData##AlarakPrestige2Posts]]>>|<<tiddler [[PrestData##AlarakPrestige3Posts]]>>|
|~|Videos|<<tiddler [[PrestData##AlarakPrestige0Videos]]>>|<<tiddler [[PrestData##AlarakPrestige1Videos]]>>|<<tiddler [[PrestData##AlarakPrestige2Videos]]>>|<<tiddler [[PrestData##AlarakPrestige3Videos]]>>|
|~|Advantage|<<tiddler [[PrestData##AlarakPrestige0Advantage]]>>|<<tiddler [[PrestData##AlarakPrestige1Advantage]]>>|<<tiddler [[PrestData##AlarakPrestige2Advantage]]>>|<<tiddler [[PrestData##AlarakPrestige3Advantage]]>>|
|~|Disadvantage|<<tiddler [[PrestData##AlarakPrestige0Disadvantage]]>>|<<tiddler [[PrestData##AlarakPrestige1Disadvantage]]>>|<<tiddler [[PrestData##AlarakPrestige2Disadvantage]]>>|<<tiddler [[PrestData##AlarakPrestige3Disadvantage]]>>|
|>|>|>|>|>|>| Table of Contents<html><a name="ToC" /></html> [[##Raynor]][[##Kerrigan]][[##Artanis]][[##Swann]][[##Zagara]][[##Vorazun]][[##Karax]][[##Abathur]][[##Alarak]][[##Nova]][[##Stukov]][[##Fenix]][[##Dehaka]][[##Han&Horner]][[##Tychus]][[##Zeratul]][[##Stetmann]][[##Mengsk]] |
|>|>|>|>|>|>|!Nova<html><a name="Nova" /></html>+++*@ Table of Contents<html><a name="ToC" /></html> [[##Raynor]][[##Kerrigan]][[##Artanis]][[##Swann]][[##Zagara]][[##Vorazun]][[##Karax]][[##Abathur]][[##Alarak]][[##Nova]][[##Stukov]][[##Fenix]][[##Dehaka]][[##Han&Horner]][[##Tychus]][[##Zeratul]][[##Stetmann]][[##Mengsk]] ===|
|<<tiddler [[PrestData##Nova]]>><br><<tiddler [[PrestData##NovaMasteries]]>>||Prestige0|Prestige1|Prestige2|Prestige3|
|~|Name|<<tiddler [[PrestData##NovaPrestige0Name]]>>|<<tiddler [[PrestData##NovaPrestige1Name]]>>|<<tiddler [[PrestData##NovaPrestige2Name]]>>|<<tiddler [[PrestData##NovaPrestige3Name]]>>|
|~|Posts|<<tiddler [[PrestData##NovaPrestige0Posts]]>>|<<tiddler [[PrestData##NovaPrestige1Posts]]>>|<<tiddler [[PrestData##NovaPrestige2Posts]]>>|<<tiddler [[PrestData##NovaPrestige3Posts]]>>|
|~|Videos|<<tiddler [[PrestData##NovaPrestige0Videos]]>>|<<tiddler [[PrestData##NovaPrestige1Videos]]>>|<<tiddler [[PrestData##NovaPrestige2Videos]]>>|<<tiddler [[PrestData##NovaPrestige3Videos]]>>|
|~|Advantage|<<tiddler [[PrestData##NovaPrestige0Advantage]]>>|<<tiddler [[PrestData##NovaPrestige1Advantage]]>>|<<tiddler [[PrestData##NovaPrestige2Advantage]]>>|<<tiddler [[PrestData##NovaPrestige3Advantage]]>>|
|~|Disadvantage|<<tiddler [[PrestData##NovaPrestige0Disadvantage]]>>|<<tiddler [[PrestData##NovaPrestige1Disadvantage]]>>|<<tiddler [[PrestData##NovaPrestige2Disadvantage]]>>|<<tiddler [[PrestData##NovaPrestige3Disadvantage]]>>|
|>|>|>|>|>|>| Table of Contents<html><a name="ToC" /></html> [[##Raynor]][[##Kerrigan]][[##Artanis]][[##Swann]][[##Zagara]][[##Vorazun]][[##Karax]][[##Abathur]][[##Alarak]][[##Nova]][[##Stukov]][[##Fenix]][[##Dehaka]][[##Han&Horner]][[##Tychus]][[##Zeratul]][[##Stetmann]][[##Mengsk]] |
|>|>|>|>|>|>|!Stukov<html><a name="Stukov" /></html>+++*@ Table of Contents<html><a name="ToC" /></html> [[##Raynor]][[##Kerrigan]][[##Artanis]][[##Swann]][[##Zagara]][[##Vorazun]][[##Karax]][[##Abathur]][[##Alarak]][[##Nova]][[##Stukov]][[##Fenix]][[##Dehaka]][[##Han&Horner]][[##Tychus]][[##Zeratul]][[##Stetmann]][[##Mengsk]] ===|
|<<tiddler [[PrestData##Stukov]]>><br><<tiddler [[PrestData##StukovMasteries]]>>||Prestige0|Prestige1|Prestige2|Prestige3|
|~|Name|<<tiddler [[PrestData##StukovPrestige0Name]]>>|<<tiddler [[PrestData##StukovPrestige1Name]]>>|<<tiddler [[PrestData##StukovPrestige2Name]]>>|<<tiddler [[PrestData##StukovPrestige3Name]]>>|
|~|Posts|<<tiddler [[PrestData##StukovPrestige0Posts]]>>|<<tiddler [[PrestData##StukovPrestige1Posts]]>>|<<tiddler [[PrestData##StukovPrestige2Posts]]>>|<<tiddler [[PrestData##StukovPrestige3Posts]]>>|
|~|Videos|<<tiddler [[PrestData##StukovPrestige0Videos]]>>|<<tiddler [[PrestData##StukovPrestige1Videos]]>>|<<tiddler [[PrestData##StukovPrestige2Videos]]>>|<<tiddler [[PrestData##StukovPrestige3Videos]]>>|
|~|Advantage|<<tiddler [[PrestData##StukovPrestige0Advantage]]>>|<<tiddler [[PrestData##StukovPrestige1Advantage]]>>|<<tiddler [[PrestData##StukovPrestige2Advantage]]>>|<<tiddler [[PrestData##StukovPrestige3Advantage]]>>|
|~|Disadvantage|<<tiddler [[PrestData##StukovPrestige0Disadvantage]]>>|<<tiddler [[PrestData##StukovPrestige1Disadvantage]]>>|<<tiddler [[PrestData##StukovPrestige2Disadvantage]]>>|<<tiddler [[PrestData##StukovPrestige3Disadvantage]]>>|
|>|>|>|>|>|>| Table of Contents<html><a name="ToC" /></html> [[##Raynor]][[##Kerrigan]][[##Artanis]][[##Swann]][[##Zagara]][[##Vorazun]][[##Karax]][[##Abathur]][[##Alarak]][[##Nova]][[##Stukov]][[##Fenix]][[##Dehaka]][[##Han&Horner]][[##Tychus]][[##Zeratul]][[##Stetmann]][[##Mengsk]] |
|>|>|>|>|>|>|!Fenix<html><a name="Fenix" /></html>+++*@ Table of Contents<html><a name="ToC" /></html> [[##Raynor]][[##Kerrigan]][[##Artanis]][[##Swann]][[##Zagara]][[##Vorazun]][[##Karax]][[##Abathur]][[##Alarak]][[##Nova]][[##Stukov]][[##Fenix]][[##Dehaka]][[##Han&Horner]][[##Tychus]][[##Zeratul]][[##Stetmann]][[##Mengsk]] ===|
|<<tiddler [[PrestData##Fenix]]>><br><<tiddler [[PrestData##FenixMasteries]]>>||Prestige0|Prestige1|Prestige2|Prestige3|
|~|Name|<<tiddler [[PrestData##FenixPrestige0Name]]>>|<<tiddler [[PrestData##FenixPrestige1Name]]>>|<<tiddler [[PrestData##FenixPrestige2Name]]>>|<<tiddler [[PrestData##FenixPrestige3Name]]>>|
|~|Posts|<<tiddler [[PrestData##FenixPrestige0Posts]]>>|<<tiddler [[PrestData##FenixPrestige1Posts]]>>|<<tiddler [[PrestData##FenixPrestige2Posts]]>>|<<tiddler [[PrestData##FenixPrestige3Posts]]>>|
|~|Videos|<<tiddler [[PrestData##FenixPrestige0Videos]]>>|<<tiddler [[PrestData##FenixPrestige1Videos]]>>|<<tiddler [[PrestData##FenixPrestige2Videos]]>>|<<tiddler [[PrestData##FenixPrestige3Videos]]>>|
|~|Advantage|<<tiddler [[PrestData##FenixPrestige0Advantage]]>>|<<tiddler [[PrestData##FenixPrestige1Advantage]]>>|<<tiddler [[PrestData##FenixPrestige2Advantage]]>>|<<tiddler [[PrestData##FenixPrestige3Advantage]]>>|
|~|Disadvantage|<<tiddler [[PrestData##FenixPrestige0Disadvantage]]>>|<<tiddler [[PrestData##FenixPrestige1Disadvantage]]>>|<<tiddler [[PrestData##FenixPrestige2Disadvantage]]>>|<<tiddler [[PrestData##FenixPrestige3Disadvantage]]>>|
|>|>|>|>|>|>| Table of Contents<html><a name="ToC" /></html> [[##Raynor]][[##Kerrigan]][[##Artanis]][[##Swann]][[##Zagara]][[##Vorazun]][[##Karax]][[##Abathur]][[##Alarak]][[##Nova]][[##Stukov]][[##Fenix]][[##Dehaka]][[##Han&Horner]][[##Tychus]][[##Zeratul]][[##Stetmann]][[##Mengsk]] |
|>|>|>|>|>|>|!Dehaka<html><a name="Dehaka" /></html>+++*@ Table of Contents<html><a name="ToC" /></html> [[##Raynor]][[##Kerrigan]][[##Artanis]][[##Swann]][[##Zagara]][[##Vorazun]][[##Karax]][[##Abathur]][[##Alarak]][[##Nova]][[##Stukov]][[##Fenix]][[##Dehaka]][[##Han&Horner]][[##Tychus]][[##Zeratul]][[##Stetmann]][[##Mengsk]] ===|
|<<tiddler [[PrestData##Dehaka]]>><br><<tiddler [[PrestData##DehakaMasteries]]>>||Prestige0|Prestige1|Prestige2|Prestige3|
|~|Name|<<tiddler [[PrestData##DehakaPrestige0Name]]>>|<<tiddler [[PrestData##DehakaPrestige1Name]]>>|<<tiddler [[PrestData##DehakaPrestige2Name]]>>|<<tiddler [[PrestData##DehakaPrestige3Name]]>>|
|~|Posts|<<tiddler [[PrestData##DehakaPrestige0Posts]]>>|<<tiddler [[PrestData##DehakaPrestige1Posts]]>>|<<tiddler [[PrestData##DehakaPrestige2Posts]]>>|<<tiddler [[PrestData##DehakaPrestige3Posts]]>>|
|~|Videos|<<tiddler [[PrestData##DehakaPrestige0Videos]]>>|<<tiddler [[PrestData##DehakaPrestige1Videos]]>>|<<tiddler [[PrestData##DehakaPrestige2Videos]]>>|<<tiddler [[PrestData##DehakaPrestige3Videos]]>>|
|~|Advantage|<<tiddler [[PrestData##DehakaPrestige0Advantage]]>>|<<tiddler [[PrestData##DehakaPrestige1Advantage]]>>|<<tiddler [[PrestData##DehakaPrestige2Advantage]]>>|<<tiddler [[PrestData##DehakaPrestige3Advantage]]>>|
|~|Disadvantage|<<tiddler [[PrestData##DehakaPrestige0Disadvantage]]>>|<<tiddler [[PrestData##DehakaPrestige1Disadvantage]]>>|<<tiddler [[PrestData##DehakaPrestige2Disadvantage]]>>|<<tiddler [[PrestData##DehakaPrestige3Disadvantage]]>>|
|>|>|>|>|>|>| Table of Contents<html><a name="ToC" /></html> [[##Raynor]][[##Kerrigan]][[##Artanis]][[##Swann]][[##Zagara]][[##Vorazun]][[##Karax]][[##Abathur]][[##Alarak]][[##Nova]][[##Stukov]][[##Fenix]][[##Dehaka]][[##Han&Horner]][[##Tychus]][[##Zeratul]][[##Stetmann]][[##Mengsk]] |
|>|>|>|>|>|>|!Han&Horner<html><a name="Han&Horner" /></html>+++*@ Table of Contents<html><a name="ToC" /></html> [[##Raynor]][[##Kerrigan]][[##Artanis]][[##Swann]][[##Zagara]][[##Vorazun]][[##Karax]][[##Abathur]][[##Alarak]][[##Nova]][[##Stukov]][[##Fenix]][[##Dehaka]][[##Han&Horner]][[##Tychus]][[##Zeratul]][[##Stetmann]][[##Mengsk]] ===|
|<<tiddler [[PrestData##Han&Horner]]>><br><<tiddler [[PrestData##Han&HornerMasteries]]>>||Prestige0|Prestige1|Prestige2|Prestige3|
|~|Name|<<tiddler [[PrestData##Han&HornerPrestige0Name]]>>|<<tiddler [[PrestData##Han&HornerPrestige1Name]]>>|<<tiddler [[PrestData##Han&HornerPrestige2Name]]>>|<<tiddler [[PrestData##Han&HornerPrestige3Name]]>>|
|~|Posts|<<tiddler [[PrestData##Han&HornerPrestige0Posts]]>>|<<tiddler [[PrestData##Han&HornerPrestige1Posts]]>>|<<tiddler [[PrestData##Han&HornerPrestige2Posts]]>>|<<tiddler [[PrestData##Han&HornerPrestige3Posts]]>>|
|~|Videos|<<tiddler [[PrestData##Han&HornerPrestige0Videos]]>>|<<tiddler [[PrestData##Han&HornerPrestige1Videos]]>>|<<tiddler [[PrestData##Han&HornerPrestige2Videos]]>>|<<tiddler [[PrestData##Han&HornerPrestige3Videos]]>>|
|~|Advantage|<<tiddler [[PrestData##Han&HornerPrestige0Advantage]]>>|<<tiddler [[PrestData##Han&HornerPrestige1Advantage]]>>|<<tiddler [[PrestData##Han&HornerPrestige2Advantage]]>>|<<tiddler [[PrestData##Han&HornerPrestige3Advantage]]>>|
|~|Disadvantage|<<tiddler [[PrestData##Han&HornerPrestige0Disadvantage]]>>|<<tiddler [[PrestData##Han&HornerPrestige1Disadvantage]]>>|<<tiddler [[PrestData##Han&HornerPrestige2Disadvantage]]>>|<<tiddler [[PrestData##Han&HornerPrestige3Disadvantage]]>>|
|>|>|>|>|>|>| Table of Contents<html><a name="ToC" /></html> [[##Raynor]][[##Kerrigan]][[##Artanis]][[##Swann]][[##Zagara]][[##Vorazun]][[##Karax]][[##Abathur]][[##Alarak]][[##Nova]][[##Stukov]][[##Fenix]][[##Dehaka]][[##Han&Horner]][[##Tychus]][[##Zeratul]][[##Stetmann]][[##Mengsk]] |
|>|>|>|>|>|>|!Tychus<html><a name="Tychus" /></html>+++*@ Table of Contents<html><a name="ToC" /></html> [[##Raynor]][[##Kerrigan]][[##Artanis]][[##Swann]][[##Zagara]][[##Vorazun]][[##Karax]][[##Abathur]][[##Alarak]][[##Nova]][[##Stukov]][[##Fenix]][[##Dehaka]][[##Han&Horner]][[##Tychus]][[##Zeratul]][[##Stetmann]][[##Mengsk]] ===|
|<<tiddler [[PrestData##Tychus]]>><br><<tiddler [[PrestData##TychusMasteries]]>>||Prestige0|Prestige1|Prestige2|Prestige3|
|~|Name|<<tiddler [[PrestData##TychusPrestige0Name]]>>|<<tiddler [[PrestData##TychusPrestige1Name]]>>|<<tiddler [[PrestData##TychusPrestige2Name]]>>|<<tiddler [[PrestData##TychusPrestige3Name]]>>|
|~|Posts|<<tiddler [[PrestData##TychusPrestige0Posts]]>>|<<tiddler [[PrestData##TychusPrestige1Posts]]>>|<<tiddler [[PrestData##TychusPrestige2Posts]]>>|<<tiddler [[PrestData##TychusPrestige3Posts]]>>|
|~|Videos|<<tiddler [[PrestData##TychusPrestige0Videos]]>>|<<tiddler [[PrestData##TychusPrestige1Videos]]>>|<<tiddler [[PrestData##TychusPrestige2Videos]]>>|<<tiddler [[PrestData##TychusPrestige3Videos]]>>|
|~|Advantage|<<tiddler [[PrestData##TychusPrestige0Advantage]]>>|<<tiddler [[PrestData##TychusPrestige1Advantage]]>>|<<tiddler [[PrestData##TychusPrestige2Advantage]]>>|<<tiddler [[PrestData##TychusPrestige3Advantage]]>>|
|~|Disadvantage|<<tiddler [[PrestData##TychusPrestige0Disadvantage]]>>|<<tiddler [[PrestData##TychusPrestige1Disadvantage]]>>|<<tiddler [[PrestData##TychusPrestige2Disadvantage]]>>|<<tiddler [[PrestData##TychusPrestige3Disadvantage]]>>|
|>|>|>|>|>|>| Table of Contents<html><a name="ToC" /></html> [[##Raynor]][[##Kerrigan]][[##Artanis]][[##Swann]][[##Zagara]][[##Vorazun]][[##Karax]][[##Abathur]][[##Alarak]][[##Nova]][[##Stukov]][[##Fenix]][[##Dehaka]][[##Han&Horner]][[##Tychus]][[##Zeratul]][[##Stetmann]][[##Mengsk]] |
|>|>|>|>|>|>|!Zeratul<html><a name="Zeratul" /></html>+++*@ Table of Contents<html><a name="ToC" /></html> [[##Raynor]][[##Kerrigan]][[##Artanis]][[##Swann]][[##Zagara]][[##Vorazun]][[##Karax]][[##Abathur]][[##Alarak]][[##Nova]][[##Stukov]][[##Fenix]][[##Dehaka]][[##Han&Horner]][[##Tychus]][[##Zeratul]][[##Stetmann]][[##Mengsk]] ===|
|<<tiddler [[PrestData##Zeratul]]>><br><<tiddler [[PrestData##ZeratulMasteries]]>>||Prestige0|Prestige1|Prestige2|Prestige3|
|~|Name|<<tiddler [[PrestData##ZeratulPrestige0Name]]>>|<<tiddler [[PrestData##ZeratulPrestige1Name]]>>|<<tiddler [[PrestData##ZeratulPrestige2Name]]>>|<<tiddler [[PrestData##ZeratulPrestige3Name]]>>|
|~|Posts|<<tiddler [[PrestData##ZeratulPrestige0Posts]]>>|<<tiddler [[PrestData##ZeratulPrestige1Posts]]>>|<<tiddler [[PrestData##ZeratulPrestige2Posts]]>>|<<tiddler [[PrestData##ZeratulPrestige3Posts]]>>|
|~|Videos|<<tiddler [[PrestData##ZeratulPrestige0Videos]]>>|<<tiddler [[PrestData##ZeratulPrestige1Videos]]>>|<<tiddler [[PrestData##ZeratulPrestige2Videos]]>>|<<tiddler [[PrestData##ZeratulPrestige3Videos]]>>|
|~|Advantage|<<tiddler [[PrestData##ZeratulPrestige0Advantage]]>>|<<tiddler [[PrestData##ZeratulPrestige1Advantage]]>>|<<tiddler [[PrestData##ZeratulPrestige2Advantage]]>>|<<tiddler [[PrestData##ZeratulPrestige3Advantage]]>>|
|~|Disadvantage|<<tiddler [[PrestData##ZeratulPrestige0Disadvantage]]>>|<<tiddler [[PrestData##ZeratulPrestige1Disadvantage]]>>|<<tiddler [[PrestData##ZeratulPrestige2Disadvantage]]>>|<<tiddler [[PrestData##ZeratulPrestige3Disadvantage]]>>|
|>|>|>|>|>|>| Table of Contents<html><a name="ToC" /></html> [[##Raynor]][[##Kerrigan]][[##Artanis]][[##Swann]][[##Zagara]][[##Vorazun]][[##Karax]][[##Abathur]][[##Alarak]][[##Nova]][[##Stukov]][[##Fenix]][[##Dehaka]][[##Han&Horner]][[##Tychus]][[##Zeratul]][[##Stetmann]][[##Mengsk]] |
|>|>|>|>|>|>|!Stetmann<html><a name="Stetmann" /></html>+++*@ Table of Contents<html><a name="ToC" /></html> [[##Raynor]][[##Kerrigan]][[##Artanis]][[##Swann]][[##Zagara]][[##Vorazun]][[##Karax]][[##Abathur]][[##Alarak]][[##Nova]][[##Stukov]][[##Fenix]][[##Dehaka]][[##Han&Horner]][[##Tychus]][[##Zeratul]][[##Stetmann]][[##Mengsk]] ===|
|<<tiddler [[PrestData##Stetmann]]>><br><<tiddler [[PrestData##StetmannMasteries]]>>||Prestige0|Prestige1|Prestige2|Prestige3|
|~|Name|<<tiddler [[PrestData##StetmannPrestige0Name]]>>|<<tiddler [[PrestData##StetmannPrestige1Name]]>>|<<tiddler [[PrestData##StetmannPrestige2Name]]>>|<<tiddler [[PrestData##StetmannPrestige3Name]]>>|
|~|Posts|<<tiddler [[PrestData##StetmannPrestige0Posts]]>>|<<tiddler [[PrestData##StetmannPrestige1Posts]]>>|<<tiddler [[PrestData##StetmannPrestige2Posts]]>>|<<tiddler [[PrestData##StetmannPrestige3Posts]]>>|
|~|Videos|<<tiddler [[PrestData##StetmannPrestige0Videos]]>>|<<tiddler [[PrestData##StetmannPrestige1Videos]]>>|<<tiddler [[PrestData##StetmannPrestige2Videos]]>>|<<tiddler [[PrestData##StetmannPrestige3Videos]]>>|
|~|Advantage|<<tiddler [[PrestData##StetmannPrestige0Advantage]]>>|<<tiddler [[PrestData##StetmannPrestige1Advantage]]>>|<<tiddler [[PrestData##StetmannPrestige2Advantage]]>>|<<tiddler [[PrestData##StetmannPrestige3Advantage]]>>|
|~|Disadvantage|<<tiddler [[PrestData##StetmannPrestige0Disadvantage]]>>|<<tiddler [[PrestData##StetmannPrestige1Disadvantage]]>>|<<tiddler [[PrestData##StetmannPrestige2Disadvantage]]>>|<<tiddler [[PrestData##StetmannPrestige3Disadvantage]]>>|
|>|>|>|>|>|>| Table of Contents<html><a name="ToC" /></html> [[##Raynor]][[##Kerrigan]][[##Artanis]][[##Swann]][[##Zagara]][[##Vorazun]][[##Karax]][[##Abathur]][[##Alarak]][[##Nova]][[##Stukov]][[##Fenix]][[##Dehaka]][[##Han&Horner]][[##Tychus]][[##Zeratul]][[##Stetmann]][[##Mengsk]] |
|>|>|>|>|>|>|!Mengsk<html><a name="Mengsk" /></html>+++*@ Table of Contents<html><a name="ToC" /></html> [[##Raynor]][[##Kerrigan]][[##Artanis]][[##Swann]][[##Zagara]][[##Vorazun]][[##Karax]][[##Abathur]][[##Alarak]][[##Nova]][[##Stukov]][[##Fenix]][[##Dehaka]][[##Han&Horner]][[##Tychus]][[##Zeratul]][[##Stetmann]][[##Mengsk]] ===|
|<<tiddler [[PrestData##Mengsk]]>><br><<tiddler [[PrestData##MengskMasteries]]>>||Prestige0|Prestige1|Prestige2|Prestige3|
|~|Name|<<tiddler [[PrestData##MengskPrestige0Name]]>>|<<tiddler [[PrestData##MengskPrestige1Name]]>>|<<tiddler [[PrestData##MengskPrestige2Name]]>>|<<tiddler [[PrestData##MengskPrestige3Name]]>>|
|~|Posts|<<tiddler [[PrestData##MengskPrestige0Posts]]>>|<<tiddler [[PrestData##MengskPrestige1Posts]]>>|<<tiddler [[PrestData##MengskPrestige2Posts]]>>|<<tiddler [[PrestData##MengskPrestige3Posts]]>>|
|~|Videos|<<tiddler [[PrestData##MengskPrestige0Videos]]>>|<<tiddler [[PrestData##MengskPrestige1Videos]]>>|<<tiddler [[PrestData##MengskPrestige2Videos]]>>|<<tiddler [[PrestData##MengskPrestige3Videos]]>>|
|~|Advantage|<<tiddler [[PrestData##MengskPrestige0Advantage]]>>|<<tiddler [[PrestData##MengskPrestige1Advantage]]>>|<<tiddler [[PrestData##MengskPrestige2Advantage]]>>|<<tiddler [[PrestData##MengskPrestige3Advantage]]>>|
|~|Disadvantage|<<tiddler [[PrestData##MengskPrestige0Disadvantage]]>>|<<tiddler [[PrestData##MengskPrestige1Disadvantage]]>>|<<tiddler [[PrestData##MengskPrestige2Disadvantage]]>>|<<tiddler [[PrestData##MengskPrestige3Disadvantage]]>>|
|>|>|>|>|>|>| Table of Contents<html><a name="ToC" /></html> [[##Raynor]][[##Kerrigan]][[##Artanis]][[##Swann]][[##Zagara]][[##Vorazun]][[##Karax]][[##Abathur]][[##Alarak]][[##Nova]][[##Stukov]][[##Fenix]][[##Dehaka]][[##Han&Horner]][[##Tychus]][[##Zeratul]][[##Stetmann]][[##Mengsk]] |
|>|>|>|>|>|>|!Resources|
|>|>|>|>|>|>|<<tiddler [[PrestData##Resources]]>>|
|!Unit|!Effect|
|Zealot|Add:EffectWhirlwind Damage: Amount:5|
|Zealot|Add:BehaviorCharging: ModificationMovement Speed Multiplier:1.2|
|Zealot|Add:UnitCost:+30 minerals|
|>||
|Dragoon|Add:UnitCost:+38 minerals / +15 gas (poor dragoons are just more expensive, no buff for them)|
|>||
|High Templar|Add:EffectFeedback (Damage Target based on Energy): Vital Fraction Current:1|
|High Templar|Add:EffectPsi Storm (Damage): Amount:10|
|High Templar|Add:EffectPsi Storm (Damage2): Amount:10|
|High Templar|Subtract:AbilityArchon Merge: Time:6.000000|
|High Templar|Add:UnitCost:+15 minerals / +45 gas|
|>||
|High Archon|Add:EffectPsi Storm (Damage): Amount:10|
|High Archon|Add:EffectPsi Storm (Damage Initial): Amount:10|
|High Archon|Add:EffectHighArchonPsiStormHeal (Unnamed): Recharge Vital Rate:14.2968|
|>||
|Immortal|Add:BehaviorBarrier (Base Immortal): Damage ResponseModify Limit:100|
|Immortal|Add:UnitCost:+75 minerals / +30 gas|
|>||
|Reaver|Subtract:AbilityHangar:Time:4.000000|
|Reaver|Add:UnitVoid: Cost:+90 minerals / +60 gas|
|>||
|Phoenix|Subtract:AbilityGraviton Beam:CooldownTime Use:15.000000|
|Phoenix|Add:UnitCost:+45 minerals / +30 gas|
|>||
|Tempest|Lightning Bomb Add:EffectDamage: Amount:10|
|Tempest|Add:UnitCost:+90 minerals / +60 gas|
!!![[Contaminated Strike]]
:Launch experimental payloads, fired from your Earthsplitter Ordnance randomly near a target area.
[img[https://bnetcmsus-a.akamaihd.net/cms/page_media/IDZG51EEE9021572477986486.jpg]]
![[Talents|MengskTalents]]
<<tiddler [[MengskTalent##11]]>>
CoopXpTable
++++
|>|>|>|>|>|Experience Table|
|>|>|>|>|>|The experience requirements for leveling a commander is shown below:|
||||20.000 xp x game|40.000 xp|49.500 xp|
|Level Bracket|Experience|Total XP|Casual games without bonus|Specific Brutal games without bonus|Random Brutal games with Bonus|
| 1-2 | 20.000 | 20.000 | 1 | 1 | 1 |
| 2-3 | 40.000 | 60.000 | 3 | 2 | 2 |
| 3-4 | 45.000 | 105.000 | 6 | 3 | 3 |
| 4-5 | 50.000 | 155.000 | 8 | 4 | 4 |
| 5-6 | 55.000 | 210.000 | 11 | 6 | 5 |
| 6-7 | 60.000 | 270.000 | 14 | 7 | 6 |
| 7-8 | 67.500 | 337.500 | 17 | 9 | 7 |
| 8-9 | 75.000 | 412.500 | 21 | 11 | 9 |
| 9-10 | 82.500 | 495.000 | 25 | 13 | 10 |
| 10-11 | 90.000 | 585.000 | 30 | 15 | 12 |
| 11-12 | 100.000 | 685.000 | 35 | 18 | 14 |
| 12-13 | 110.000 | 795.000 | 40 | 20 | 17 |
| 13-14 | 120.000 | 915.000 | 46 | 23 | 19 |
| 14-15 | 130.000 | 1.045.000 | 53 | 27 | 22 |
===
$1<<tiddler Minerals>>, $2<<tiddler Gas>>, $3<<tiddler Time>>
Cost $1<<tiddler Energy>>, range $2, duration $3<<tiddler Time>>, cooldown $4<<tiddler Time>>
$1<<tiddler Minerals>>, $2<<tiddler Gas>>, $3<<tiddler Time>>, $4<<tiddler Supply>>
[[Co-Op Info by CTG|https://www.youtube.com/playlist?list=PLgvoMb4ha0bDD_wYVm6tWbKFt31Sa9Eo8]] ++++ [img[Intro|https://i.ytimg.com/vi/ifptoUkXh8U/hqdefault.jpg?sqp=-oaymwEZCPYBEIoBSFXyq4qpAwsIARUAAIhCGAFwAQ==&rs=AOn4CLC90qRWHuxd5OhSRRY3bjJ6vIrTKw][https://www.youtube.com/watch?v=ifptoUkXh8U]][img[Grinding Method|https://i.ytimg.com/vi/X8UcURoIDHI/hqdefault.jpg?sqp=-oaymwEZCPYBEIoBSFXyq4qpAwsIARUAAIhCGAFwAQ==&rs=AOn4CLDtKvcWKSeqHjFgEdg4eL59qz29Ug][https://www.youtube.com/watch?v=X8UcURoIDHI]][img[Patch 5.0.3|https://i.ytimg.com/vi/1DZc1WDAk5I/hqdefault.jpg?sqp=-oaymwEZCPYBEIoBSFXyq4qpAwsIARUAAIhCGAFwAQ==&rs=AOn4CLD0mKACCwJfKtUY9oGom9BmpuSMaQ][https://www.youtube.com/watch?v=1DZc1WDAk5I]]<br>[img[Raynor|https://i.ytimg.com/vi/Kqn76UVjgic/hqdefault.jpg?sqp=-oaymwEZCPYBEIoBSFXyq4qpAwsIARUAAIhCGAFwAQ==&rs=AOn4CLAs5R3iNqQtFwJn3UDdyMt2VcDukw][https://www.youtube.com/watch?v=Kqn76UVjgic]][img[Kerrigan|https://i.ytimg.com/vi/gvrsOyqzilI/hqdefault.jpg?sqp=-oaymwEZCPYBEIoBSFXyq4qpAwsIARUAAIhCGAFwAQ==&rs=AOn4CLD0Np208Vjl-W9q-_0BaeTEbKpNHQ][https://www.youtube.com/watch?v=gvrsOyqzilI]][img[Artanis|https://i.ytimg.com/vi/0nY79TomOQA/hqdefault.jpg?sqp=-oaymwEZCPYBEIoBSFXyq4qpAwsIARUAAIhCGAFwAQ==&rs=AOn4CLACW_fCVz5zaG9au3jkRxPoevbo_g][https://www.youtube.com/watch?v=0nY79TomOQA]][img[Swann|https://i.ytimg.com/vi/_BpYFWoSI3I/hqdefault.jpg?sqp=-oaymwEXCPYBEIoBSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLAxMtSZ8Nu4WlzMAcTDrACaXqWdHA][https://www.youtube.com/watch?v=_BpYFWoSI3I]][img[Zagara|https://i.ytimg.com/vi/6_uL2IL-O7M/hqdefault.jpg?sqp=-oaymwEXCPYBEIoBSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLD35uTEOvmbFQM8ueShfpnsIBPYig][https://www.youtube.com/watch?v=6_uL2IL-O7M]][img[Vorazun|https://i.ytimg.com/vi/AB4dpUE0At8/hqdefault.jpg?sqp=-oaymwEXCPYBEIoBSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLCVHsZ4D00qTsflUybkm2ZcrUbTvw][https://www.youtube.com/watch?v=AB4dpUE0At8]][img[Karax|https://i.ytimg.com/vi/eQWdEkskHcg/hqdefault.jpg?sqp=-oaymwEZCPYBEIoBSFXyq4qpAwsIARUAAIhCGAFwAQ==&rs=AOn4CLDhaPlyMH5opva1lsIarHYRKtnlAw][https://www.youtube.com/watch?v=eQWdEkskHcg]][img[Abathur|https://i.ytimg.com/vi/c_6BB_sB0P4/hqdefault.jpg?sqp=-oaymwEZCPYBEIoBSFXyq4qpAwsIARUAAIhCGAFwAQ==&rs=AOn4CLBaNiiPLnMtKNZ5kNKGcGN2nQajQw][https://www.youtube.com/watch?v=c_6BB_sB0P4]][img[Alarak|https://i.ytimg.com/vi/dXUVC1Y7hl8/hqdefault.jpg?sqp=-oaymwEZCPYBEIoBSFXyq4qpAwsIARUAAIhCGAFwAQ==&rs=AOn4CLAr7d65WoETyYZkfcrAkXNkaYvLKA][https://www.youtube.com/watch?v=dXUVC1Y7hl8]][img[Nova|https://i.ytimg.com/vi/I3vbsGekgrM/hqdefault.jpg?sqp=-oaymwEXCPYBEIoBSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLBBJZot6a956ja60IfJ0XnjwbcApg][https://www.youtube.com/watch?v=I3vbsGekgrM]][img[Stukov|https://i.ytimg.com/vi/G9N-QwQkuM4/hqdefault.jpg?sqp=-oaymwEZCPYBEIoBSFXyq4qpAwsIARUAAIhCGAFwAQ==&rs=AOn4CLB5DE7ndY9oqtZ7zCnSWa3qoKOscQ][https://www.youtube.com/watch?v=G9N-QwQkuM4]][img[Fenix|https://i.ytimg.com/vi/r6b0h4HCs5M/hqdefault.jpg?sqp=-oaymwEXCPYBEIoBSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLAF517C2AsAv5U4mNCaSifa33cqKw][https://www.youtube.com/watch?v=r6b0h4HCs5M]][img[Dehaka|https://i.ytimg.com/vi/fDO6vg3B2h8/hqdefault.jpg?sqp=-oaymwEXCPYBEIoBSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLDmsWu8pneG0rl4oVlcgVMtvOqPzA][https://www.youtube.com/watch?v=fDO6vg3B2h8]][img[Han&Horner|https://i.ytimg.com/vi/Q1op9B2GGqI/hqdefault.jpg?sqp=-oaymwEZCPYBEIoBSFXyq4qpAwsIARUAAIhCGAFwAQ==&rs=AOn4CLAmsUBWsc2XTN4p6V6whGo2vJYbiQ][https://www.youtube.com/watch?v=Q1op9B2GGqI]][img[Tychus|https://i.ytimg.com/vi/ndPaXVuMEhE/hqdefault.jpg?sqp=-oaymwEZCPYBEIoBSFXyq4qpAwsIARUAAIhCGAFwAQ==&rs=AOn4CLApES9lQQqhC8mb5ZLit6KKVscBNA][https://www.youtube.com/watch?v=ndPaXVuMEhE]][img[Zeratul|https://i.ytimg.com/vi/gB61f9EWbao/hqdefault.jpg?sqp=-oaymwEZCPYBEIoBSFXyq4qpAwsIARUAAIhCGAFwAQ==&rs=AOn4CLAFs55rkCscs8YqpDbd3Qou8yq1pQ][https://www.youtube.com/watch?v=gB61f9EWbao]][img[Stetmann|https://i.ytimg.com/vi/PrhRO417jCY/hqdefault.jpg?sqp=-oaymwEZCPYBEIoBSFXyq4qpAwsIARUAAIhCGAFwAQ==&rs=AOn4CLDUri5jsTmMD5PbI49okqwRWADtcQ][https://www.youtube.com/watch?v=PrhRO417jCY]][img[Mengsk|https://i.ytimg.com/vi/jSkNBO9vTjY/hqdefault.jpg?sqp=-oaymwEZCPYBEIoBSFXyq4qpAwsIARUAAIhCGAFwAQ==&rs=AOn4CLB-Z3e4M2sEUXZmGmRZROF3awl3Jw][https://www.youtube.com/watch?v=jSkNBO9vTjY]]+++<html><iframe width="1280" height="720" src="https://www.youtube.com/embed/ifptoUkXh8U" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></html>=== ===
!!![[Dogs of War]]
:Deploy enthralled Zerg that will seek out and attack nearby enemy units.
[img[https://bnetcmsus-a.akamaihd.net/cms/page_media/GNPAKR4Y1BYS1572477990490.jpg]]
![[Talents|MengskTalents]]
<<tiddler [[MengskTalent##7]]>>
!![[Dominion Laborer]]
Basic worker unit. Can gather resources, build structures, and repair. Can switch to a Trooper suit.
Can attack ground units.
[img[https://bnetcmsus-a.akamaihd.net/cms/page_media/8YFLS0Q4ENO51572391216221.png]]
[img[https://vignette.wikia.nocookie.net/starcraft/images/6/65/Repair_SC2_Icon1.jpg/revision/latest/scale-to-width-down/30?cb=20100917044253]] Repair
| !Level | !Talent |
|01 - Law and Order|Mengsk conscripts Dominion Laborers instead of SCV's to work and Dominion Troopers instead of Marines to fight. His Royal Guard units can level up, gaining new abilities and improvements to existing abilities.|
|05 - Unquestioned Authority|Imperial Mandate generates more quickly based on the supply count and ranks of your Royal Guard. Indoctrinated Laborers and Troopers also increase Imperial Mandate generation. Unlocks the Amplified Airwaves upgrade, which double Imperial Mandate generation from Indoctrinated Laborers and Troopers (Researched at the Fusion Core).|
|06 - Engineering Bay Upgrade Cache|Unlocks the following upgrades at the Engineering Bay:<br>-Allows Laborers and Troopers to switch modes directly on the battlefield.<br>-Further increases the range of units within Supply Bunkers by +1.|
!![[Dominion Trooper]]
General - purpose infantry. Can be outfitted with weapons for different combat situations. Can switch to a Laborer suit.
Can attack ground and air units.
[img[https://bnetcmsus-a.akamaihd.net/cms/page_media/8XC32TQ95HS71572391215499.png]]
| !Level | !Talent |
|01 - Law and Order|Mengsk conscripts Dominion Laborers instead of SCV's to work and Dominion Troopers instead of Marines to fight. His Royal Guard units can level up, gaining new abilities and improvements to existing abilities.|
|02 - Expanded Arsenal|Allows Troopers to equip Flamethrowers and Rocket Launchers.<br>[img[https://vignette.wikia.nocookie.net/starcraft/images/7/74/IncineratorGauntlets_SC2_Icon1.jpg/revision/latest/scale-to-width-down/30?cb=20100823051759]] [img[https://vignette.wikia.nocookie.net/starcraft/images/0/00/SC2ConcussiveShells.jpg/revision/latest/scale-to-width-down/30?cb=20151203181403]]|
|05 - Unquestioned Authority|Imperial Mandate generates more quickly based on the supply count and ranks of your Royal Guard. Indoctrinated Laborers and Troopers also increase Imperial Mandate generation. Unlocks the Amplified Airwaves upgrade, which double Imperial Mandate generation from Indoctrinated Laborers and Troopers (Researched at the Fusion Core).|
|06 - Engineering Bay Upgrade Cache|Unlocks the following upgrades at the Engineering Bay:<br>-Allows Laborers and Troopers to switch modes directly on the battlefield.<br>-Further increases the range of units within Supply Bunkers by +1.|
Deals 100 damage to shields and depletes the energy of enemy units in the target area. Stuns mechanical units for 1 second. cloaked units are revealed for 10 seconds after being hit.
At Rank 2, this ability stuns mechanical units for 2 seconds.
At Rank 3, this ability deals damage to equal in the amount of energy drained.
<<tiddler Costa with:"75" "9" "1 or 2 stun, 10 reveal" "8">>
/***
|Name|[[EditSectionPlugin]]|
|Source|http://www.TiddlyTools.com/#EditSectionPlugin|
|Documentation|http://www.TiddlyTools.com/#EditSectionPlugin|
|Version|1.8.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|invoke popup 'section editor' for specified section of a tiddler|
!!!!!Usage
<<<
{{{
<<editSection TiddlerName##sectionname label tooltip>>
}}}
This macro adds a command link that invokes a popup editor for a specific section, where:
*''~TiddlerName##sectionname'' specifies the tiddler and section you want to edit.
**If you omit the "##sectionname" portion (i.e., only enter "~TiddlerName"), the entire content of the indicated tiddler is edited.
**If you omit the "~TiddlerName" portion (i.e., only enter "##sectionname"), the current containing tiddler (if any) is assumed.
**Changing the section name in the popup editor //renames// that section within the tiddler.
**Changing the tiddler title in the popup editor //copies// that section to another tiddler.
**If the indicated tiddler and/or section does not yet exist, it will be created when you press 'save'.
*''label'' and ''tooltip'' (both //optional//) specify the link label and mouseover help text for the 'edit section' command link.
You can also add the following macro, //at the end of a tiddler//, to automatically add an 'edit section' command link for each section shown in the tiddler.
{{{
<<editSections label tooltip>>
}}}
*''label'' and ''tooltip'' (both //optional//) specify the link label and mouseover help text for the 'edit section' command link.
>//Note: when a document is viewed in 'readOnly' mode, both of these macros are bypassed and no output is produced.//
<<<
!!!!!Sample
<<<
This is an example section for you to try
<<<
!!!!!Example
<<<
{{{
<<editSection ##Sample>>
}}}
<<editSection ##Sample>>
<<<
!!!!!Configuration
<<<
To customize and/or translate the HTML form layout used to render the section editor, edit the [[EditSectionTemplate]] shadow tiddler.
<<<
!!!!!Revisions
<<<
2012.01.29 1.8.1 invoke autoSaveChanges() when tiddlers are modified.
2011.12.22 1.8.0 added {{{<<editSections>>}}} macro for automatic adding of 'edit section...' links to headings
2011.12.20 1.7.0 added drag handling for editor panels
2011.10.28 1.6.8 fixed getMX()/getMY() for Chrome scroll offset handling
2011.09.02 1.6.7 more refactoring and cleanup of default form init/save handlers
2011.08.02 1.6.6 major code refactor to allow customization of form handling for type-specific [[PasteUpHelperPlugin]] extensions
2011.07.30 1.6.5 in removePanel(), call Popup.remove() so 'child' popups are closed when panel is closed
2011.07.24 1.6.4 refactored save() to provide updateTiddler() entry point for use with PasteUpHelperPlugin 'quickmenu' commands. Added getMX() and getMY() for cross-browser mouse coordinates
2011.06.05 1.6.3 added TiddlySpace cloneFields() to delete and save handlers so editing sections automatically copies/owns an included tiddler
2011.05.05 1.6.2 renamed delete() to deleteSection() to avoid javascript keyword errors
2011.05.04 1.6.1 in delete(), use removeTiddler() for proper notification handling
2011.05.01 1.6.0 added delete() functionality
2011.01.09 1.5.1 in handler(), don't render command link if document is readOnly
2010.12.24 1.5.0 replace use of core Popups with custom panel handling (bypass core interactions and errors)
2010.11.07 1.4.0 in popup(), render HTML form from EditSectionTemplate, and then applyHtmlMacros() to render wiki-syntax macro-generated form elements (e.g., {{{<<option>>, <<select>>}}}, etc.). Also, refactored form init/save handling to add customization 'hooks'
2010.10.25 1.3.0 added support for editing complete tiddlers using "~TiddlerName" syntax (omit "##sectionname")
2010.07.15 1.2.0 added confirmation when section rename will overwrite other section
2010.07.13 1.1.1 added 'dirty flag' confirmation to popup handling to avoid discarding unsaved changes
2010.07.11 1.1.0 fixed handling for creating new sections in existing tiddlers. Copied StickyPopupPlugin to eliminate dependency. Added Popup.showHere()
2010.05.24 1.0.2 in save(), escape regexp chars in section titles (e.g. "!SectionNameWith?InIt")
2009.09.07 1.0.1 documentation/code cleanup
2009.09.01 1.0.0 initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.EditSectionPlugin= {major: 1, minor: 8, revision: 1, date: new Date(2012,1,29)};
config.macros.editSection = {
label: 'edit section...',
tip: 'edit %0',
sectionfmt: '{{hidden{\n!%0\n%1\n!end\n}}}',
sectionerr: 'Invalid tiddler/section name: %0',
newtiddlertxt: '',
discardmsg: 'Discard unsaved changes for %0?',
deletemsg: 'Are you sure you want to delete %0?',
overwritemsg: '%0##%2 already exists. Choose OK to overwrite it',
template: 'EditSectionTemplate', // DEFAULT FORM TEMPLATE
//}}}
// // PLUGIN INITIALIZATION
//{{{
init: function() {
// SHADOW PAYLOAD FOR DEFAULT EditSectionTemplate FORM DEFINITION
config.shadowTiddlers[this.template]
=store.getTiddlerText('EditSectionPlugin##HTML','');
// CLOSE PANELS IF CLICK on other than POPUP OR EDITOR PANEL
addEvent(document,'click',function(ev) {
var p=resolveTarget(ev||window.event);
while (p) {
if (hasClass(p,'editSectionPanel')) break;
if (hasClass(p,'popup')) break;
p=p.parentNode;
}
if (!p) config.macros.editSection.removeAllPanels();
return true;
});
// HIJACK QuickEditPlugin's getField() to support use with editSectionPanel
if (config.quickEdit) {
config.quickEdit.getTiddlerField=config.quickEdit.getField;
config.quickEdit.getField=function(where) {
var e=where; while(e) { if (hasClass(e,'editSectionPanel')) break; e=e.parentNode; }
return e?e.getElementsByTagName('textarea')[0]:this.getTiddlerField(where);
}
}
},
//}}}
// // GENERAL UTILITIES
//{{{
ok: function(ev) { var ev=ev||window.event;
ev.cancelBubble=true;
if(ev.stopPropagation)ev.stopPropagation();
return false;
},
getMX: function(ev) { var ev=ev||window.event; // GET MOUSE X
if (config.browser.isIE) return ev.clientX+findScrollX();// IE
if (config.userAgent.indexOf('chrome')!=-1) return ev.pageX; // Chrome
if (config.browser.isSafari) return ev.pageX+findScrollX(); // Webkit
else return ev.pageX; // Firefox/other
},
getMY: function(ev) { var ev=ev||window.event; // GET MOUSE Y
if (config.browser.isIE) return ev.clientY+findScrollY();// IE
if (config.userAgent.indexOf('chrome')!=-1) return ev.pageY; // Chrome
if (config.browser.isSafari) return ev.pageY+findScrollY(); // Webkit
else return ev.pageY; // Firefox/other
},
cloneFields: function(fields) { // for TIDDLYSPACE compatibility
var f=merge({},fields); // copy object
if (f["server.workspace"]!=config.defaultCustomFields["server.workspace"]) {
f=merge(f,config.defaultCustomFields); // overwrite with defaults
f["server.permissions"] = "read, write, create, delete";
delete f["server.page.revision"];
delete f["server.title"];
delete f["server.etag"];
}
return f;
},
//}}}
// // MACRO/CLICK HANDLER
//{{{
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
if (readOnly) return;
var here=story.findContainingTiddler(place);
var tid=params[0];
var label=params[1]||this.label.format([tid]);
var tip=params[2]||this.tip.format([tid]);
var btn=createTiddlyButton(place,label,tip,this.click);
btn.setAttribute('tid',tid);
},
click: function(ev,type) { // note: optional 'type' is passed in from PasteUpPluginHelper
var parts=this.getAttribute('tid').split('##');
var title=parts[0]; var section=parts[1];
var here=story.findContainingTiddler(this);
if (!title&&here) title=here.getAttribute('tiddler');
if (!title) return false;
var tid=title; if (section&§ion.length) tid=[title,section].join('##');
return config.macros.editSection.createPanel(this,ev,tid,title,section,type);
},
//}}}
// // EDITOR PANEL HANDLER
//{{{
createPanel: function(here,ev,tid,title,section,type) {
if (!this.removeAllPanels()) return this.ok(ev);
var p=createTiddlyElement(document.body,"ol",
"editSectionPanel","popup smallform editSectionPanel");
p.root=here;
p.setAttribute('dirty',null);
p.setAttribute('message',this.discardmsg.format([tid]));
p.onmousedown=this.mousedown; p.style.cursor='move'; // for panel dragging
p.innerHTML=store.getRecursiveTiddlerText(this.getForm(tid,type),'',10);
applyHtmlMacros(p,store.getTiddler(title));
var f=p.getElementsByTagName('form')[0];
f.panel=p;
f.title.value=title;
f.section.value=section||'';
f.init=this.getInitForm(tid,type);
f.save=this.getSaveForm(tid,type);
f.init(here,f,title,section,type);
this.showPanel(p,here,ev);
return this.ok(ev);
},
showPanel: function(p,here,ev) {
var x=this.getMX(ev); var y=this.getMY(ev);
var winw=findWindowWidth();
var scrollw=winw-document.body.offsetWidth;
if(p.offsetWidth>winw*0.75) p.style.width=winw*0.75 + "px";
if(x+p.offsetWidth>winw-scrollw-1) x=winw-p.offsetWidth-scrollw-1;
var s=p.style; s.left=x+'px'; s.top=y+'px'; s.display='block';
if(config.options.chkAnimate && anim) anim.startAnimating(new Scroller(p));
else window.scrollTo(0,ensureVisible(p));
},
removePanel: function(p) {
Popup.remove(); // child popup (if any) is closed when panel is closed
if (!p || p.getAttribute('dirty')!='true' || confirm(p.getAttribute('message')))
{ if (p) removeNode(p); return true; }
return false;
},
removeAllPanels: function() {
var ok=true;
jQuery('.editSectionPanel').each(function(index){
var f=this.getElementsByTagName('form')[0];
if (f.content) f.content.blur(); // force onchange (sets 'dirty' flag as needed)
ok=config.macros.editSection.removePanel(this);
return true;
});
return ok; // FALSE if panels remain
},
//}}}
// // PANEL DRAG HANDLER
//{{{
mousedown: function(ev) { ev=ev||window.event; // MOVE PANEL
var cme=config.macros.editSection; // abbrev
// ignore clickthrough from form fields, links, and images
var target=resolveTarget(ev);
if (['TEXTAREA','SELECT','INPUT','A','IMG'].contains(target.nodeName.toUpperCase()))
return true;
// GET TRACKING ELEMENT
var track=this; // if 'capture' not supported, track in element only
if (document.body.setCapture) var track=document.body; // IE
if (window.captureEvents) var track=window; // moz
if (!track.save_onmousemove) track.save_onmousemove=track.onmousemove;
if (!track.save_onmouseup) track.save_onmouseup =track.onmouseup;
if (!track.save_onkeyup) track.save_onkeyup =track.onkeyup;
track.onmousemove=cme.dragmove;
track.onmouseup =cme.dragup;
track.onkeyup =cme.dragkeyup;
// SAVE INITIAL POSITION
track.elem=this; // panel element
track.start={
X: cme.getMX(ev), Y: cme.getMY(ev), // mouse position
T: this.offsetTop, L: this.offsetLeft, // panel position
}
return cme.ok(ev);
},
dragmove: function(ev) { ev=ev||window.event; // MOVE PANEL
var cme=config.macros.editSection; // abbrev
// CAPTURE MOUSE EVENTS DURING DRAG
if (document.body.setCapture) document.body.setCapture(); // IE
if (window.captureEvents) window.captureEvents(Event.MouseMove|Event.MouseUp,true); // moz
var e=this.elem; var s=e.style;
var dX=cme.getMX(ev)-this.start.X;
var dY=cme.getMY(ev)-this.start.Y;
e.changed=e.changed||(Math.abs(dX)>1)||(Math.abs(dY)>1); // MINIMUM 2px MOVEMENT
if (!e.changed) return cme.ok(ev);
s.top =this.start.T+dY+'px';
s.left=this.start.L+dX+'px';
return cme.ok(ev);
},
dragkeyup: function(ev) { ev=ev||window.event; // STOP DRAG (ESC key)
if (ev.keyCode==27) {
var s=this.elem.style;
s.top=this.start.T+'px';
s.left=this.start.L+'px';
return this.onmouseup(ev);
}
},
dragup: function(ev) { ev=ev||window.event; // RELEASE MOUSE
var cme=config.macros.editSection; // abbrev
if (document.body.releaseCapture) document.body.releaseCapture(); // IE
if (window.releaseEvents) window.releaseEvents(Event.MouseMove|Event.MouseUp); // moz
this.onmousemove=this.save_onmousemove;
this.onmouseup =this.save_onmouseup;
this.onkeyup =this.save_onkeyup;
return cme.ok(ev);
},
//}}}
// // EDITOR FORM HANDLER
//{{{
getForm: function(tid,type) { return this.template; }, // see PasteUpHelperPlugin
getInitForm: function(tid,type) { return this.initForm; }, // see PasteUpHelperPlugin
getSaveForm: function(tid,type) { return this.saveForm; }, // see PasteUpHelperPlugin
initForm: function(here,form,title,section,type) { // SET FORM CONTENT FROM TIDDLER SECTION
var tid=title; if (section) tid=[title,section].join('##');
form.newsection.value=tid; // target for output
form.content.value=store.getTiddlerText(tid,'');
if (version.extensions.TextAreaPlugin) new window.TextAreaResizer(form.content);
},
saveForm: function(here,ev) { // GET SECTION CONTENT FROM FORM (DEFAULT=TEXT CONTENT ONLY)
var f=here.form;
// GET TARGET TITLE/SECTION
var tid=f.newsection.value;
var parts=tid.split('##');
var title=parts[0];
var section=parts[1];
var oldsection=f.section.value;
var where=f.panel.root;
if (!title) title=story.findContainingTiddler(where).getAttribute('tiddler');
if (!title) {
displayMessage(this.sectionerr.format([f.newsection.value]));
f.newsection.focus(); f.newsection.select(); return false;
}
// CHECK FOR TIDDLER OVERWRITE
if (!section && title!=f.title.value && store.tiddlerExists(title)) {
if (!confirm(config.messages.overwriteWarning.format([title])))
{ f.newsection.focus(); f.newsection.select(); return this.ok(ev); }
}
// WRITE TIDDLER CONTENT and CLOSE PANEL
this.updateTiddler(f.content.value,title,section,oldsection);
f.panel.setAttribute('dirty',null); this.removePanel(f.panel);
return this.ok(ev);
},
changed: function(here,ev) {
here.form.panel.setAttribute('dirty','true');
return this.ok(ev);
},
cancel: function(here,ev) {
this.removePanel(here.form.panel);
return this.ok(ev);
},
remove: function(here,ev) {
var f=here.form;
var title=f.title.value;
var section=f.section.value;
var tid=title; if (section.length) tid=[title,section].join('##');
var msg=this.deletemsg.format([tid]);
if (!confirm(msg)) return this.ok(ev);
this.deleteSection(title,section);
f.panel.setAttribute('dirty',null);
this.removePanel(f.panel);
return this.ok(ev);
},
//}}}
// // TIDDLER I/O
//{{{
updateTiddler: function(txt,title,section,oldsection) {
// GET (or CREATE) TIDDLER
var t=store.getTiddler(title);
var who =t&&config.options.chkForceMinorUpdate?t.modifier:config.options.txtUserName;
var when=t&&config.options.chkForceMinorUpdate?t.modified:new Date();
if (!t) {
t=new Tiddler(); t.text=store.getTiddlerText(title,'');
if (section&&!t.text.length) t.text=this.newtiddlertxt.format([title,section]);
}
// ADD/REVISE/RENAME SECTION CONTENT (if any)
if (section) {
// GET SECTION VALUES
if (!oldsection) var oldsection=section;
var oldval=store.getTiddlerText(title+'##'+oldsection); // previous section value
var newval=txt; // revised section value
var existingval=store.getTiddlerText(title+'##'+section); // existing section value
// REVISE TIDDLER TEXT
var txt=t.text; // default tiddler text = unchanged
var pattern=new RegExp('(.*!{1,6})'+oldsection.escapeRegExp()+'\\n'
+(oldval||'').escapeRegExp()+'((?:\\n!{1,6}|$).*)');
var altpattern=this.sectionfmt.format([oldsection,oldval||'']);
if (section!=oldsection && existingval) { // rename overwrites another section...
if (!confirm(this.overwritemsg.format([title,section])))
return this.ok(ev);
txt=txt.replace(altpattern,''); // REMOVE old section (auto-generated)
txt=txt.replace(pattern,'$2'); // REMOVE old section (generic format)
// TARGET new section name and value
pattern=new RegExp('(.*!{1,6})'+section.escapeRegExp()+'\\n'
+existingval.escapeRegExp()+'((?:\\n!{1,6}|$).*)');
oldval=existingval;
}
if (typeof oldval=="string") // section exists... update/rename it
txt=txt.replace(pattern,'$1'+section+'\n'+newval+'$2');
else // otherwise, append a new section to end of tiddler
txt=txt+this.sectionfmt.format([section,newval]);
}
// SAVE TIDDLER
var fields=this.cloneFields(t.fields);
store.saveTiddler(title,title,txt,who,when,t.tags,fields);
story.refreshTiddler(title,null,true);
autoSaveChanges();
},
deleteSection: function(title,section) {
// GET TIDDLER
var t=store.getTiddler(title); if (!t) return;
var who =t&&config.options.chkForceMinorUpdate?t.modifier:config.options.txtUserName;
var when=t&&config.options.chkForceMinorUpdate?t.modified:new Date();
if (!section) { // REMOVE TIDDLER
store.removeTiddler(title);
} else { // REMOVE SECTION FROM TIDDLER
var val=store.getTiddlerText(title+'##'+section); // CURRENT SECTION VALUE
if (typeof val=="string") { // section exists
var txt=t.text; // default tiddler text = unchanged
var pattern=new RegExp('(.*!{1,6})'+section.escapeRegExp()+'\\n'
+(val||'').escapeRegExp()+'((?:\\n!{1,6}|$).*)');
var altpattern=this.sectionfmt.format([section,val||'']);
txt=txt.replace(altpattern,''); // REMOVE old section (auto-generated)
txt=txt.replace(pattern,'$2'); // REMOVE old section (generic format)
var fields=this.cloneFields(t.fields);
store.saveTiddler(title,title,txt,who,when,t.tags,fields);
story.refreshTiddler(title,null,true);
autoSaveChanges();
}
}
}
}
//}}}
// // EDIT SECTIONS MACRO
//{{{
config.macros.editSections = {
label: 'edit...',
tip: 'edit this section',
command: '~~<<editSection [[##%0]] "%1" "%2">>~~',
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
if (readOnly) return;
var elems=place.parentNode.getElementsByTagName("*");
for (var i=0; i<elems.length; i++) { var e=elems[i]; // for each heading element
if (!['H1','H2','H3','H4','H5'].contains(e.nodeName)) continue;
var section=e.textContent;
var label=(params[0]||this.label).format([section]);
var tip =(params[1]||this.tip ).format([section]);
wikify(this.command.format([section,label,tip]),e);
}
}
}
//}}}
/***
//{{{
!HTML
<!--{{{-->
<!--
|Name|EditSectionTemplate|
|Source||
|Version||
|Author||
|License|http://www.TiddlyTools.com/#LegalStatements|
|Type|template|
|Requires|EditSectionPlugin|
|Description|popup editor form template used by EditSectionPlugin|
-->
<form action='javascript:;' style="white-space:nowrap">
<input type="hidden" name="title" value="">
<input type="hidden" name="section" value="">
<input type="text" name="newsection" value="" autocomplete="off" style="width:61%"
onchange="return config.macros.editSection.changed(this,event);">
<input type=button value="save" style="width:12%"
onclick="return config.macros.editSection.saveForm(this,event)">
<input type=button value="cancel" style="width:12%"
onclick="return config.macros.editSection.cancel(this,event)">
<input type=button value="delete" style="width:12%"
onclick="return config.macros.editSection.remove(this,event)">
<div macro="tiddler QuickEditToolbar"></div>
<textarea name="content" rows="15" cols="80" autocomplete="off"
onchange="return config.macros.editSection.changed(this,event)"></textarea>
</form>
<!--}}}-->
!end
//}}}
***/
// //<<editSections "edit">>
/***
|Name|EditTiddlerPlugin|
|Source|http://www.TiddlyTools.com/#EditTiddlerPlugin|
|Version|1.3.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|embed an 'edit' link in tiddler content to invoke edit on any specified tiddler title|
!!!!!Usage
<<<
{{{
<<editTiddler TiddlerName label>>
}}}
*''~TiddlerName''<br>the title of the tiddler to edit (omit or use the keyword 'here' for current //containing// tiddler)
*''label''<br>command link text (default="edit")
The plugin also adds ''ctrl-enter'' as a ''keyboard shortcut to start editing'' the current //selected// tiddler (the one with an active toolbar menu)
<<<
!!!!!Revisions
<<<
2009.08.15 1.3.1 in shortcut, invoke editTiddler command handler (sets focus and custom fields)
2009.08.14 1.3.0 added CTRL-ENTER keyboard shortcut to invoke edit for 'selected' tiddlers
2007.03.22 1.2.0 added 'here' keyword and optional 2nd param to specify label text
2007.03.15 1.1.1 fixed 'get tiddler ID' logic so it actually works! D'oh!
2007.03.11 1.1.0 changed 'get tiddler ID' logic so that macro can be used outside a tiddler (i.e., in mainMenu) by specifying the ID
2006.10.04 1.0.1 invoke findContainingTiddler() as fallback when 'tiddler' param is null
2006.04.28 1.0.0 Initial release
<<<
!!!Code
***/
//{{{
version.extensions.EditTiddlerPlugin={major:1, minor:3, revision:1, date: new Date(2009,8,15)};
config.macros.editTiddler={
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var tid=params.shift(); // use specified tiddler ID (or "here")
if (!tid || tid=="here") {
var here=story.findContainingTiddler(place);
if (!here) return; // not in a tiddler, do nothing
tid=here.getAttribute('tiddler'); // get ID from tiddler element
}
var label="edit"; if (params[0]) label=params.shift();
createTiddlyButton(place,label,'edit tiddler: '+tid,this.onclick).setAttribute('which',tid);
},
onclick: function(e) {
story.displayTiddler(null,this.getAttribute('which'),DEFAULT_EDIT_TEMPLATE);
}
}
//}}}
//{{{
addEvent(document,'keypress', function(ev) { var ev=ev||window.event;
if (!ev.ctrlKey || ev.keyCode!=13) return; // CTRL-ENTER = edit tiddler
story.forEachTiddler(function(title,tiddler){
if (hasClass(tiddler,'selected') && !story.isDirty(title))
config.commands.editTiddler.handler(ev,null,title);
});
return false;
});
//}}}
/%
!info
|Name|EmbedTiddlers|
|Source|http://www.TiddlyTools.com/#EmbedTiddlers|
|Version|2.0.2|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|Type|transclusion|
|Description|transclude a list of tiddlers in a specific order|
Usage
<<<
{{{
<<tiddler EmbedTiddlers with: "TiddlerName [[TiddlerName with spaces]] TiddlerName ...">>
<<tiddler EmbedTiddlers with: @TiddlerName>>
<<tiddler EmbedTiddlers with: =tagValue sortby>>
}}}
*''"~TiddlerName """[[TiddlerName with spaces]] TiddlerName ...""""''<br>specifies a list of tiddlers to embed
*''@~TiddlerName''<br>specifies a //separate// tiddler containing the space-separated, bracketed list of tiddlers to embed (e.g., like [[DefaultTiddlers]])
*''=tagValue''<br>embeds all tiddlers that are tagged with the indicated value
*''sortby'' (optional)<br> specifies a tiddler field for sorting the results (default="title"). Use "+" or "-" prefix to indicate the sort direction (ascending/descending), e.g., "-modified" sorts by tiddler modification date, most recent first.
Note: if MatchTagsPlugin is installed, you can use //compound Boolean logic expressions// in place of the "tagValue" (following the leading "="). However, because a boolean expression will always contain spaces, it MUST be enclosed in quotes (or doubled square brackets {{{[[...]]}}}), like this:
{{{
<<tiddler EmbedTiddlers with: "=settings AND NOT systemConfig">>
}}}
<<<
!end
!out
$1
!end
!show
<<tiddler EmbedTiddlers##out with: {{
var list='$1';
var sortby='title'; if ('$2'!='$'+'2') sortby='$2';
var tids=[];
if (list.substr(0,1)=='=') {
var fn=store.getMatchingTiddlers||store.getTaggedTiddlers;
var tagged=store.sortTiddlers(fn.apply(store,[list.substr(1)]),sortby);
for (var t=0; t<tagged.length; t++) tids.push(tagged[t].title);
} else {
if (list.substr(0,1)=='@') list=store.getTiddlerText(list.substr(1),'');
var tids=list.readBracketedList();
}
var out='';
for (var i=0; i<tids.length; i++) out+='<<tiddler [['+tids[i]+']]>\>';
out;
}}>>
!end
%/<<tiddler {{var src='EmbedTiddlers'; src+(tiddler&&tiddler.title==src?'##info':'##show');}}
with: "$1" "$2">>
!!Emperor's Shadow
Royal Guard specialist. Can use Pyrokinetic Immolation and EMP Blast. Can call down Tactical Missiles built at the Royal Academy.
Can attack ground and air units.
[img[https://bnetcmsus-a.akamaihd.net/cms/page_media/HT6EBV3L0R8T1572391215646.png][Emperor's Shadow]]
!Stats
Sight: 11
Energy: 200 (start at 50; regen +1/second); +50 energy per rank (regen +0.5/second)
Cost: <<tiddler Costs with:"200" "500" "40" "4">>
Speed: 2.25
Hit Points: 200 + 50 per Rank (max 350)
Armor: 0 + 1 per Rank (max 3)
Tags: Biological, Ground, Psionic
Weapon: C-10 Canister Rifle
Damage: 15 (+15 vs Light) (max 26/52)
Upgrades: +3.75/+7.5 per Rank
Targets: ground and air
Cooldown: 1.5 <<tiddler Time>>
Range: 6
!!Ability Card
| [[Move]] | [[Stop]] | [[Hold Position]] | [[Patrol]] | [[Attack]] |
| <<tiddler [[IMG##Royal Guard of the Dominion (Ghost)]]>>+++^*@<<tiddler [[Royal Guard of the Dominion (Ghost)]]>>=== | <<tiddler [[IMG##Might of the Empire (Ghost)]]>>+++^*@<<tiddler [[Might of the Empire (Ghost)]]>>=== | [[Hold Fire]] | [[Weapon Free]] | <<tiddler [[IMG##Sovereign Tactical Missiles]]>>+++^*@<<tiddler [[Sovereign Tactical Missiles]]>>=== |
| <<tiddler [[IMG##Pyrokinetic Immolation]]>>+++^*@<<tiddler [[Pyrokinetic Immolation]]>>=== | <<tiddler [[IMG##EMP Blast]]>>+++^*@<<tiddler [[EMP Blast]]>>=== | <<tiddler [[IMG##Labyrinth Cloak]]>>+++^*@<<tiddler [[Labyrinth Cloak]]>>=== | <<tiddler [[IMG##Tactical Missile Strike]]>>+++^*@<<tiddler [[Tactical Missile Strilke]]>>=== | [[Cancel]] |
!Talents
<<tiddler [[MengskTalent##6]]>><<tiddler [[MengskTalent##14]]>><<tiddler [[MengskTalent##15]]>>
<<editSections [edit]>>
[img[https://vignette.wikia.nocookie.net/starcraft/images/c/cd/Energy_Terran_SC1.png/revision/latest?cb=20080313050941]]
!Ability Card
|<<tiddler [[IMG##bEnlistment Center]]>>| <<tiddler [[IMG##Conscript Dominion Laborer]]>> | <<tiddler [[IMG##Conscript Dominion Trooper]]>> ||||
|~| <<tiddler [[IMG##Call to Labor]]>> | <<tiddler [[IMG##Call to Arms]]>> || [[Set Laborer Rally Point]] | [[Set Trooper Rally Point]] |
|~||| <<tiddler [[IMG##Orbital Trooper Pods]]>> | <<tiddler [[IMG##Lift Off]]>> ||
!Unit
Stats: 1500 HP, 1 Armor
Tags: Armored, Mechanical, Structure
Cost: 400 <<tiddler Minerals>>, +15 <<tiddler Supply>>, 100 <<tiddler Time>>
Produces: [[Dominion Laborer]],[[Dominion Trooper]]
Allows: Engineering Bay, Barracks, [[Supply Bunker]]
/***
|Name|ExportTiddlersPlugin|
|Source|http://www.TiddlyTools.com/#ExportTiddlersPlugin|
|Documentation|http://www.TiddlyTools.com/#ExportTiddlersPluginInfo|
|Version|2.9.6|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|interactively select/export tiddlers to a separate file|
!!!!!Documentation
>see [[ExportTiddlersPluginInfo]]
!!!!!Inline control panel (live):
><<exportTiddlers inline>>
!!!!!Revisions
<<<
2011.02.14 2.9.6 fix OSX error: use picker.file.path
2010.02.25 2.9.5 added merge checkbox option and improved 'merge' status message
|please see [[ExportTiddlersPluginInfo]] for additional revision details|
2005.10.09 0.0.0 development started
<<<
!!!!!Code
***/
//{{{
// version
version.extensions.ExportTiddlersPlugin= {major: 2, minor: 9, revision: 6, date: new Date(2011,2,14)};
// default shadow definition
config.shadowTiddlers.ExportTiddlers='<<exportTiddlers inline>>';
// add 'export' backstage task (following built-in import task)
if (config.tasks) { // TW2.2 or above
config.tasks.exportTask = {
text:'export',
tooltip:'Export selected tiddlers to another file',
content:'<<exportTiddlers inline>>'
}
config.backstageTasks.splice(config.backstageTasks.indexOf('importTask')+1,0,'exportTask');
}
config.macros.exportTiddlers = {
$: function(id) { return document.getElementById(id); }, // abbreviation
label: 'export tiddlers',
prompt: 'Copy selected tiddlers to an export document',
okmsg: '%0 tiddler%1 written to %2',
failmsg: 'An error occurred while creating %1',
overwriteprompt: '%0\ncontains %1 tiddler%2 that will be discarded or replaced',
mergestatus: '%0 tiddler%1 added, %2 tiddler%3 updated, %4 tiddler%5 unchanged',
statusmsg: '%0 tiddler%1 - %2 selected for export',
newdefault: 'export.html',
datetimefmt: '0MM/0DD/YYYY 0hh:0mm:0ss', // for 'filter date/time' edit fields
type_TW: "tw", type_PS: "ps", type_TX: "tx", type_CS: "cs", type_NF: "nf", // file type tokens
type_map: { // maps type param to token values
tiddlywiki:"tw", tw:"tw", wiki: "tw",
purestore: "ps", ps:"ps", store:"ps",
plaintext: "tx", tx:"tx", text: "tx",
comma: "cs", cs:"cs", csv: "cs",
newsfeed: "nf", nf:"nf", xml: "nf", rss:"nf"
},
handler: function(place,macroName,params) {
if (params[0]!='inline')
{ createTiddlyButton(place,this.label,this.prompt,this.togglePanel); return; }
var panel=this.createPanel(place);
panel.style.position='static';
panel.style.display='block';
},
createPanel: function(place) {
var panel=this.$('exportPanel');
if (panel) { panel.parentNode.removeChild(panel); }
setStylesheet(store.getTiddlerText('ExportTiddlersPlugin##css',''),'exportTiddlers');
panel=createTiddlyElement(place,'span','exportPanel',null,null)
panel.innerHTML=store.getTiddlerText('ExportTiddlersPlugin##html','');
this.initFilter();
this.refreshList(0);
var fn=this.$('exportFilename');
if (window.location.protocol=='file:' && !fn.value.length) {
// get new target path/filename
var newPath=getLocalPath(window.location.href);
var slashpos=newPath.lastIndexOf('/'); if (slashpos==-1) slashpos=newPath.lastIndexOf('\\');
if (slashpos!=-1) newPath=newPath.substr(0,slashpos+1); // trim filename
fn.value=newPath+this.newdefault;
}
return panel;
},
togglePanel: function(e) { var e=e||window.event;
var cme=config.macros.exportTiddlers; // abbrev
var parent=resolveTarget(e).parentNode;
var panel=cme.$('exportPanel');
if (panel==undefined || panel.parentNode!=parent)
panel=cme.createPanel(parent);
var isOpen=panel.style.display=='block';
if(config.options.chkAnimate)
anim.startAnimating(new Slider(panel,!isOpen,e.shiftKey || e.altKey,'none'));
else
panel.style.display=isOpen?'none':'block' ;
if (panel.style.display!='none') {
cme.refreshList(0);
cme.$('exportFilename').focus();
cme.$('exportFilename').select();
}
e.cancelBubble = true; if (e.stopPropagation) e.stopPropagation(); return(false);
},
process: function(which) { // process panel control interactions
var theList=this.$('exportList'); if (!theList) return false;
var count = 0;
var total = store.getTiddlers('title').length;
switch (which.id) {
case 'exportFilter':
count=this.filterExportList();
var panel=this.$('exportFilterPanel');
if (count==-1) { panel.style.display='block'; break; }
this.$('exportStart').disabled=(count==0);
this.$('exportDelete').disabled=(count==0);
this.displayStatus(count,total);
if (count==0) { alert('No tiddlers were selected'); panel.style.display='block'; }
break;
case 'exportStart':
this.go();
break;
case 'exportDelete':
this.deleteTiddlers();
break;
case 'exportHideFilter':
case 'exportToggleFilter':
var panel=this.$('exportFilterPanel')
panel.style.display=(panel.style.display=='block')?'none':'block';
break;
case 'exportSelectChanges':
var lastmod=new Date(document.lastModified);
for (var t = 0; t < theList.options.length; t++) {
if (theList.options[t].value=='') continue;
var tiddler=store.getTiddler(theList.options[t].value); if (!tiddler) continue;
theList.options[t].selected=(tiddler.modified>lastmod);
count += (tiddler.modified>lastmod)?1:0;
}
this.$('exportStart').disabled=(count==0);
this.$('exportDelete').disabled=(count==0);
this.displayStatus(count,total);
if (count==0) alert('There are no unsaved changes');
break;
case 'exportSelectAll':
for (var t = 0; t < theList.options.length; t++) {
if (theList.options[t].value=='') continue;
theList.options[t].selected=true;
count += 1;
}
this.$('exportStart').disabled=(count==0);
this.$('exportDelete').disabled=(count==0);
this.displayStatus(count,count);
break;
case 'exportSelectOpened':
for (var t=0; t<theList.options.length; t++) theList.options[t].selected=false;
var tiddlerDisplay=this.$('tiddlerDisplay');
for (var t=0; t<tiddlerDisplay.childNodes.length;t++) {
var tiddler=tiddlerDisplay.childNodes[t].id.substr(7);
for (var i=0; i<theList.options.length; i++) {
if (theList.options[i].value!=tiddler) continue;
theList.options[i].selected=true; count++; break;
}
}
this.$('exportStart').disabled=(count==0);
this.$('exportDelete').disabled=(count==0);
this.displayStatus(count,total);
if (count==0) alert('There are no tiddlers currently opened');
break;
case 'exportSelectRelated':
// recursively build list of related tiddlers
function getRelatedTiddlers(tid,tids) {
var t=store.getTiddler(tid); if (!t || tids.contains(tid)) return tids;
tids.push(t.title);
if (!t.linksUpdated) t.changed();
for (var i=0; i<t.links.length; i++)
if (t.links[i]!=tid) tids=getRelatedTiddlers(t.links[i],tids);
return tids;
}
// for all currently selected tiddlers, gather up the related tiddlers (including self) and select them as well
var tids=[];
for (var i=0; i<theList.options.length; i++)
if (theList.options[i].selected) tids=getRelatedTiddlers(theList.options[i].value,tids);
// select related tiddlers (includes original selected tiddlers)
for (var i=0; i<theList.options.length; i++)
theList.options[i].selected=tids.contains(theList.options[i].value);
this.displayStatus(tids.length,total);
break;
case 'exportListSmaller': // decrease current listbox size
var min=5;
theList.size-=(theList.size>min)?1:0;
break;
case 'exportListLarger': // increase current listbox size
var max=(theList.options.length>25)?theList.options.length:25;
theList.size+=(theList.size<max)?1:0;
break;
case 'exportClose':
this.$('exportPanel').style.display='none';
break;
}
return false;
},
displayStatus: function(count,total) {
var txt=this.statusmsg.format([total,total!=1?'s':'',!count?'none':count==total?'all':count]);
clearMessage(); displayMessage(txt);
return txt;
},
refreshList: function(selectedIndex) {
var theList = this.$('exportList'); if (!theList) return;
// get the sort order
var sort;
if (!selectedIndex) selectedIndex=0;
if (selectedIndex==0) sort='modified';
if (selectedIndex==1) sort='title';
if (selectedIndex==2) sort='modified';
if (selectedIndex==3) sort='modifier';
if (selectedIndex==4) sort='tags';
// unselect headings and count number of tiddlers actually selected
var count=0;
for (var t=5; t < theList.options.length; t++) {
if (!theList.options[t].selected) continue;
if (theList.options[t].value!='')
count++;
else { // if heading is selected, deselect it, and then select and count all in section
theList.options[t].selected=false;
for ( t++; t<theList.options.length && theList.options[t].value!=''; t++) {
theList.options[t].selected=true;
count++;
}
}
}
// disable 'export' and 'delete' buttons if no tiddlers selected
this.$('exportStart').disabled=(count==0);
this.$('exportDelete').disabled=(count==0);
// show selection count
var tiddlers = store.getTiddlers('title');
if (theList.options.length) this.displayStatus(count,tiddlers.length);
// if a [command] item, reload list... otherwise, no further refresh needed
if (selectedIndex>4) return;
// clear current list contents
while (theList.length > 0) { theList.options[0] = null; }
// add heading and control items to list
var i=0;
var indent=String.fromCharCode(160)+String.fromCharCode(160);
theList.options[i++]=
new Option(tiddlers.length+' tiddlers in document', '',false,false);
theList.options[i++]=
new Option(((sort=='title' )?'>':indent)+' [by title]', '',false,false);
theList.options[i++]=
new Option(((sort=='modified')?'>':indent)+' [by date]', '',false,false);
theList.options[i++]=
new Option(((sort=='modifier')?'>':indent)+' [by author]', '',false,false);
theList.options[i++]=
new Option(((sort=='tags' )?'>':indent)+' [by tags]', '',false,false);
// output the tiddler list
switch(sort) {
case 'title':
for(var t = 0; t < tiddlers.length; t++)
theList.options[i++] = new Option(tiddlers[t].title,tiddlers[t].title,false,false);
break;
case 'modifier':
case 'modified':
var tiddlers = store.getTiddlers(sort);
// sort descending for newest date first
tiddlers.sort(function (a,b) {if(a[sort] == b[sort]) return(0); else return (a[sort] > b[sort]) ? -1 : +1; });
var lastSection = '';
for(var t = 0; t < tiddlers.length; t++) {
var tiddler = tiddlers[t];
var theSection = '';
if (sort=='modified') theSection=tiddler.modified.toLocaleDateString();
if (sort=='modifier') theSection=tiddler.modifier;
if (theSection != lastSection) {
theList.options[i++] = new Option(theSection,'',false,false);
lastSection = theSection;
}
theList.options[i++] = new Option(indent+indent+tiddler.title,tiddler.title,false,false);
}
break;
case 'tags':
var theTitles = {}; // all tiddler titles, hash indexed by tag value
var theTags = new Array();
for(var t=0; t<tiddlers.length; t++) {
var title=tiddlers[t].title;
var tags=tiddlers[t].tags;
if (!tags || !tags.length) {
if (theTitles['untagged']==undefined) { theTags.push('untagged'); theTitles['untagged']=new Array(); }
theTitles['untagged'].push(title);
}
else for(var s=0; s<tags.length; s++) {
if (theTitles[tags[s]]==undefined) { theTags.push(tags[s]); theTitles[tags[s]]=new Array(); }
theTitles[tags[s]].push(title);
}
}
theTags.sort();
for(var tagindex=0; tagindex<theTags.length; tagindex++) {
var theTag=theTags[tagindex];
theList.options[i++]=new Option(theTag,'',false,false);
for(var t=0; t<theTitles[theTag].length; t++)
theList.options[i++]=new Option(indent+indent+theTitles[theTag][t],theTitles[theTag][t],false,false);
}
break;
}
theList.selectedIndex=selectedIndex; // select current control item
this.$('exportStart').disabled=true;
this.$('exportDelete').disabled=true;
this.displayStatus(0,tiddlers.length);
},
askForFilename: function(here) {
var msg=here.title; // use tooltip as dialog box message
var path=getLocalPath(document.location.href);
var slashpos=path.lastIndexOf('/'); if (slashpos==-1) slashpos=path.lastIndexOf('\\');
if (slashpos!=-1) path = path.substr(0,slashpos+1); // remove filename from path, leave the trailing slash
var filetype=this.$('exportFormat').value.toLowerCase();
var defext='html';
if (filetype==this.type_TX) defext='txt';
if (filetype==this.type_CS) defext='csv';
if (filetype==this.type_NF) defext='xml';
var file=this.newdefault.replace(/html$/,defext);
var result='';
if(window.Components) { // moz
try {
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
var nsIFilePicker = window.Components.interfaces.nsIFilePicker;
var picker = Components.classes['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker);
picker.init(window, msg, nsIFilePicker.modeSave);
var thispath = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
thispath.initWithPath(path);
picker.displayDirectory=thispath;
picker.defaultExtension=defext;
picker.defaultString=file;
picker.appendFilters(nsIFilePicker.filterAll|nsIFilePicker.filterText|nsIFilePicker.filterHTML);
if (picker.show()!=nsIFilePicker.returnCancel) var result=picker.file.path;
}
catch(e) { alert('error during local file access: '+e.toString()) }
}
else { // IE
try { // XPSP2 IE only
var s = new ActiveXObject('UserAccounts.CommonDialog');
s.Filter='All files|*.*|Text files|*.txt|HTML files|*.htm;*.html|XML files|*.xml|';
s.FilterIndex=defext=='txt'?2:'html'?3:'xml'?4:1;
s.InitialDir=path;
s.FileName=file;
if (s.showOpen()) var result=s.FileName;
}
catch(e) { // fallback
var result=prompt(msg,path+file);
}
}
return result;
},
initFilter: function() {
this.$('exportFilterStart').checked=false; this.$('exportStartDate').value='';
this.$('exportFilterEnd').checked=false; this.$('exportEndDate').value='';
this.$('exportFilterTags').checked=false; this.$('exportTags').value='';
this.$('exportFilterText').checked=false; this.$('exportText').value='';
this.showFilterFields();
},
showFilterFields: function(which) {
var show=this.$('exportFilterStart').checked;
this.$('exportFilterStartBy').style.display=show?'block':'none';
this.$('exportStartDate').style.display=show?'block':'none';
var val=this.$('exportFilterStartBy').value;
this.$('exportStartDate').value
=this.getFilterDate(val,'exportStartDate').formatString(this.datetimefmt);
if (which && (which.id=='exportFilterStartBy') && (val=='other'))
this.$('exportStartDate').focus();
var show=this.$('exportFilterEnd').checked;
this.$('exportFilterEndBy').style.display=show?'block':'none';
this.$('exportEndDate').style.display=show?'block':'none';
var val=this.$('exportFilterEndBy').value;
this.$('exportEndDate').value
=this.getFilterDate(val,'exportEndDate').formatString(this.datetimefmt);
if (which && (which.id=='exportFilterEndBy') && (val=='other'))
this.$('exportEndDate').focus();
var show=this.$('exportFilterTags').checked;
this.$('exportTags').style.display=show?'block':'none';
var show=this.$('exportFilterText').checked;
this.$('exportText').style.display=show?'block':'none';
},
getFilterDate: function(val,id) {
var result=0;
switch (val) {
case 'file':
result=new Date(document.lastModified);
break;
case 'other':
result=new Date(this.$(id).value);
break;
default: // today=0, yesterday=1, one week=7, two weeks=14, a month=31
var now=new Date(); var tz=now.getTimezoneOffset()*60000; now-=tz;
var oneday=86400000;
if (id=='exportStartDate')
result=new Date((Math.floor(now/oneday)-val)*oneday+tz);
else
result=new Date((Math.floor(now/oneday)-val+1)*oneday+tz-1);
break;
}
return result;
},
filterExportList: function() {
var theList = this.$('exportList'); if (!theList) return -1;
var filterStart=this.$('exportFilterStart').checked;
var val=this.$('exportFilterStartBy').value;
var startDate=config.macros.exportTiddlers.getFilterDate(val,'exportStartDate');
var filterEnd=this.$('exportFilterEnd').checked;
var val=this.$('exportFilterEndBy').value;
var endDate=config.macros.exportTiddlers.getFilterDate(val,'exportEndDate');
var filterTags=this.$('exportFilterTags').checked;
var tags=this.$('exportTags').value;
var filterText=this.$('exportFilterText').checked;
var text=this.$('exportText').value;
if (!(filterStart||filterEnd||filterTags||filterText)) {
alert('Please set the selection filter');
this.$('exportFilterPanel').style.display='block';
return -1;
}
if (filterStart&&filterEnd&&(startDate>endDate)) {
var msg='starting date/time:\n'
msg+=startDate.toLocaleString()+'\n';
msg+='is later than ending date/time:\n'
msg+=endDate.toLocaleString()
alert(msg);
return -1;
}
// if filter by tags, get list of matching tiddlers
// use getMatchingTiddlers() (if MatchTagsPlugin is installed) for full boolean expressions
// otherwise use getTaggedTiddlers() for simple tag matching
if (filterTags) {
var fn=store.getMatchingTiddlers||store.getTaggedTiddlers;
var t=fn.apply(store,[tags]);
var tagged=[];
for (var i=0; i<t.length; i++) tagged.push(t[i].title);
}
// scan list and select tiddlers that match all applicable criteria
var total=0;
var count=0;
for (var i=0; i<theList.options.length; i++) {
// get item, skip non-tiddler list items (section headings)
var opt=theList.options[i]; if (opt.value=='') continue;
// get tiddler, skip missing tiddlers (this should NOT happen)
var tiddler=store.getTiddler(opt.value); if (!tiddler) continue;
var sel=true;
if ( (filterStart && tiddler.modified<startDate)
|| (filterEnd && tiddler.modified>endDate)
|| (filterTags && !tagged.contains(tiddler.title))
|| (filterText && (tiddler.text.indexOf(text)==-1) && (tiddler.title.indexOf(text)==-1)))
sel=false;
opt.selected=sel;
count+=sel?1:0;
total++;
}
return count;
},
deleteTiddlers: function() {
var list=this.$('exportList'); if (!list) return;
var tids=[];
for (i=0;i<list.length;i++)
if (list.options[i].selected && list.options[i].value.length)
tids.push(list.options[i].value);
if (!confirm('Are you sure you want to delete these tiddlers:\n\n'+tids.join(', '))) return;
store.suspendNotifications();
for (t=0;t<tids.length;t++) {
var tid=store.getTiddler(tids[t]); if (!tid) continue;
var msg="'"+tid.title+"' is tagged with 'systemConfig'.\n\n";
msg+='Removing this tiddler may cause unexpected results. Are you sure?'
if (tid.tags.contains('systemConfig') && !confirm(msg)) continue;
store.removeTiddler(tid.title);
story.closeTiddler(tid.title);
}
store.resumeNotifications();
alert(tids.length+' tiddlers deleted');
this.refreshList(0); // reload listbox
store.notifyAll(); // update page display
},
go: function() {
if (window.location.protocol!='file:') // make sure we are local
{ displayMessage(config.messages.notFileUrlError); return; }
// get selected tidders, target filename, target type, and notes
var list=this.$('exportList'); if (!list) return;
var tids=[]; for (var i=0; i<list.options.length; i++) {
var opt=list.options[i]; if (!opt.selected||!opt.value.length) continue;
var tid=store.getTiddler(opt.value); if (!tid) continue;
tids.push(tid);
}
if (!tids.length) return; // no tiddlers selected
var target=this.$('exportFilename').value.trim();
if (!target.length) {
displayMessage('A local target path/filename is required',target);
return;
}
var merge=this.$('exportMerge').checked;
var filetype=this.$('exportFormat').value.toLowerCase();
var notes=this.$('exportNotes').value.replace(/\n/g,'<br>');
var total={val:0};
var out=this.assembleFile(target,filetype,tids,notes,total,merge);
if (!total.val) return; // cancelled file overwrite
var link='file:///'+target.replace(/\\/g,'/');
var samefile=link==decodeURIComponent(window.location.href);
var p=getLocalPath(document.location.href);
if (samefile) {
if (config.options.chkSaveBackups) { var t=loadOriginal(p);if(t)saveBackup(p,t); }
if (config.options.chkGenerateAnRssFeed && saveRss instanceof Function) saveRss(p);
}
var ok=saveFile(target,out);
displayMessage((ok?this.okmsg:this.failmsg).format([total.val,total.val!=1?'s':'',target]),link);
},
plainTextHeader:
'Source:\n\t%0\n'
+'Title:\n\t%1\n'
+'Subtitle:\n\t%2\n'
+'Created:\n\t%3 by %4\n'
+'Application:\n\tTiddlyWiki %5 / %6 %7\n\n',
plainTextTiddler:
'- - - - - - - - - - - - - - -\n'
+'| title: %0\n'
+'| created: %1\n'
+'| modified: %2\n'
+'| edited by: %3\n'
+'| tags: %4\n'
+'- - - - - - - - - - - - - - -\n'
+'%5\n',
plainTextFooter:
'',
newsFeedHeader:
'<'+'?xml version="1.0"?'+'>\n'
+'<rss version="2.0">\n'
+'<channel>\n'
+'<title>%1</title>\n'
+'<link>%0</link>\n'
+'<description>%2</description>\n'
+'<language>en-us</language>\n'
+'<copyright>Copyright '+(new Date().getFullYear())+' %4</copyright>\n'
+'<pubDate>%3</pubDate>\n'
+'<lastBuildDate>%3</lastBuildDate>\n'
+'<docs>http://blogs.law.harvard.edu/tech/rss</docs>\n'
+'<generator>TiddlyWiki %5 / %6 %7</generator>\n',
newsFeedTiddler:
'\n%0\n',
newsFeedFooter:
'</channel></rss>',
pureStoreHeader:
'<html><body>'
+'<style type="text/css">'
+' #storeArea {display:block;margin:1em;}'
+' #storeArea div {padding:0.5em;margin:1em;border:2px solid black;height:10em;overflow:auto;}'
+' #pureStoreHeading {width:100%;text-align:left;background-color:#eeeeee;padding:1em;}'
+'</style>'
+'<div id="pureStoreHeading">'
+' TiddlyWiki "PureStore" export file<br>'
+' Source'+': <b>%0</b><br>'
+' Title: <b>%1</b><br>'
+' Subtitle: <b>%2</b><br>'
+' Created: <b>%3</b> by <b>%4</b><br>'
+' TiddlyWiki %5 / %6 %7<br>'
+' Notes:<hr><pre>%8</pre>'
+'</div>'
+'<div id="storeArea">',
pureStoreTiddler:
'%0\n%1',
pureStoreFooter:
'</div><!--POST-BODY-START-->\n<!--POST-BODY-END--></body></html>',
assembleFile: function(target,filetype,tids,notes,total,merge) {
var revised='';
var now = new Date().toLocaleString();
var src=convertUnicodeToUTF8(document.location.href);
var title = convertUnicodeToUTF8(wikifyPlain('SiteTitle').htmlEncode());
var subtitle = convertUnicodeToUTF8(wikifyPlain('SiteSubtitle').htmlEncode());
var user = convertUnicodeToUTF8(config.options.txtUserName.htmlEncode());
var twver = version.major+'.'+version.minor+'.'+version.revision;
var v=version.extensions.ExportTiddlersPlugin; var pver = v.major+'.'+v.minor+'.'+v.revision;
var headerargs=[src,title,subtitle,now,user,twver,'ExportTiddlersPlugin',pver,notes];
switch (filetype) {
case this.type_TX: // plain text
var header=this.plainTextHeader.format(headerargs);
var footer=this.plainTextFooter;
break;
case this.type_CS: // comma-separated
var fields={};
for (var i=0; i<tids.length; i++) for (var f in tids[i].fields) fields[f]=f;
var names=['title','created','modified','modifier','tags','text'];
for (var f in fields) names.push(f);
var header=names.join(',')+'\n';
var footer='';
break;
case this.type_NF: // news feed (XML)
headerargs[0]=store.getTiddlerText('SiteUrl','');
var header=this.newsFeedHeader.format(headerargs);
var footer=this.newsFeedFooter;
break;
case this.type_PS: // PureStore (no code)
var header=this.pureStoreHeader.format(headerargs);
var footer=this.pureStoreFooter;
break;
case this.type_TW: // full TiddlyWiki
default:
var currPath=getLocalPath(window.location.href);
var original=loadFile(currPath);
if (!original) { displayMessage(config.messages.cantSaveError); return; }
var posDiv = locateStoreArea(original);
if (!posDiv) { displayMessage(config.messages.invalidFileError.format([currPath])); return; }
var header = original.substr(0,posDiv[0]+startSaveArea.length)+'\n';
var footer = '\n'+original.substr(posDiv[1]);
break;
}
var out=this.getData(target,filetype,tids,fields,merge);
var revised = header+convertUnicodeToUTF8(out.join('\n'))+footer;
// if full TW, insert page title and language attr, and reset all MARKUP blocks...
if (filetype==this.type_TW) {
var newSiteTitle=convertUnicodeToUTF8(getPageTitle()).htmlEncode();
revised=revised.replaceChunk('<title'+'>','</title'+'>',' ' + newSiteTitle + ' ');
revised=updateLanguageAttribute(revised);
var titles=[]; for (var i=0; i<tids.length; i++) titles.push(tids[i].title);
revised=updateMarkupBlock(revised,'PRE-HEAD',
titles.contains('MarkupPreHead')? 'MarkupPreHead' :null);
revised=updateMarkupBlock(revised,'POST-HEAD',
titles.contains('MarkupPostHead')?'MarkupPostHead':null);
revised=updateMarkupBlock(revised,'PRE-BODY',
titles.contains('MarkupPreBody')? 'MarkupPreBody' :null);
revised=updateMarkupBlock(revised,'POST-SCRIPT',
titles.contains('MarkupPostBody')?'MarkupPostBody':null);
}
total.val=out.length;
return revised;
},
getData: function(target,filetype,tids,fields,merge) {
// output selected tiddlers and gather list of titles (for use with merge)
var out=[]; var titles=[];
var url=store.getTiddlerText('SiteUrl','');
for (var i=0; i<tids.length; i++) {
out.push(this.formatItem(store,filetype,tids[i],url,fields));
titles.push(tids[i].title);
}
// if TW or PureStore format, ask to merge with existing tiddlers (if any)
if (filetype==this.type_TW || filetype==this.type_PS) {
var txt=loadFile(target);
if (txt && txt.length) {
var remoteStore=new TiddlyWiki();
if (version.major+version.minor*.1+version.revision*.01<2.52) txt=convertUTF8ToUnicode(txt);
if (remoteStore.importTiddlyWiki(txt)) {
var existing=remoteStore.getTiddlers('title');
var msg=this.overwriteprompt.format([target,existing.length,existing.length!=1?'s':'']);
if (merge) {
var added=titles.length; var updated=0; var kept=0;
for (var i=0; i<existing.length; i++)
if (titles.contains(existing[i].title)) {
added--; updated++;
} else {
out.push(this.formatItem(remoteStore,filetype,existing[i],url));
kept++;
}
displayMessage(this.mergestatus.format(
[added,added!=1?'s':'',updated,updated!=1?'s':'',kept,kept!=1?'s':'',]));
}
else if (!confirm(msg)) out=[]; // empty the list = don't write file
}
}
}
return out;
},
formatItem: function(s,f,t,u,fields) {
if (f==this.type_TW)
var r=s.getSaver().externalizeTiddler(s,t);
if (f==this.type_PS)
var r=this.pureStoreTiddler.format([t.title,s.getSaver().externalizeTiddler(s,t)]);
if (f==this.type_NF)
var r=this.newsFeedTiddler.format([t.saveToRss(u)]);
if (f==this.type_TX)
var r=this.plainTextTiddler.format([t.title, t.created.toLocaleString(), t.modified.toLocaleString(),
t.modifier, String.encodeTiddlyLinkList(t.tags), t.text]);
if (f==this.type_CS) {
function toCSV(t) { return '"'+t.replace(/"/g,'""')+'"'; } // always encode CSV
var out=[ toCSV(t.title), toCSV(t.created.toLocaleString()), toCSV(t.modified.toLocaleString()),
toCSV(t.modifier), toCSV(String.encodeTiddlyLinkList(t.tags)), toCSV(t.text) ];
for (var f in fields) out.push(toCSV(t.fields[f]||''));
var r=out.join(',');
}
return r||"";
}
}
//}}}
/***
!!!Control panel CSS
//{{{
!css
#exportPanel {
display: none; position:absolute; z-index:12; width:35em; right:105%; top:6em;
background-color: #eee; color:#000; font-size: 8pt; line-height:110%;
border:1px solid black; border-bottom-width: 3px; border-right-width: 3px;
padding: 0.5em; margin:0em; -moz-border-radius:1em;-webkit-border-radius:1em;
}
#exportPanel a, #exportPanel td a { color:#009; display:inline; margin:0px; padding:1px; }
#exportPanel table {
width:100%; border:0px; padding:0px; margin:0px;
font-size:8pt; line-height:110%; background:transparent;
}
#exportPanel tr { border:0px;padding:0px;margin:0px; background:transparent; }
#exportPanel td { color:#000; border:0px;padding:0px;margin:0px; background:transparent; }
#exportPanel select { width:98%;margin:0px;font-size:8pt;line-height:110%;}
#exportPanel input { width:98%;padding:0px;margin:0px;font-size:8pt;line-height:110%; }
#exportPanel textarea { width:98%;padding:0px;margin:0px;overflow:auto;font-size:8pt; }
#exportPanel .box {
border:1px solid black; padding:3px; margin-bottom:5px;
background:#f8f8f8; -moz-border-radius:5px;-webkit-border-radius:5px; }
#exportPanel .topline { border-top:2px solid black; padding-top:3px; margin-bottom:5px; }
#exportPanel .rad { width:auto;border:0 }
#exportPanel .chk { width:auto;border:0 }
#exportPanel .btn { width:auto; }
#exportPanel .btn1 { width:98%; }
#exportPanel .btn2 { width:48%; }
#exportPanel .btn3 { width:32%; }
#exportPanel .btn4 { width:24%; }
#exportPanel .btn5 { width:19%; }
!end
//}}}
!!!Control panel HTML
//{{{
!html
<!-- target path/file -->
<div>
<div style="float:right;padding-right:.5em">
<input type="checkbox" style="width:auto" id="exportMerge" CHECKED
title="combine selected tiddlers with existing tiddlers (if any) in export file"> merge
</div>
export to:<br>
<input type="text" id="exportFilename" size=40 style="width:93%"><input
type="button" id="exportBrowse" value="..." title="select or enter a local folder/file..." style="width:5%"
onclick="var fn=config.macros.exportTiddlers.askForFilename(this); if (fn.length) this.previousSibling.value=fn; ">
</div>
<!-- output format -->
<div>
format:
<select id="exportFormat" size=1>
<option value="TW">TiddlyWiki HTML document (includes core code)</option>
<option value="PS">TiddlyWiki "PureStore" HTML file (tiddler data only)</option>
<option value="TX">TiddlyWiki plain text TXT file (tiddler source listing)</option>
<option value="CS">Comma-Separated Value (CSV) data file</option>
<option value="NF">RSS NewsFeed XML file</option>
</select>
</div>
<!-- notes -->
<div>
notes:<br>
<textarea id="exportNotes" rows=3 cols=40 style="height:4em;margin-bottom:5px;" onfocus="this.select()"></textarea>
</div>
<!-- list of tiddlers -->
<table><tr align="left"><td>
select:
<a href="JavaScript:;" id="exportSelectAll"
onclick="return config.macros.exportTiddlers.process(this)" title="select all tiddlers">
all </a>
<a href="JavaScript:;" id="exportSelectChanges"
onclick="return config.macros.exportTiddlers.process(this)" title="select tiddlers changed since last save">
changes </a>
<a href="JavaScript:;" id="exportSelectOpened"
onclick="return config.macros.exportTiddlers.process(this)" title="select tiddlers currently being displayed">
opened </a>
<a href="JavaScript:;" id="exportSelectRelated"
onclick="return config.macros.exportTiddlers.process(this)" title="select tiddlers related to the currently selected tiddlers">
related </a>
<a href="JavaScript:;" id="exportToggleFilter"
onclick="return config.macros.exportTiddlers.process(this)" title="show/hide selection filter">
filter </a>
</td><td align="right">
<a href="JavaScript:;" id="exportListSmaller"
onclick="return config.macros.exportTiddlers.process(this)" title="reduce list size">
– </a>
<a href="JavaScript:;" id="exportListLarger"
onclick="return config.macros.exportTiddlers.process(this)" title="increase list size">
+ </a>
</td></tr></table>
<select id="exportList" multiple size="10" style="margin-bottom:5px;"
onchange="config.macros.exportTiddlers.refreshList(this.selectedIndex)">
</select><br>
<!-- selection filter -->
<div id="exportFilterPanel" style="display:none">
<table><tr align="left"><td>
selection filter
</td><td align="right">
<a href="JavaScript:;" id="exportHideFilter"
onclick="return config.macros.exportTiddlers.process(this)" title="hide selection filter">hide</a>
</td></tr></table>
<div class="box">
<input type="checkbox" class="chk" id="exportFilterStart" value="1"
onclick="config.macros.exportTiddlers.showFilterFields(this)"> starting date/time<br>
<table cellpadding="0" cellspacing="0"><tr valign="center"><td width="50%">
<select size=1 id="exportFilterStartBy"
onchange="config.macros.exportTiddlers.showFilterFields(this);">
<option value="0">today</option>
<option value="1">yesterday</option>
<option value="7">a week ago</option>
<option value="30">a month ago</option>
<option value="file">file date</option>
<option value="other">other (mm/dd/yyyy hh:mm)</option>
</select>
</td><td width="50%">
<input type="text" id="exportStartDate" onfocus="this.select()"
onchange="config.macros.exportTiddlers.$('exportFilterStartBy').value='other';">
</td></tr></table>
<input type="checkbox" class="chk" id="exportFilterEnd" value="1"
onclick="config.macros.exportTiddlers.showFilterFields(this)"> ending date/time<br>
<table cellpadding="0" cellspacing="0"><tr valign="center"><td width="50%">
<select size=1 id="exportFilterEndBy"
onchange="config.macros.exportTiddlers.showFilterFields(this);">
<option value="0">today</option>
<option value="1">yesterday</option>
<option value="7">a week ago</option>
<option value="30">a month ago</option>
<option value="file">file date</option>
<option value="other">other (mm/dd/yyyy hh:mm)</option>
</select>
</td><td width="50%">
<input type="text" id="exportEndDate" onfocus="this.select()"
onchange="config.macros.exportTiddlers.$('exportFilterEndBy').value='other';">
</td></tr></table>
<input type="checkbox" class="chk" id=exportFilterTags value="1"
onclick="config.macros.exportTiddlers.showFilterFields(this)"> match tags<br>
<input type="text" id="exportTags" onfocus="this.select()">
<input type="checkbox" class="chk" id=exportFilterText value="1"
onclick="config.macros.exportTiddlers.showFilterFields(this)"> match titles/tiddler text<br>
<input type="text" id="exportText" onfocus="this.select()">
</div> <!--box-->
</div> <!--panel-->
<!-- action buttons -->
<div style="text-align:center">
<input type=button class="btn4" onclick="config.macros.exportTiddlers.process(this)"
id="exportFilter" value="apply filter">
<input type=button class="btn4" onclick="config.macros.exportTiddlers.process(this)"
id="exportStart" value="export tiddlers">
<input type=button class="btn4" onclick="config.macros.exportTiddlers.process(this)"
id="exportDelete" value="delete tiddlers">
<input type=button class="btn4" onclick="config.macros.exportTiddlers.process(this)"
id="exportClose" value="close">
</div><!--center-->
!end
//}}}
***/
/***
|Name|ExportTiddlersPluginInfo|
|Source|http://www.TiddlyTools.com/#ExportTiddlersPlugin|
|Documentation|http://www.TiddlyTools.com/#ExportTiddlersPluginInfo|
|Version|2.9.5|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|documentation|
|Description|Documentation for ExportTiddlersPlugin|
interactively select and extract tiddlers from your ~TiddlyWiki document, and write them into another file, using one of several different file formats:
* ~TiddlyWiki - a complete, stand-alone, standard TiddlyWiki HTML document
* ~PureStore - a small HTML archive file containing tiddler data only (no core code)
* ~PlainText - a simple TXT text file with tiddler source listings
* Comma - a "Comma Separated Value" data/spreadsheet file
* ~NewsFeed - an XML-format file that can be published for RSS syndication.
!!!!!Usage
<<<
{{{
<<exportTiddlers>> (sidebar menu item)
<<exportTiddlers inline>> (embedded control panel)
}}}
Inline control panel (live):
<<exportTiddlers inline>>
Optional "special tiddlers" used by this plugin:
* SiteUrl<br>URL for official server-published version of document being viewed (used in XML export). Default: //none//
<<<
!!!!!Revisions
<<<
2010.02.25 2.9.5 added merge checkbox option and improved 'merge' status message
2009.09.12 2.9.4 fixed 'return false' to prevent IE page transitions
2009.07.06 2.9.3 moved HTML to section for size reduction
2009.07.03 2.9.2 TW252 fixup: don't call convertUTF8ToUnicode() for local loadFile() I/O
2009.04.30 2.9.1 custom fields in CSV output
2009.04.19 2.9.0 added CSV format
2009.02.26 2.8.5 use macro-specific definition of $() function abbreviation (avoids conflict with JQuery)
2008.09.29 2.8.4 in getData(), convert existing TW file from UTF8 to Unicode before merging to correct handling of international characters and symbols.
2008.09.26 2.8.3 in go(), if rewriting *current* file and chkSaveBackups and/or chkGenerateAnRssFeed is enabled, then write a backup file or RSS feed, respectively.
2008.09.24 2.8.2 in assembleFile(), make sure that markup block is updated if corresponding Markup* tiddler is exported.
2008.09.19 2.8.1 in formatItem(), removed unnecessary convertUnicodeToUTF8() (was causing double-conversion!)
2008.09.11 2.8.0 extensive code cleanup: moved all global functions inside macro object. Re-wrote file generator and I/O to support TiddlyWiki, PlainText, PureStore, and NewsFeed file formats. Replaced inline 'match tags' code with use of getMatchingTiddlers() from [[MatchTagsPlugin]] (if installed), with fallback to core getTaggedTiddlers() otherwise.
2008.05.27 2.7.0 added ability to 'merge' with existing export file. Also, revised 'matchTags' functionality to be more robust and more efficient
2008.05.12 2.6.1 automatically add 'export' task to backstage (moved from BackstageTweaks)
2008.03.10 2.6.0 added "delete tiddlers" button
2007.12.04 *.*.* update for TW2.3.0: replaced deprecated core functions, regexps, and macros
2007.11.10 2.5.1 removed debugging alert messages from promptForExportFilename()
2007.10.31 2.5.0 code reduction: removed incomplete/unused interface and supporting functions for exporting directly to http, https or ftp servers. Plugin now supports exporting to local file only. Also, updated TW document output to generate TW2.2 compatible file format.
2007.10.30 2.4.2 added automatic shadow tiddler definition for [[ExportTiddlers]]
2007.07.16 2.4.1 in exportTWHeader(), reset HTML source 'markup' so installed markup is NOT copied to new file.
2007.06.30 2.4.0 added "select related tiddlers" feature. Recursively scans the tiddler links[] info to find all tiddlers referenced by any of the currently selected tiddler, and then selects them all (including the original tiddlers).
2007.04.19 2.3.0 in exportData(), pass SiteURL value as param to saveToRss(). Fixes 'undefined' appearing in tiddler link in XML output. Also, in refreshExportList(), added 'sort by tags'. Also, added 'group select'... selecting a heading (date,author,tag) auto-selects all tiddlers in that group.
2007.03.02 2.2.6 in onClickExportButton(), when selecting open tiddlers for TW2.2, look for "storyDisplay" with fallback to "tiddlerDisplay" for TW2.1 or earlier
2007.03.01 2.2.5 removed hijack of store.saveChanges()
2006.11.08 2.2.4 added promptForExportFilename() and replaced type="file" control with edit field + browse button ("...").
2006.10.12 2.2.3 in exportDIVFooter(), write POST-BODY-START/END markers for compatibility with TW2.1 core file format.
2006.05.11 2.2.2 in createExportPanel, removed call to addNotification() to reduce unneeded feedback messages and increase overall document performance.
2006.05.02 2.2.1 Use displayMessage() to show number of selected tiddlers instead of updating listbox 'header' item after each selection. Prevents awkward 'scroll-to-top' behavior that made multi-select via ctrl-click nearly impossible.
2006.04.29 2.2.0 New features: free-form "Notes" text inserted in the header of PureStore files.
2006.03.29 2.1.3 added calls to convertUnicodeToUTF8() for generated output, so it better handles international characters.
2006.02.12 2.1.2 more FF1501 bug fixes.
2006.02.04 2.1.1 added var to unintended globals to avoids FireFox1501 crash bug
2006.02.02 2.1.0 Added support for output of complete TiddlyWiki documents
2006.01.21 2.0.1 Defer initial panel creation and only register a notification function when panel first is created
in saveChanges 'hijack', create panel as needed. Note: if window.event is not available to identify the click location, the export panel is positioned relative to the 'tiddlerDisplay' element of the TW document.
2005.12.27 2.0.0 Update for TW2.0.
2005.12.24 0.9.5 Minor adjustments to CSS to force correct link colors regardless of TW stylesheet selection
2005.12.16 0.9.4 Dynamically create/remove exportPanel so only one instance exists at a time
2005.11.15 0.9.2 added non-Ajax post to bypass cross-domain security restrictions.
2005.11.08 0.9.1 moved HTML, CSS and control initialization into exportInit() function and call from macro handler instead of at load time.
2005.10.28 0.9.0 added 'select opened tiddlers' feature. Based on a suggestion by Geoff Slocock
2005.10.24 0.8.3 Corrected hijack of 'save changes' when using http:
2005.10.18 0.8.2 added AJAX functions
2005.10.18 0.8.1 Corrected timezone handling and error checking/reporting when filtering tiddlers. More style tweaks, minor text changes and some assorted layout cleanup.
2005.10.17 0.8.0 First pre-release.
2005.10.16 0.7.0 filter by tags
2005.10.15 0.6.0 filter by title/text
2005.10.14 0.5.0 export to local file (DIV or XML)
2005.10.14 0.4.0 filter by start/end date
2005.10.13 0.3.0 panel interaction
2005.10.11 0.2.0 panel layout
2005.10.10 0.1.0 code framework
2005.10.09 0.0.0 development started
<<<
/***
|Name:|ExtentTagButtonPlugin|
|Description:|Adds a New tiddler button in the tag drop down|
|Version:|3.2a|
|Date:|27-Jun-2011|
|Source:|http://mptw.tiddlyspot.com/#ExtendTagButtonPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License|http://mptw.tiddlyspot.com/#TheBSDLicense|
***/
//{{{
window.onClickTag_mptw_orig = window.onClickTag;
window.onClickTag = function(e) {
window.onClickTag_mptw_orig.apply(this,arguments);
var tag = this.getAttribute("tag");
var title = this.getAttribute("tiddler");
// Thanks Saq, you're a genius :)
var popup = Popup.stack[Popup.stack.length-1].popup;
createTiddlyElement(createTiddlyElement(popup,"li",null,"listBreak"),"div");
wikify("<<newTiddler label:'New tiddler' tag:'"+tag+"'>>",createTiddlyElement(popup,"li"));
return false;
}
//}}}
{{smallform{
<<tiddler HideTiddlerTags>><<tiddler GetTheFAQs>>}}}
/***
|Name|FAQViewerPlugin|
|Source|http://www.TiddlyTools.com/#FAQViewerPlugin|
|Version|1.4.3|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|select and display FAQ tiddlers from a droplist, sorted by date|
!!!!!Usage
<<<
{{{<<faqViewer startwith:TiddlerName tagname classname sortby dateformat>>}}}
where:
*''startwith:TiddlerName'' (optional)<br>
*''tagname'' (optional)<br>specifies the set of tiddlers to include in the FAQ list (default='faq')
*''classname'' (optional)<br>specifies a CSS class to be applied surrounding the FAQ tiddler content
*''sortby'' (optional)<br>specifies the name of a tiddler field to sort by. Use '+' or '-' as a prefix on the fieldname to indicate ascending or descending order, respectively (default='-modified'). You can also use the special keyword, ''Description'', to sort alphabetically based on the value of a slice named 'Description', that can be defined in each FAQ tiddler. Note: if a particular FAQ tiddler has no description slice, the title of the tiddler is used as a fallback.
*''dateformat'' (optional)<br>specifies the formatting for dates displayed in the list. Use " " (a single space) to suppress the date display.
examples:
{{{<<faqViewer>>}}}
{{smallform small{<<faqViewer>>}}}
{{{<<faqViewer package outline +title " ">>}}}
{{smallform small{<<faqViewer package outline +title " ">>}}}
<<<
!!!!!Revisions
<<<
2009.06.14 [1.4.3] moved html definition to tiddler section (saves space)
2008.10.21 [1.4.2] removed animation (was interfering with 'overflow:scroll' CSS)
2008.09.30 [1.4.1] corrected filter by tag handling broken in 1.4.0
2008.09.29 [1.4.0] added optional 'startwith:TiddlerName' param
2008.09.24 [1.3.1] added animation when opening/closing faq content panel
2008.09.21 [1.3.0] sort by 'description' slice values. also added 'previous' and 'next' buttons for sequential viewing of FAQ articles
2008.09.20 [1.2.0] optional 'sortby' and 'dateformat' params
2008.01.20 [1.1.0] support for alternative 'target' tag instead of 'faq' (default)
2007.10.15 [1.0.0] converted to true plugin
2007.02.01 [0.0.0] inline script
<<<
!!!!!Code
***/
//{{{
version.extensions.FAQViewerPlugin={major: 1, minor: 4, revision: 3, date: new Date(2009,6,14)};
config.shadowTiddlers.FAQViewer='{{smallform{<<faqViewer>>}}}';
config.macros.faqViewer= {
dateFormat:'YYYY.0MM.0DD 0hh:0mm - ',
startparam: 'startwith:',
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
// create form
if (params[0]&¶ms[0].substr(0,this.startparam.length)==this.startparam)
{ var startwith=params[0].substr(this.startparam.length); params.shift(); }
var console=createTiddlyElement(place,'span');
console.innerHTML=store.getTiddlerText('FAQViewerPlugin##html').replace(/%classname%/,params[1]||'');
this.go(console.getElementsByTagName('form')[0],startwith, params[0],params[2],params[3]);
},
go: function(f,startwith,targetType,sortby,dateformat) {
var targetType=targetType||'faq';
var sortby=sortby||'-modified';
var dateformat=dateformat||this.dateFormat;
var datefield=sortby.indexOf('created')!=-1?'created':'modified';
f.targetType.value=targetType;
f.sortBy.value=sortby;
f.dateFmt.value=dateformat;
var lists=f.getElementsByTagName('select'); if (!lists.length) return;
var FAQList=lists[0]; var taglist=lists[1];
while (FAQList.options[0]) FAQList.options[0]=null; // empty FAQList
if (f.search.value!=f.search.defaultValue) var find=f.search.value;
var tiddlers=store.getTaggedTiddlers(targetType,'modified').reverse();
if (tiddlers && sortby) {
if (sortby.indexOf('escription')==-1) // sort by tiddler field
tiddlers=store.sortTiddlers(tiddlers,sortby);
else
tiddlers.sort(function(a,b){ // sort by description slice (or title, if no slice)
var da=store.getTiddlerSlice(a.title,'Description')||a.title;
var db=store.getTiddlerSlice(b.title,'Description')||b.title;
return da==db?0:(da>db?+1:-1);
});
}
var matchcount=0; var tags=[]; var selectedIndex=0;
FAQList.options[0]=new Option('select an item...','',false,false);
for (var i=0; i<tiddlers.length; i++) {
for (var t=0; t<tiddlers[i].tags.length; t++)
tags.pushUnique(tiddlers[i].tags[t]); // collect other tags
if (find && find.length && tiddlers[i].text.indexOf(find)==-1) continue;
if (taglist.value && taglist.value.length && !tiddlers[i].tags.contains(taglist.value)) continue;
matchcount++;
var d=store.getTiddlerSlice(tiddlers[i].title,'Description')||tiddlers[i].title;
d=tiddlers[i][datefield].formatString(dateformat)+d;
FAQList.options[FAQList.options.length]=new Option(d,tiddlers[i].title,false,false);
if (tiddlers[i].title==startwith) selectedIndex=i+1;
}
FAQList.options[0].text='select an item... ['+tiddlers.length+' item'+(tiddlers.length!=1?'s':'');
if (find && find.length || taglist.value.length)
FAQList.options[0].text+=', '+matchcount+' match'+(matchcount!=1?'es':'');
FAQList.options[0].text+=']';
FAQList.selectedIndex=selectedIndex;
if (selectedIndex) config.macros.faqViewer.show(f,startwith);
if (!taglist.options.length) { // only load tag list the first time, since it doesn't change
while (taglist.options[0]) taglist.options[0]=null; // empty taglist
taglist.options[0]=new Option('filter by tag...','',false,false);
var tagcount=0;
for (var t=0; t<tags.length; t++) {
if (tags[t].toLowerCase()==targetType) continue;
if (tags[t].indexOf('exclude')!=-1) continue;
taglist.options[taglist.options.length]
=new Option(tags[t],tags[t],false,false);
tagcount++;
}
if (!tagcount) taglist.options[taglist.options.length]
=new Option('no category tags found','',false,false);
}
},
show: function(f,v) {
var fmt=this.faqlayout;
if (store.getTaggedTiddlers(v).length) fmt=this.packagelayout;
var target=f.getElementsByTagName('div')[0];
removeChildren(target);
wikify(fmt.format([v]),target);
target.style.display='block';
f.prev.parentNode.style.display='block';
f.next.focus();
f.done.disabled=!v.length;
},
faqlayout:
'{{toolbar floatright fine{//now viewing: //[[%0]] }}}<<tiddler [[%0]]>>',
packagelayout:
'{{toolbar floatright fine{//now viewing: //[[%0]] }}}\n'
+'{{floatright borderleft fine{<<tagging [[%0]]>>}}}<<tiddler [[%0]]>>{{clear block{}}}'
}
//}}}
/***
//{{{
!html
<form onsubmit='return false;' style='display:inline;margin:0;padding:0;white-space:nowrap;'><!--
--><input type='hidden' name='targetType' value='faq'><!--
--><input type='hidden' name='sortBy' value='-modified'><!--
--><input type='hidden' name='dateFmt' value='YYYY.0MM.0DD 0hh:0mm - '><!--
--><select name='list' size=1 style='width:50%'
onchange='if (!this.value.length) this.form.done.onclick();
else config.macros.faqViewer.show(this.form,this.value);'><!--
--></select><!--
--><select name='taglist' size=1 style='width:12%'
title='list only items that have a specific category tag'
onchange='var f=this.form; f.done.onclick();
config.macros.faqViewer.go(f,"",f.targetType.value,f.sortBy.value,f.dateFmt.value)'><!--
--></select><!--
--><input type='text' name='search' value='enter search text...' style='width:20%'
title='list only items that contain the search text (use blank to match all)'
onfocus='this.select()'
onkeyup=' if (event.keyCode==13) this.form.find.onclick();
if (!this.value.length) {this.value=this.defaultValue; this.select(); this.form.find.onclick();}'><!--
--><input type='button' name='find' value='find' style='width:6%'
title='list only items that contain the search text '
onclick='var f=this.form; f.done.onclick();
config.macros.faqViewer.go(f,"",f.targetType.value,f.sortBy.value,f.dateFmt.value)'><!--
--><input type='button' name='reset' value='reset' style='width:6%'
title='reset FAQViewer to default '
onclick='var f=this.form; f.done.onclick();
f.search.value=f.search.defaultValue; f.taglist.selectedIndex=0;
config.macros.faqViewer.go(f,"",f.targetType.value,f.sortBy.value,f.dateFmt.value)'><!--
--><input type='button' name='done' value='done' disabled style='width:6%'
title='hide current item display'
onclick='var target=this.form.getElementsByTagName("div")[0];
target.style.display="none"; removeChildren(target);
this.form.prev.parentNode.style.display="none";
this.form.list.selectedIndex=0; this.disabled=true;'><!--
--><div class="%classname%" style="display:none;white-space:normal;"></div><!--
--><span style='text-align:right;display:none;overflow:auto;'><!--
--><input type='button' name='prev' value='◄ prev' style='float:left;font-size:80%;'
title='view previous item'
onclick='var f=this.form; var i=f.list.selectedIndex-1;
f.list.selectedIndex=i<0?f.list.length-1:i; f.list.onchange();'><!--
--><input type='button' name='next' value='next ►' style='float:right;font-size:80%;'
title='view next item'
onclick='var f=this.form; var i=f.list.selectedIndex+1;
f.list.selectedIndex=i>f.list.length-1?0:i; f.list.onchange();'><!--
--></span><!--
--></form>
!end
//}}}
***/
!!![[Forced Conscription]]
:Drop a Supply Bunker filled with unfortunate Troopers souls to man it.
[img[https://bnetcmsus-a.akamaihd.net/cms/page_media/J43CIUR6QJOM1572477986489.jpg]]
![[Talents|MengskTalents]]
<<tiddler [[MengskTalent##1]]>><<tiddler [[MengskTalent##2]]>>
[img[https://vignette.wikia.nocookie.net/starcraft/images/3/31/TerranVespene_SC2_Game1.png/revision/latest/scale-to-width-down/12?cb=20100328123821]]
/***
|Name|GotoPlugin|
|Source|http://www.TiddlyTools.com/#GotoPlugin|
|Documentation|http://www.TiddlyTools.com/#GotoPluginInfo|
|Version|1.9.2|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|view any tiddler by entering it's title - displays list of possible matches|
''View a tiddler by typing its title and pressing //enter//.'' As you type, a list of possible matches is displayed. You can scroll-and-click (or use arrows+enter) to select/view a tiddler, or press escape to close the listbox to resume typing. When the listbox is not displayed, pressing //escape// clears the current input.
!!!Documentation
>see [[GotoPluginInfo]]
!!!Configuration
<<<
*Match titles only after {{twochar{<<option txtIncrementalSearchMin>>}}} or more characters are entered.<br>Use down-arrow to start matching with shorter input. //Note: This option value is also set/used by [[SearchOptionsPlugin]]//.
*To set the maximum height of the listbox, you can create a tiddler tagged with <<tag systemConfig>>, containing:
//{{{
config.macros.gotoTiddler.listMaxSize=10; // change this number
//}}}
<<<
!!!Revisions
<<<
2009.05.22 [1.9.2] use reverseLookup() for IncludePlugin
|please see [[GotoPluginInfo]] for additional revision details|
2006.05.05 [0.0.0] started
<<<
!!!Code
***/
//{{{
version.extensions.GotoPlugin= {major: 1, minor: 9, revision: 2, date: new Date(2009,5,22)};
// automatically tweak shadow SideBarOptions to add <<gotoTiddler>> macro above <<search>>
config.shadowTiddlers.SideBarOptions=config.shadowTiddlers.SideBarOptions.replace(/<<search>>/,"{{button{goto}}}\n<<gotoTiddler>><<search>>");
if (config.options.txtIncrementalSearchMin===undefined) config.options.txtIncrementalSearchMin=3;
config.macros.gotoTiddler= {
listMaxSize: 10,
listHeading: 'Found %0 matching title%1...',
searchItem: "Search for '%0'...",
handler:
function(place,macroName,params,wikifier,paramString,tiddler) {
var quiet =params.contains("quiet");
var showlist =params.contains("showlist");
var search =params.contains("search");
params = paramString.parseParams("anon",null,true,false,false);
var instyle =getParam(params,"inputstyle","");
var liststyle =getParam(params,"liststyle","");
var filter =getParam(params,"filter","");
var html=this.html;
var keyevent=window.event?"onkeydown":"onkeypress"; // IE event fixup for ESC handling
html=html.replace(/%keyevent%/g,keyevent);
html=html.replace(/%search%/g,search);
html=html.replace(/%quiet%/g,quiet);
html=html.replace(/%showlist%/g,showlist);
html=html.replace(/%display%/g,showlist?'block':'none');
html=html.replace(/%position%/g,showlist?'static':'absolute');
html=html.replace(/%instyle%/g,instyle);
html=html.replace(/%liststyle%/g,liststyle);
html=html.replace(/%filter%/g,filter);
if (config.browser.isIE) html=this.IEtableFixup.format([html]);
var span=createTiddlyElement(place,'span');
span.innerHTML=html; var form=span.getElementsByTagName("form")[0];
if (showlist) this.fillList(form.list,'',filter,search,0);
},
html:
'<form onsubmit="return false" style="display:inline;margin:0;padding:0">\
<input name=gotoTiddler type=text autocomplete="off" accesskey="G" style="%instyle%"\
title="Enter title text... ENTER=goto, SHIFT-ENTER=search for text, DOWN=select from list"\
onfocus="this.select(); this.setAttribute(\'accesskey\',\'G\');"\
%keyevent%="return config.macros.gotoTiddler.inputEscKeyHandler(event,this,this.form.list,%search%,%showlist%);"\
onkeyup="return config.macros.gotoTiddler.inputKeyHandler(event,this,%quiet%,%search%,%showlist%);">\
<select name=list style="display:%display%;position:%position%;%liststyle%"\
onchange="if (!this.selectedIndex) this.selectedIndex=1;"\
onblur="this.style.display=%showlist%?\'block\':\'none\';"\
%keyevent%="return config.macros.gotoTiddler.selectKeyHandler(event,this,this.form.gotoTiddler,%showlist%);"\
onclick="return config.macros.gotoTiddler.processItem(this.value,this.form.gotoTiddler,this,%showlist%);">\
</select><input name="filter" type="hidden" value="%filter%">\
</form>',
IEtableFixup:
"<table style='width:100%;display:inline;padding:0;margin:0;border:0;'>\
<tr style='padding:0;margin:0;border:0;'><td style='padding:0;margin:0;border:0;'>\
%0</td></tr></table>",
getItems:
function(list,val,filter) {
if (!list.cache || !list.cache.length || val.length<=config.options.txtIncrementalSearchMin) {
// starting new search, fetch and cache list of tiddlers/shadows/tags
list.cache=new Array();
if (filter.length) {
var fn=store.getMatchingTiddlers||store.getTaggedTiddlers;
var tiddlers=store.sortTiddlers(fn.apply(store,[filter]),'title');
} else
var tiddlers=store.reverseLookup('tags','excludeLists');
for(var t=0; t<tiddlers.length; t++) list.cache.push(tiddlers[t].title);
if (!filter.length) {
for (var t in config.shadowTiddlers) list.cache.pushUnique(t);
var tags=store.getTags();
for(var t=0; t<tags.length; t++) list.cache.pushUnique(tags[t][0]);
}
}
var found = [];
var match=val.toLowerCase();
for(var i=0; i<list.cache.length; i++)
if (list.cache[i].toLowerCase().indexOf(match)!=-1) found.push(list.cache[i]);
return found;
},
getItemSuffix:
function(t) {
if (store.tiddlerExists(t)) return ""; // tiddler
if (store.isShadowTiddler(t)) return " (shadow)"; // shadow
return " (tag)"; // tag
},
fillList:
function(list,val,filter,search,key) {
if (list.style.display=="none") return; // not visible... do nothing!
var indent='\xa0\xa0\xa0';
var found = this.getItems(list,val,filter); // find matching items...
found.sort(); // alpha by title
while (list.length > 0) list.options[0]=null; // clear list
var hdr=this.listHeading.format([found.length,found.length==1?"":"s"]);
list.options[0]=new Option(hdr,"",false,false);
for (var t=0; t<found.length; t++) list.options[list.length]=
new Option(indent+found[t]+this.getItemSuffix(found[t]),found[t],false,false);
if (search)
list.options[list.length]=new Option(this.searchItem.format([val]),"*",false,false);
list.size=(list.length<this.listMaxSize?list.length:this.listMaxSize); // resize list...
list.selectedIndex=key==38?list.length-1:key==40?1:0;
},
keyProcessed:
function(ev) { // utility function
ev.cancelBubble=true; // IE4+
try{event.keyCode=0;}catch(e){}; // IE5
if (window.event) ev.returnValue=false; // IE6
if (ev.preventDefault) ev.preventDefault(); // moz/opera/konqueror
if (ev.stopPropagation) ev.stopPropagation(); // all
return false;
},
inputEscKeyHandler:
function(event,here,list,search,showlist) {
if (event.keyCode==27) {
if (showlist) { // clear input, reset list
here.value=here.defaultValue;
this.fillList(list,'',here.form.filter.value,search,0);
}
else if (list.style.display=="none") // clear input
here.value=here.defaultValue;
else list.style.display="none"; // hide list
return this.keyProcessed(event);
}
return true; // key bubbles up
},
inputKeyHandler:
function(event,here,quiet,search,showlist) {
var key=event.keyCode;
var list=here.form.list;
var filter=here.form.filter;
// non-printing chars bubble up, except for a few:
if (key<48) switch(key) {
// backspace=8, enter=13, space=32, up=38, down=40, delete=46
case 8: case 13: case 32: case 38: case 40: case 46: break; default: return true;
}
// blank input... if down/enter... fall through (list all)... else, and hide or reset list
if (!here.value.length && !(key==40 || key==13)) {
if (showlist) this.fillList(here.form.list,'',here.form.filter.value,search,0);
else list.style.display="none";
return this.keyProcessed(event);
}
// hide list if quiet, or below input minimum (and not showlist)
list.style.display=(!showlist&&(quiet||here.value.length<config.options.txtIncrementalSearchMin))?'none':'block';
// non-blank input... enter=show/create tiddler, SHIFT-enter=search for text
if (key==13 && here.value.length) return this.processItem(event.shiftKey?'*':here.value,here,list,showlist);
// up or down key, or enter with blank input... shows and moves to list...
if (key==38 || key==40 || key==13) { list.style.display="block"; list.focus(); }
this.fillList(list,here.value,filter.value,search,key);
return true; // key bubbles up
},
selectKeyHandler:
function(event,list,editfield,showlist) {
if (event.keyCode==27) // escape... hide list, move to edit field
{ editfield.focus(); list.style.display=showlist?'block':'none'; return this.keyProcessed(event); }
if (event.keyCode==13 && list.value.length) // enter... view selected item
{ this.processItem(list.value,editfield,list,showlist); return this.keyProcessed(event); }
return true; // key bubbles up
},
processItem:
function(title,here,list,showlist) {
if (!title.length) return;
list.style.display=showlist?'block':'none';
if (title=="*") { story.search(here.value); return false; } // do full-text search
if (!showlist) here.value=title;
story.displayTiddler(null,title); // show selected tiddler
return false;
}
}
//}}}
/***
|Name|GotoPluginInfo|
|Source|http://www.TiddlyTools.com/#GotoPlugin|
|Documentation|http://www.TiddlyTools.com/#GotoPluginInfo|
|Version|1.9.2|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|documentation|
|Description|Documentation for GotoPlugin|
''View a tiddler by typing its title and pressing //enter//.'' As you type, a list of possible matches is displayed. You can scroll-and-click (or use arrows+enter) to select/view a tiddler, or press escape to close the listbox to resume typing. When the listbox is not displayed, pressing //escape// clears the current input.
!!!!!Usage/Examples
<<<
syntax: {{{<<gotoTiddler quiet search inputstyle:... liststyle:... filter:...>>}}}
All parameters are optional.
* ''quiet'' (//keyword//)<br>list will not be automatically display as each character is typed. Use //down// or //enter// to view the list.
* ''showlist'' (//keyword//)<br>list will always be displayed, inline, directly below the input field.
* ''search'' (//keyword//)<br>adds an extra 'command item' to the list that can be used to invoke a full-text search using the entered value. This can be especially useful when no matching tiddler titles have been found.
* ''inputstyle:'' and ''liststyle:''<br>are CSS declarations that modify the default input and listbox styles, respectively. Note: the CSS styles must be surrounded by ({{{"..."}}} or {{{'...'}}}) or ({{{[[...]]}}}) (e.g., {{{liststyle:"border:1px dotted blue;color:green;..."}}}.
* ''filter:''<br>is a single tag value (or a boolean tag expression if MatchTagsPlugin is installed), and is used to limit the search to only those tiddlers matching the indicated tag or tag expression (e.g., {{{<<gotoTiddler filter:"faq or help">>}}})
{{{<<gotoTiddler>>}}}
<<gotoTiddler>>
{{{<<gotoTiddler search>>}}}
<<gotoTiddler search>>
{{{<<gotoTiddler showlist filter:"pluginInfo" liststyle:"height:10em;width:auto;">>}}}
<<gotoTiddler showlist filter:"pluginInfo" liststyle:"height:10em;width:auto;">>
<<<
!!!!!Configuration
<<<
*Match titles only after {{twochar{<<option txtIncrementalSearchMin>>}}} or more characters are entered.<br>Use down-arrow to start matching with shorter input. //Note: This option value is also set/used by [[SearchOptionsPlugin]]//.
*To set the maximum height of the listbox, you can create a tiddler tagged with <<tag systemConfig>>, containing:
//{{{
config.macros.gotoTiddler.listMaxSize=10; // change this number
//}}}
<<<
!!!!!Revisions
<<<
2009.05.22 1.9.2 use reverseLookup() for IncludePlugin
2009.04.12 1.9.1 support multiple instances with different filters by using per-element tiddler cache instead of shared static cache
2009.04.05 1.9.0 added 'showlist' parameter for inline display with listbox always visible.
2009.03.23 1.8.0 added txtIncrementalSearchMin (default=3). Avoids fetching long lists. Use down arrow to force search with short input.
2008.12.15 1.7.1 up arrow from input field now moves to end of droplist (search for input). Also, shift+enter cam now be used to quickly invoke search for text.
2008.10.16 1.7.0 in macro handler(), changed to use //named// params instead of positional params, and added optional "filter:" param for tag filtering. Removed 'insert' handling (now provided by [[QuickEditPlugin]]).
2008.10.02 1.6.1 for IE, wrap controls in a table. Corrects placement of listbox so it is below input field.
2008.10.02 1.6.0 added 'search' param for optional "Search for:" item that invokes full text search (especially useful when no title matches are found)
2008.02.17 1.5.0 ENTER key always displays tiddler based on current input regardless of whether input matches any existing tiddler
2007.10.31 1.4.3 removed extra trailing comma on last property of config.macros.gotoTiddler object. This fixes an error under InternetExplorer that was introduced 6 days ago... sure, I should have found it sooner, but... WHY DON'T PEOPLE TELL ME WHEN THINGS ARE BROKEN!!!!
2007.10.25 1.4.2 added onclick handler for input field, so that clicking in field hides the listbox.
2007.10.25 1.4.1 re-wrote getItems() to cache list of tiddlers/shadows/tags and use case-folded simple text match instead of regular expression to find matching tiddlers. This *vastly* reduces processing overhead between keystrokes, especially for documents with many (>1000) tiddlers. Also, removed local definition of replaceSelection(), now supported directly by the TW2.2+ core, as well as via backward-compatible plugin
2007.04.25 1.4.0 renamed macro from "goto" to "gotoTiddler". This was necessary to avoid a fatal syntax error in Opera (and other browsers) that require strict adherence to ECMAScript 1.5 standards which defines the identifier "goto" as "reserved for FUTURE USE"... *sigh*
2007.04.21 1.3.2 in html definition, removed DIV around droplist (see 1.2.6 below). It created more layout problems then it solved. :-(
2007.04.01 1.3.1 in processItem(), ensure that correct textarea field is found by checking for edit=="text" attribute
2007.03.30 1.3.0 tweak SideBarOptions shadow to automatically add {{{<<goto>>}}} when using default sidebar content
2007.03.30 1.2.6 in html definition, added DIV around droplist to fix IE problem where list appears next to input field instead of below it.
2007.03.28 1.2.5 in processItem(), set focus to text area before setting selection (needed for IE to get correct selection 'range')
2007.03.28 1.2.4 added prompt for 'pretty text' when inserting a link into tiddler content
2007.03.28 1.2.3 added local copy of core replaceSelection() and modified for different replace logic
2007.03.27 1.2.2 in processItem(), use story.getTiddlerField() to retrieve textarea control
2007.03.26 1.2.1 in html, use either 'onkeydown' (IE) or 'onkeypress' (Moz) event to process <esc> key sooner, to prevent <esc> from 'bubbling up' to the tiddler (which will close the current editor).
2007.03.26 1.2.0 added support for optional "insert" keyword param.
2006.05.10 1.1.2 when filling listbox, set selection to 'heading' item... auto-select first tiddler title when down/enter moves focus into listbox
2006.05.08 1.1.1 added accesskey ("G") to input field html (also set when field gets focus). Also, inputKeyHandler() skips non-printing/non-editing keys.
2006.05.08 1.1.0 added heading to listbox for better feedback (also avoids problems with 1-line droplist)
2006.05.07 1.0.0 list matches against tiddlers/shadows/tags. input field auto-completion... 1st enter=complete matching input (or show list)... 2nd enter=view tiddler. "quiet" param controls when listbox appears. handling for enter (13), escape(27), and down(40) keys. Change 'ondblclick' to 'onclick' to avoid unintended triggering of tiddler editor). Shadow titles inserted into list instead of appended to the end.
2006.05.05 0.0.0 started
<<<
/***
|Name|GridPlugin|
|Source|http://www.TiddlyTools.com/#GridPlugin|
|Documentation|http://www.TiddlyTools.com/#GridPluginInfo|
|Version|2.0.7|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1.3|
|Type|plugin|
|Description|Display/edit slices, sections and fields in a grid (table) for a 'birds-eye' view of your document|
!!!!!Documentation
>see [[GridPluginInfo]]
!!!!!Revisions
<<<
2010.03.06 2.0.7 fixed setSection()
2009.09.26 2.0.6 fixed setSlice() for existing slices with empty values
|please see [[GridPluginInfo]] for additional revision details|
2007.01.30 0.0.1 started
<<<
!!!!!Code
***/
//{{{
version.extensions.GridPlugin= {major: 2, minor: 0, revision: 7, date: new Date(2010,3,6)};
config.macros.grid= {
sizeSliceName: 'TiddlerSize', // fake slice to show # of bytes in tiddler
noColsMsg: '@@display:block;border:1px solid;there are no columns to display@@',
showHeaders:'►►►',
showHeadersTip:'show column headings',
hideHeaders:'◄◄◄',
hideHeadersTip:'hide column headings',
slicesRE: /(?:^\|\s*[\'\/]*~?(\w+)\:?[\'\/]*\s*\|\s*(.*?)\s*\|$)/gm,
gridStyles: '.viewer .grid thead td, .grid thead td { background:transparent; }',
init: function() { setStylesheet(this.gridStyles,'gridStyles'); },
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var edit=params.contains('edit') && !readOnly; // no editing if readOnly
var wiki=params.contains('wikify');
var inline=params.contains('inline');
if (inline) var heads=true;
var all=params.contains('all');
params=paramString.parseParams('name',null,true,false,true); // for NAMED VALUES
var filter=getParam(params,'filter',''); // core or MatchTagsPlugin tag filter syntax
if (filter.length && !filter.startsWith('[tag[')) filter='[tag['+filter+']]';
var tags=this.getList(getParam(params,'tags'),true); // older "match at least one tag" syntax
if (tags.length) filter='[tag['+tags.join(']][tag[')+']]'+filter;
var names=this.getList(getParam(params,'columns')); // slices/sections/fields to use as columns
var clip=getParam(params,'clip',0); // 0=no clipping
var width=getParam(params,'width','auto');
var rc=this.getRowsAndCols(filter,names,all);
if (!rc.cols.length) wikify(this.noColsMsg,place);
else this.renderTable(place,rc.rows,rc.cols,inline,heads,wiki,edit,clip,width);
},
getList: function(t,gettags) {
var items=(t||'').readBracketedList();
for (var i=0;i<items.length;i++) { var item=items[i];
// replace item with list based on item prefix:
// +name contents of tiddler (space-separated list)
// @name slices/tags,
// @!name sections
// @=name fields
if ('@+'.indexOf(item.substr(0,1))!=-1) {
var title=item.substr(1); var type=title.substr(0,1);
if ('=!'.indexOf(type)!=-1) title=title.substr(1);
if (title=='here')
title=story.findContainingTiddler(place).getAttribute('tiddler');
var tid=store.getTiddler(title); if (tid) {
var list=[];
if (item.substr(0,1)=='+') list=tid.text.readBracketedList(); // contents
else if (gettags) list=tid.tags; // tags
else if (type=='!') list=this.getSections(tid.title); // sections
else if (type=='=') list=this.getFields(tid.title); // fields
else for (var s in this.getSlices(tid.title)) list.push(s); // slices
items.splice(i,1); // remove item
for (var j=0;j<list.length;j++,i++) items.splice(i,0,list[j]); // add list
}
}
}
return items;
},
getRowsAndCols: function(filter,names,all) {
var rows=[]; var cols=[]; // get rows (tiddlers) and columns (slices)
var tiddlers=filter&&filter.length?store.filterTiddlers(filter):store.getTiddlers();
for (i=0; i<tiddlers.length; i++) {
var slices=this.getSlices(tiddlers[i].title);
var include=false; for (var s in slices) { cols.pushUnique(s); include=true; }
if (include||all) rows.push(tiddlers[i].title);
}
rows=rows.sort();
// use specified list instead of collected slice names
if (names.length) var cols=names;
return {rows:rows,cols:cols};
},
renderTable: function(place,rows,cols,inline,heads,wiki,edit,clip,width) {
var span=createTiddlyElement(place,'span')
span.innerHTML=this.generateTable(rows,cols,inline,heads,wiki,edit,clip,width)
// replace TD content with wikified elements
var tds=span.getElementsByTagName('td');
for (var t=0; t<tds.length; t++) {
if (hasClass(tds[t],'wiki')) {
var txt=getPlainText(tds[t]);
if (hasClass(tds[t],'grid_heading')) txt='[['+txt+']]';
removeChildren(tds[t]);
wikify(txt,tds[t]);
}
}
},
generateTable: function(rows,cols,inline,heads,wiki,edit,clip,width) {
var out= "<html><table class='sortable grid' style='border:0;padding:0;spacing:0;"
+"border-collapse:collapse;width:"+width+"'>";
// column headings
out+= "<thead><tr style='border:0;vertical-align:bottom'>"
+"<td style='text-align:right;border:0'>"
+"<a href='javascript:;' style='font-size:80%;'"
+" title='"+(heads?this.hideHeadersTip:this.showHeadersTip)+"'"
+" onclick='return config.macros.grid.toggleHeaders("
+" this,event,"+(heads?"true":"false")+")'>"
+(heads?this.hideHeaders:this.showHeaders)
+"</a>"
+"</td>";
for (var i=0;i<cols.length;i++) {
out+= "<td style='text-align:center;cursor:pointer;"
+" border:0;padding-left:2px;padding-right:2px;' "
+"<span style='display:"+(heads?"block":"none")+"'>"
+cols[i].replace(/^[=!]/,'')
+"</span></td>";
}
out+="</tr></thead>";
// row heading format ('fake' tiddler link)
// %0=cell width, %1=tiddler name, %2='wiki' classname (optional), %3='inline' classname (optional)
var head="<td style='text-align:right;border:0;padding-right:2px;white-space:nowrap;%0;'>"
+"<a href='javascript:;' tid=\"%1\" class='grid_heading %2 %3' "
+"onclick='story.displayTiddler("
+" this,this.getAttribute(\"tid\"));return false'>%1</a></td>";
// row value format
// %0=bgcolor, %1=cellwidth, %2=cell alignment, %3=tiddler name
// %4=slice/section/field name, %5=tooltip, %6='wiki' classname (optional),
// %7='inline' classname (optional), %8=cell content value
var cell="<td style='background-color:%0;border:1px solid;%1;%2;' tid=\"%3\" ";
if (edit) cell+="onclick='return config.macros.grid.editInPlace("
+"this,event,this.getAttribute(\"tid\"),\"%4\");' ";
cell+="title=\"%5\" class='grid_content %6 %7'>%8</td>";
// generate rows
for (var i=0;i<rows.length;i++) {
var tiddlersrc=rows[i].replace(/"/g,""");
out+="<tr style='border:0;vertical-align:top'>";
out+=head.format([inline?'width:1%':'',tiddlersrc,wiki?'wiki':'',inline?'inline':'']);
for (var j=0;j<cols.length;j++) { var c=cols[j];
var val=this.get(rows[i],c);
var content=" ";
if (val.length && inline) {
content=val.htmlEncode();
if (c=='=text'||clip) // truncate
content=val.substr(0,clip||500)
+(val.length>(clip||500)?"...":"");
if (c=='=text') // format tiddler source
content='<html><code style="line-height:100%">'
+content.replace(/\n/g,'<br>')
+'</code></html>';
}
var title=this.showName(tiddlersrc,c)+(!inline?'='+val:'');
out+=cell.format([
val.length&&!inline?'#999':'transparent', !inline?'width:1em;':'',
inline&&!isNaN(parseFloat(val))?'text-align:right !important;':'',
tiddlersrc, c, title, wiki?'wiki':'', inline?'inline':'', content]);
}
out+='</tr>';
}
out+="</table></html>";
return out;
},
showName: function(tid,name) {
if (name==this.sizeSliceName) var fmt='%0 - size (in bytes)'; // fake slice
var fmt=(name.substr(0,1)=='=')?'%1@%0':(name.substr(0,1)=='!')?'%1##%0':'%0::%1';
return fmt.format([tid,name.replace(/^[=!]/,'')]);
},
toggleHeaders: function(here,event,defOpen) {
if (here.expanded==undefined) here.expanded=defOpen;
var ex=here.expanded=!here.expanded;
here.innerHTML=ex?this.hideHeaders:this.showHeaders;
here.title=ex?this.hideHeadersTip:this.showHeadersTip;
var cells=here.parentNode.parentNode.getElementsByTagName('td');
for (i=1; i<cells.length; i++) cells[i].firstChild.style.display=ex?'inline':'none';
event.cancelBubble=true;if(event.stopPropagation)event.stopPropagation();return false;
},
editInPlace: function(here,event,tid,name) {
if (here.editing) return false; // already editing, don't re-init
if (name==this.sizeSliceName) return false; // read-only fake slice
var v=this.get(tid,name); // current value
var lines=v.split('\n').length;
var title=this.showName(tid,name);
var style=lines>1?'font-size:90%;width:99%;':'font-size:100%;width:95%;line-height:100%;'
var maxlines=Math.min(lines,config.options['txtMaxEditRows']); // for textarea
var html=lines>1?'<textarea rows='+maxlines:'<input type="text"';
html +=' tid="'+tid.replace(/"/g,'"')+'"'
+' name="'+name.replace(/"/g,'"')+'"'
+' style="margin:0px;padding:1px 0px 1px 3px;border:0;'+style+'"'
+' title="'+title+' (ENTER=submit, ESC=cancel)"'
+' onblur="config.macros.grid.blur(this,event)"'
+' onkeydown="config.macros.grid.keydown(this,event)"';
html+=lines>1?'></textarea>':'>';
here.editing=true;
here.setAttribute('savedWidth',here.style.width);
here.setAttribute('savedPadding',here.style.padding);
here.setAttribute('savedColor',here.style.backgroundColor);
if (!hasClass(here,'inline')) here.style.width='99%';
here.style.padding='0px';
here.style.backgroundColor='#fff';
here.innerHTML=html;
var ta=here.firstChild; ta.value=v; ta.focus(); ta.select();
event.cancelBubble=true;if(event.stopPropagation)event.stopPropagation();return false;
},
keydown: function(here,ev) { ev=ev||window.event;
var tid=here.getAttribute('tid');
var name=here.getAttribute('name');
if (ev.keyCode==27) {
var currval=this.get(tid,name);
if (here.value==currval) { here.blur(); return false; }
here.asking=true; // prevents blur handling during confirm()
var discard=confirm('OK to discard changes to '+this.showName(tid,name)+'?');
here.asking=false;
if (discard) { here.value=currval; here.blur(); }
return false;
}
else if (ev.keyCode==13 && !ev.ctrlKey) {
this.set(tid,name,here.value);
here.blur();
return false;
}
},
blur: function(here,ev) { ev=ev||window.event;
if (here.asking) return false;
var tid=here.getAttribute('tid');
var name=here.getAttribute('name');
var currval=this.get(tid,name);
var msg=this.showName(tid,name)+' has changed... OK to save changes?';
if (here.value!=currval && confirm(msg))
{ this.set(tid,name,here.value); currval=this.get(tid,name); }
var target=here.parentNode;
target.editing=false;
target.style.backgroundColor=target.getAttribute('savedColor');
target.style.padding=target.getAttribute('savedPadding');
target.style.width=target.getAttribute('savedWidth');
if (name=='=text') currval='<html><code>'+currval.substr(0,500).replace(/\\n/g,'<br>')+'</code></html>';
if (hasClass(target,'wiki')) { removeChildren(target); wikify(currval,target); }
else target.innerHTML=hasClass(target,'inline')?currval:' ';
},
get: function(tid,name) {
if (name.substr(0,1)=='=') var v=store.getValue(tid,name.substr(1)); // field
else if (name.substr(0,1)=='!') var v=store.getTiddlerText(tid+'##'+name.substr(1)); // section
else if (name==this.sizeSliceName) var v=store.getTiddlerText(tid,'').length.toString(); // fake slice
else var v=store.getTiddlerSlice(tid,name); // real slice
return v||'';
},
set: function(tid,name,val) {
if (val==this.get(tid,name)) return false; // unchanged... do nothing
if (name.substr(0,1)=='=') // field
{ name=name.substr(1); store.setValue(tid,name,val); }
else if (name.substr(0,1)=='!') // section
{ name=name.substr(1); this.setSection(tid,name,val); }
else // slice
{ this.setSlice(tid,name,val); }
displayMessage(this.showName(tid,name)+' has been updated');
return false;
},
setSection: function(tid,name,newval) {
var t=store.getTiddler(tid); if (!t) { var t=new Tiddler(); t.text=''; }
var oldval=this.get(tid,'!'+name).escapeRegExp();
var pattern=new RegExp('(.*!{1,6}'+name+'\\n)'+oldval+'((?:\\n!{1,6}|$).*)');
var newText=t.text.replace(pattern,'$1'+newval+'$2');
var who=config.options.txtUserName; var when=new Date();
if (config.options.chkForceMinorUpdate) { var who=t.modifier; var when=t.modified; }
store.saveTiddler(tid,tid,newText,who,when,t.tags,t.fields);
story.refreshTiddler(tid,null,true);
},
setSlice: function(tid,name,newval) {
var t=store.getTiddler(tid); if (!t) { var t=new Tiddler(); t.text=''; }
var oldval=this.get(tid,name)||'';
var pattern="((?:^|\\n)\\|\\s*[\\'\\/]*~?(?:"
+name.escapeRegExp()
+")\\:?[\\'\\/]*\\s*\\|\\s*)(?:"
+oldval.escapeRegExp()
+")(\\s*\\|(?:\\n|$))";
var match=t.text.match(new RegExp(pattern));
if (match) {
var pos=t.text.indexOf(match[0]);
var newText=t.text.substr(0,pos)
+match[1]+newval+match[2]
+t.text.substr(pos+match[0].length);
} else { // create new slice at start of tiddler or after last existing slice (if any)
var match=t.text.match(this.slicesRE); if (match) var last=match[match.length-1];
var pos=last?t.text.indexOf(last)+last.length+1:0;
var newText=t.text.substr(0,pos)+'|'+name+'|'+newval+'|\n'+t.text.substr(pos);
}
var who=config.options.txtUserName; var when=new Date();
if (config.options.chkForceMinorUpdate) { var who=t.modifier; var when=t.modified; }
store.saveTiddler(tid,tid,newText,who,when,t.tags,t.fields);
story.refreshTiddler(tid,null,true);
},
getSlices: function(tid) {
var slices = {};
var text = store.getTiddlerText(tid,'');
slices[this.sizeSliceName]=text.length.toString(); // fake slice
this.slicesRE.lastIndex = 0;
do {
var m = this.slicesRE.exec(text);
if (m) { if (m[1]) slices[m[1]] = m[2]; else slices[m[3]] = m[4]; }
} while(m);
return slices;
},
getSections: function(tid) {
var s=[];
var t=store.getTiddlerText(tid,'');
var p=/(?:^|\n)!{1,6}([^\n]*)\n/gm;
do { var m=p.exec(t); if (m) { s.push(m[1]); } } while(m);
return s;
},
getFields: function(tid) {
var t=store.getTiddler(tid); if (!t) return [];
var fields=['=created','=modified','=modifier','=text','=tags'];
for (var f in t.fields) fields.push('='+f);
return fields;
}
};
//}}}
/***
|Name|GridPluginInfo|
|Source|http://www.TiddlyTools.com/#GridPlugin|
|Documentation|http://www.TiddlyTools.com/#GridPluginInfo|
|Version|2.0.7|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1.3|
|Type|documentation|
|Description|documentation for GridPlugin|
!!!!!Usage
<<<
The {{{<<grid>>}}} macro generates a table, where ''rows are tiddlers, columns are any combination of slices, sections or field names'', and grid cells display individual values (or colored boxes with mouseover 'tooltips' to view values).
*Use tag filtering to select and display specific subsets of tiddlers.
*Grid column headings can be shown/hidden by clicking the {{{>>>}}} symbol in the upper-left corner
*Optionally, clicking on a cell allows you to edit the value in that cell. Pressing enter (or moving away from the input field) saves the changed value. Pressing escape cancels the changes (after confirming)
{{{
<<grid columns:[[name name name...]]
tags:[[tag tag...]]
filter:...
clip:...
inline wikify edit all>>
}}}
//all parameters are optional//
*''columns:...'' (list) default=use all slices defined in the document<br>display columns using the specified names, which refer to any combination of slices, sections and fields.
**If a column name begins with '=' (equal sign), then it is a tiddler field reference.
**If a column name begins with '!' (exclamation), then it is a tiddler section reference.
**Column names without either prefix are tiddler slice references.
**''{{{+TiddlerName}}}'' uses a space-separated list of column names stored in another tiddler.
**''{{{@TiddlerName}}}'' uses the slices from a given tiddler as column names.
**''{{{@!TiddlerName}}}'' uses the sections from a given tiddler.
**''{{{@=TiddlerName}}}'' uses the fields from a given tiddler.
**A special read-only 'fake' slice name, ''~TiddlerSize'', can be used to automatically compute and show the tiddler's size in bytes.
*''tags:...'' (list) default=show all tiddlers<br>display tiddlers that match at least ONE of the specified tags.
**''{{{+TiddlerName}}}'' uses a space-separated list of tags stored in another tiddler.
**''{{{@TiddlerName}}}'' uses the tags assigned to the indicated tiddler.
*''filter:...'' (filter syntax) default=none<br>enhanced tiddler selection by tags, using core filter syntax (e.g., {{{"[tag[tag1]][tag[tag2]]"}}}) or MatchTagsPlugin's compound //Boolean tag expressions// (e.g., {{{"tag1 or (tag2 and tag3) and not tag4)"}}})
*''clip:...'' (number) default=no clip length limit<br>maximum # of characters to show in a grid cell when using 'inline' keyword. Text values are truncated with '...'
*''inline'' (keyword)<br>displays column values directly in grid cells. Default=use a colored block if a value is defined, with mouseover 'tooltip' to show the actual value
*''wikify'' (keyword)<br>parses and formats wiki-syntax contained in values. Default=show values ''as-is'', without wiki formatting
*''edit'' (keyword)<br>enables click-to-edit to change values. Default=read-only display of values.
*''all'' (keyword)<br>displays a row for each tiddler, even tiddlers that have NO non-blank values. Default=show only tiddlers that have at least one defined value.
Note: this plugin uses a modified version of slices pattern:
{{{
slicesRE = /(?:^\|[\'\/]*~?(\w+)\:?[\'\/]*\|\s*(.*?)\s*\|$)/gm;
}}}
* eliminates TONS of spurious slices caused by over-eager 'description' format pattern matches
* enforces beginning-of-line and end-of-line sequences. (Allows slice values to contain |, such as in pretty links)
<<<
!!!!!Examples
<<<
*{{block{
View 'mouseover' summary of slices
for tiddlers matching at least one tag from a list of tags
using slices from this tiddler as columns
<<<
{{{
<<grid tags:[[systemConfig pluginInfo script]] columns:@GridPluginInfo>>
}}}
+++[show results...]...
<<grid tags:[[systemConfig pluginInfo script]] columns:@GridPluginInfo>>
===
<<<
}}}
*{{block{
Edit slices (Description, Version), fields (changecount) and sections (Revisions)
for tiddlers using TW core filter syntax:
<<<
{{{
<<grid filter:[tag[systemConfig]][tag[pluginInfo]][tag[script]]
columns:[[Description Version =changecount !Revisions]] inline wikify edit>>
}}}
+++[show results...]...
<<grid filter:[tag[systemConfig]][tag[pluginInfo]][tag[script]]
columns:[[Description Version =changecount !Revisions]] inline wikify edit>>
===
<<<
}}}
*{{block{
Edit slices (Description, Version), fields (changecount) and sections (Revisions)
for tiddlers using enhanced boolean filter syntax (requires [[MatchTagsPlugin]])
<<<
{{{
<<grid filter:[[systemConfig or pluginInfo or script]]
columns:[[Description Version =changecount !Revisions]] inline wikify edit>>
}}}
+++[show results...]...
<<grid filter:[[systemConfig or pluginInfo or script]]
columns:[[Description Version =changecount !Revisions]] inline wikify edit>>
===
<<<
}}}
<<<
!!!!!Revisions
<<<
2010.03.06 2.0.7 fixed setSection()
2009.09.26 2.0.6 fixed setSlice() for existing slices with empty values
2009.09.25 2.0.5 fixed cell redraw after edit-in-place
2009.09.25 2.0.4 fixed ({{{@!name}}} ) and {{{@=name}}} handling
2009.09.24 2.0.3 added handling for getting columns from tiddler sections ({{{@!name}}} ) or fields {{{@=name}}}
2009.09.23 2.0.2 fixed handling for {{{@TiddlerName/+TiddlerName}}}
2009.09.21 2.0.1 split keydown() and blur() functions from editInPlace() and added confirmation for escape key (discard changes)
2009.09.20 2.0.0 Complete re-write. Renamed [[GridPlugin]]. View and/or edit any tiddler section, slice or field. Renamed 'slices:...' param to 'columns:...'
2009.09.17 1.1.1 added textarea handling for multi-line fields (e.g., 'text')
2009.09.17 1.1.0 added '=fieldname' syntax for 'field grid'
2008.08.15 1.0.3 add brackets around row headings when wikifying so that non-wikiword tiddler titles are linked
2008.08.13 1.0.2 wikify row headings (in addition to slice value cells) whenever 'wikify' param is used
2008.05.01 1.0.1 in editSlice(), corrected fixup for titles containing double-quotes
2007.09.18 1.0.0 added 'wikify' param and handling to format wiki-syntax contained in slice values
2008.05.01 1.0.1 in editSlice(), corrected fixup for titles containing double-quotes
2007.09.18 1.0.0 added 'wikify' param and handling to format wiki-syntax contained in slice values
2007.08.02 0.9.8 when generating HTML, replace double-quotes in tiddler titles with {{{"}}} to avoid ambiguity with quotes used as HTML attribute syntax delimiters.
2007.07.22 0.9.7 removed hard-coded 99% 'width bias' and wordwrap from Description cells, default to autosize (equal size for all columns). Added width:xxxx param to easily stretch table to fit containing space
2007.06.08 0.9.6 fixed generated code for row headings and edit_slice() handlers, so titles with single-quotes will work
2007.04.24 0.9.5 added 'fake' slicename: 'TiddlerSize', to display # of bytes in tiddler as a grid column.
2007.04.13 0.9.4 honor 'excludeLists' tag so that 'hidden' tiddlers aren't displayed in the grid
2007.04.08 0.9.3 fixed cell bgcolor (non-inline grid 'blocks') after edit-in-place adds/clears a slice value
2007.04.07 0.9.2 support edit in place for non-inline grids (color 'blocks'). Also create new slices in tiddlers if slice not already present
2007.04.07 0.9.1 use locally-defined slicesRE (and getSlice() method) instead of re-defining core slicesRE. Avoids breaking use of shadow ColorPalette slices.
2007.04.05 0.9.0 Added functioning 'set slice' handler and 'edit-in-place' feature. Eliminated mouseover popups (use tooltips instead). Added ''tags:'', ''slices:'' and ''edit'' params. Lots of code cleanup.
2007.04.04 0.8.1 in info() and popup() functions, instead of creating popup display, use element tooltip to show mouseover details.
2007.03.25 0.8.0 change to BETA status and added support for 'tags:tag tag tag tag' filtering param
2007.02.03 0.0.2 change display of slices from 'tiddler[slidename]' to 'tiddler:slicename' to match TW slice syntax
2007.01.30 0.0.1 started (adapted from TagGridPlugin)
<<<
/%
!info
|Name|HideTiddlerTags|
|Source|http://www.TiddlyTools.com/#HideTiddlerTags|
|Version|2.0.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion|
|Description|hide a tiddler's 'tagged' and 'tagging' displays (if any)|
Usage:
<<<
{{{
<<tiddler HideTiddlerTags>>
<<tiddler HideTiddlerTags with: TiddlerTitle>>
}}}
<<<
!end
!show
<<tiddler {{
var title="$1";
if (title=='$'+'1') {
var here=story.findContainingTiddler(place);
if (here) title=here.getAttribute('tiddler');
}
var t=story.getTiddler(title); if (t) {
var e=t.getElementsByTagName('*');
for (var i=0; i<e.length; i++)
if (hasClass(e[i],'tagging')||hasClass(e[i],'tagged'))
e[i].style.display='none';
}
'';}}>>
!end
%/<<tiddler {{
var src='HideTiddlerTags';
src+(tiddler&&tiddler.title==src?'##info':'##show');}}
with: [[$1]]>>
/***
|Name:|HideWhenPlugin|
|Description:|Allows conditional inclusion/exclusion in templates|
|Version:|3.2a|
|Date:|27-Jun-2011|
|Source:|http://mptw.tiddlyspot.com/#HideWhenPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
For use in ViewTemplate and EditTemplate. Example usage:
{{{<div macro="showWhenTagged Task">[[TaskToolbar]]</div>}}}
{{{<div macro="showWhen tiddler.modifier == 'BartSimpson'"><img src="bart.gif"/></div>}}}
Warning: the showWhen and hideWhen macros will blindly eval paramString.
This could be used to execute harmful javascript from a tiddler.
(TODO: Make some effort to sanitize paramString. Perhaps disallow the equals sign?)
***/
//{{{
window.hideWhenLastTest = false;
window.removeElementWhen = function(test,place) {
window.hideWhenLastTest = test;
if (test) {
jQuery(place).empty()
place.parentNode.removeChild(place);
}
};
merge(config.macros,{
hideWhen: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( eval(paramString), place );
}},
showWhen: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( !eval(paramString), place );
}},
hideWhenTagged: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( tiddler.tags.containsAll(params), place );
}},
showWhenTagged: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( !tiddler.tags.containsAll(params), place );
}},
hideWhenTaggedAny: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( tiddler.tags.containsAny(params), place );
}},
showWhenTaggedAny: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( !tiddler.tags.containsAny(params), place );
}},
hideWhenTaggedAll: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( tiddler.tags.containsAll(params), place );
}},
showWhenTaggedAll: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( !tiddler.tags.containsAll(params), place );
}},
hideWhenExists: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( store.tiddlerExists(params[0]) || store.isShadowTiddler(params[0]), place );
}},
showWhenExists: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( !(store.tiddlerExists(params[0]) || store.isShadowTiddler(params[0])), place );
}},
hideWhenTitleIs: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( tiddler.title == params[0], place );
}},
showWhenTitleIs: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( tiddler.title != params[0], place );
}},
'else': { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( !window.hideWhenLastTest, place );
}}
});
//}}}
Cooldown: 30
Increases attack speed by 200% for 10 seconds.
Right click to deactivate autocasting.
!
[img[][]]
!
[img[][]]
!
[img[][]]
!
[img[][]]
!
[img[][]]
!OutlawWeapons1
[img[][OutlawWeapons1]]
!
[img[][]]
!OutlawWeapons
[img[https://vignette.wikia.nocookie.net/starcraft/images/1/12/TychusOutlawWeapons_Coop_Game1.gif/revision/latest/scale-to-width-down/30?cb=20180905210909][Outlaw Weapons]]
!gEmperor's Shadow
[img[https://vignette.wikia.nocookie.net/starcraft/images/3/3a/EmperorsShadow_LotV_Game1.JPG/revision/latest?cb=20191129000727][Emperor's Shadow]]
!pEmperor's Shadow
[img[https://vignette.wikia.nocookie.net/starcraft/images/6/67/EmperorsShadowPortrait_LotV_Game1.jpg/revision/latest?cb=20191202143806][Emperor's Shadow]]
!cEmperor's Shadow
[img[https://vignette.wikia.nocookie.net/starcraft/images/8/81/ArcturusMengsk_SC2_Cncpt1.jpg/revision/latest?cb=20191204002256][Emperor's Shadow]]
!Sovereign Tactical Missiles
[img[https://vignette.wikia.nocookie.net/starcraft/images/7/73/SovereignTacticalMissiles.png/revision/latest?cb=20191130151750][Sovereign Tactical Missiles]]
!Tactical Missile Strike
[img[https://vignette.wikia.nocookie.net/starcraft/images/e/e7/TacticalMissile_Coop_Game1.JPG/revision/latest?cb=20191130221806][Tactical Missile Strike]]
!Labyrinth Cloak
[img[https://vignette.wikia.nocookie.net/starcraft/images/f/f0/LabyrinthCloak_Coop_Game1.JPG/revision/latest?cb=20191130220517][Labyrinth Cloak]]
!EMP Blast
[img[https://vignette.wikia.nocookie.net/starcraft/images/4/43/EMPBlast_Coop_Game1.JPG/revision/latest?cb=20191130220308][EMP Blast]]
!Pyrokinetic Immolation
[img[https://vignette.wikia.nocookie.net/starcraft/images/1/1d/PyrokineticImmolation_Coop_Game1.JPG/revision/latest?cb=20191130215219][Pyrokinetic Immolation]]
!Might of the Empire (Ghost)
[img[https://vignette.wikia.nocookie.net/starcraft/images/6/6f/MightoftheEmpire.png/revision/latest?cb=20191130194415][Might of the Empire (Ghost)]]
!Royal Guard of the Dominion (Ghost)
[img[https://vignette.wikia.nocookie.net/starcraft/images/4/4b/RoyalGuardoftheDominion.png/revision/latest?cb=20191130183550][Royal Guard of the Dominion (Ghost)]]
!tAegis Guard
[img[https://bnetcmsus-a.akamaihd.net/cms/page_media/D497EK83CWSS1572391216926.png][Aegis Guard]]
!gAegis Guard
[img[https://vignette.wikia.nocookie.net/starcraft/images/6/69/AegisGuard_LotV_Game1.JPG/revision/latest?cb=20191129001242][Aegis Guard]]
!pAegis Guard
[img[https://vignette.wikia.nocookie.net/starcraft/images/4/48/AegisGuardPortrait_LotV_Game1.JPG/revision/latest?cb=20191202040718][Aegis Guard]]
!Aegis Barrier
[img[https://vignette.wikia.nocookie.net/starcraft/images/9/97/AegisBarrier_Coop_Game1.jpg/revision/latest?cb=20191130202543][Aegis Barrier]]
!Incapacitator Shells
[img[https://vignette.wikia.nocookie.net/starcraft/images/d/d3/IncapacitatorShells.png/revision/latest?cb=20191130151547][Incapacitator Shells]]
!Might of the Empire (Marauder)
[img[https://vignette.wikia.nocookie.net/starcraft/images/6/6f/MightoftheEmpire.png/revision/latest?cb=20191130194415][Might of the Empire (Marauder)]]
!Royal Guard of the Dominion (Marauder)
[img[https://vignette.wikia.nocookie.net/starcraft/images/4/4b/RoyalGuardoftheDominion.png/revision/latest?cb=20191130183550][Royal Guard of the Dominion (Marauder)]]
!High Grade Stimpacks
[img[https://vignette.wikia.nocookie.net/starcraft/images/e/e2/HighGradeStimpack_Coop_Game1.JPG/revision/latest?cb=20191130210833][High Grade Stimpacks]]
!Orbital Trooper Pods
[img[https://vignette.wikia.nocookie.net/starcraft/images/e/eb/OrbitalTrooperPods.png/revision/latest?cb=20191129085943][Orbital Trooper Pods]]
!Call to Arms
[img[https://vignette.wikia.nocookie.net/starcraft/images/a/ab/CalltoArmsEC.png/revision/latest?cb=20191129091623][Call to Arms]]
!Call to Labor
[img[https://vignette.wikia.nocookie.net/starcraft/images/e/eb/CalltoLaborEC.png/revision/latest?cb=20191129092108][Call to Labor]]
!Lift Off
[img[https://vignette.wikia.nocookie.net/starcraft/images/4/4a/SC2Liftoff.jpg/revision/latest?cb=20150729105422][Lift Off]]
!bEnlistment Center
[img[https://vignette.wikia.nocookie.net/starcraft/images/a/a2/EnlistmentCenter_SC2-LotV_Game2.jpg/revision/latest/scale-to-width-down/350?cb=20191130095819][Enlistment Center]]
!Enlistment Center
[img[https://vignette.wikia.nocookie.net/starcraft/images/0/0f/Enlistment_center_Coop_Game.jpg/revision/latest/scale-to-width-down/76?cb=20191128173907][Enlistment Center]]
!Conscript Dominion Laborer
[img[https://vignette.wikia.nocookie.net/starcraft/images/4/43/Laboror_Coop_Game1.png/revision/latest/scale-to-width-down/76?cb=20191104151819][Conscript Dominion Laborer]]
!Conscript Dominion Trooper
[img[https://vignette.wikia.nocookie.net/starcraft/images/9/9d/Trooper_Coop_Game1.png/revision/latest/scale-to-width-down/76?cb=20191104151939][Conscript Dominion Trooper]]
!Enthralled Zergling
[img[https://vignette.wikia.nocookie.net/starcraft/images/1/1c/Zergling_SC2_Rend1.jpg/revision/latest/scale-to-width-down/76?cb=20100818002026][Enthralled Zergling]]
!Enthralled Hydralisk
[img[https://vignette.wikia.nocookie.net/starcraft/images/b/bf/Hydralisk_SC2_DevRend2.jpg/revision/latest/scale-to-width-down/76?cb=20090407222208][Enthralled Hydralisk]]
!Enthralled Mutalisk
[img[https://vignette.wikia.nocookie.net/starcraft/images/e/e9/Mutalisk_SC2_DevRend2.png/revision/latest/scale-to-width-down/76?cb=20090511221650][]]
!Enthralled Ultralisk
[img[https://vignette.wikia.nocookie.net/starcraft/images/e/ee/Ultralisk_LotV_Game1.JPG/revision/latest/scale-to-width-down/76?cb=20170118011442][Enthralled Ultralisk]]
!Dominion Laborer
[img[https://vignette.wikia.nocookie.net/starcraft/images/4/43/Laboror_Coop_Game1.png/revision/latest/scale-to-width-down/76?cb=20191104151819][Dominion Laborer]]
!Dominion Trooper
[img[https://vignette.wikia.nocookie.net/starcraft/images/9/9d/Trooper_Coop_Game1.png/revision/latest/scale-to-width-down/76?cb=20191104151939][Dominion Trooper]]
!Dominion Assault Trooper
[img[https://vignette.wikia.nocookie.net/starcraft/images/b/be/Assault_Trooper_Coop_Game1.jpg/revision/latest/scale-to-width-down/76?cb=20191128174533][Dominion Assault Trooper]]
!Dominion Flame Trooper
[img[https://vignette.wikia.nocookie.net/starcraft/images/1/13/Flame_Trooper_Coop_Game1.jpg/revision/latest/scale-to-width-down/76?cb=20191128175403][Dominion Flame Trooper]]
!Dominion Rocket Trooper
[img[https://vignette.wikia.nocookie.net/starcraft/images/e/ef/Rocket_Trooper_Coop_Game1.jpg/revision/latest/scale-to-width-down/76?cb=20191128175150][Dominion Rocket Trooper]]
!Imperial Intercessor
[img[https://vignette.wikia.nocookie.net/starcraft/images/9/98/Intercessor_Coop_Game1.png/revision/latest/scale-to-width-down/76?cb=20191104152243][Imperial Intercessor]]
!Imperial Witness
[img[https://vignette.wikia.nocookie.net/starcraft/images/7/70/Witness_Coop_Game1.png/revision/latest/scale-to-width-down/76?cb=20191104152357][Imperial Witness]]
!Aegis Guard
[img[https://vignette.wikia.nocookie.net/starcraft/images/e/e5/AegisGuard_Coop_Game1.png/revision/latest/scale-to-width-down/76?cb=20191104152614][Aegis Guard]]
!Emperor's Shadow
[img[https://vignette.wikia.nocookie.net/starcraft/images/5/54/EmperorsShadow_Coop_Game1.png/revision/latest/scale-to-width-down/76?cb=20191104152717][Emperor's Shadow]]
!Shock Division
[img[https://vignette.wikia.nocookie.net/starcraft/images/8/81/ShockDivision_Coop_Game1.png/revision/latest/scale-to-width-down/76?cb=20191104153257][Shock Division]]
!Shock Division Siege
[img[https://vignette.wikia.nocookie.net/starcraft/images/b/bb/ShockDivision_COOP_Icon2.png/revision/latest/scale-to-width-down/76?cb=20191128042800][Shock Division Siege]]
!Blackhammer
[img[https://vignette.wikia.nocookie.net/starcraft/images/2/29/BlackHammer_Coop_Game1.png/revision/latest/scale-to-width-down/76?cb=20191104153634][Blackhammer]]
!Blackhammer Siege
[img[https://vignette.wikia.nocookie.net/starcraft/images/8/86/BlackHammer_COOP_Icon2.png/revision/latest/scale-to-width-down/76?cb=20191128042912]]
!Sky Fury
[img[https://vignette.wikia.nocookie.net/starcraft/images/0/0a/SkyFury_Coop_Game1.png/revision/latest/scale-to-width-down/76?cb=20191104153804][Sky Fury]]
!Sky Fury Ground
[img[https://vignette.wikia.nocookie.net/starcraft/images/0/09/SkyFury_COOP_Icon2.png/revision/latest/scale-to-width-down/76?cb=20191128042935][Sky Fury Ground]]
!Pride of Augustgrad
[img[https://vignette.wikia.nocookie.net/starcraft/images/9/9a/PrideofAugustgrad_Coop_Game1.png/revision/latest/scale-to-width-down/76?cb=20191104154050][Pride of Augustgrad]]
!Supply Bunker
[img[https://vignette.wikia.nocookie.net/starcraft/images/0/0b/Supply_Bunker_Coop_Game1.png/revision/latest/scale-to-width-down/76?cb=20191127175156][Supply Bunker]]
!Missile Turret (Mengsk)
[img[https://vignette.wikia.nocookie.net/starcraft/images/2/2a/Missile_Turret_Mengsk_Coop_Game1.png/revision/latest/scale-to-width-down/76?cb=20191127175217][Missile Turret (Mengsk)]]
!Earthsplitter Ordnance
[img[https://vignette.wikia.nocookie.net/starcraft/images/5/5c/Earthspliiter_Ordinance_Coop_Game1.png/revision/latest/scale-to-width-down/76?cb=20191127175304][Earthsplitter Ordnance]]
!Talent
[img[https://bnetcmsus-a.akamaihd.net/cms/page_media/ed/ED8ZFLT3JMAT1572545397971.jpg]]
!Law and Order
[img[https://vignette.wikia.nocookie.net/starcraft/images/1/16/LawandOrder_Talent_Icon.png/revision/latest?cb=20191128043138]]
!iLaw and Order
[img[https://vignette.wikia.nocookie.net/starcraft/images/1/16/LawandOrder_Talent_Icon.png/revision/latest/scale-to-width-down/30?cb=20191128043138]]
!Expanded Arsenal
[img[https://vignette.wikia.nocookie.net/starcraft/images/b/bc/ExpandedArsenal_Talent_Icon.png/revision/latest?cb=20191128043241]]
!Earthsplitter Ordnance
[img[https://vignette.wikia.nocookie.net/starcraft/images/0/0c/UnitEarthsplitterOrdinance_Talent_Icon.png/revision/latest?cb=20191128043431]]
!Contaminated Strike
[img[https://vignette.wikia.nocookie.net/starcraft/images/a/a4/ContaminatedStrike_Talent_Icon.png/revision/latest?cb=20191128043609]]
!Unquestioned Authority
[img[https://vignette.wikia.nocookie.net/starcraft/images/4/47/Unquestioned_Authority_Talent_Icon.png/revision/latest?cb=20191128043732]]
!Engineering Bay Upgrade Cache
[img[https://vignette.wikia.nocookie.net/starcraft/images/7/76/EngineeringBayUpgradeCacheMengsk_Talent_Icon.png/revision/latest?cb=20191128043940]]
!Wolves of War
[img[https://vignette.wikia.nocookie.net/starcraft/images/c/ce/WolvesofWar_Talent_Icon.png/revision/latest?cb=20191128044033]]
!iWolves of War
[img[https://vignette.wikia.nocookie.net/starcraft/images/c/ce/WolvesofWar_Talent_Icon.png/revision/latest/scale-to-width-down/30?cb=20191128044033]]
!Basic Royal Guard Upgrade Cache
[img[https://vignette.wikia.nocookie.net/starcraft/images/5/53/BasicRoyalGuardUpgradeCache_Talent_Icon.png/revision/latest?cb=20191128044231]]
!New Unit: Blackhammer
[img[https://vignette.wikia.nocookie.net/starcraft/images/5/52/UnitBlackhammer_Talent_Icon.png/revision/latest?cb=20191128044437]]
!Nuclear Annihilation
[img[https://vignette.wikia.nocookie.net/starcraft/images/6/66/NuclearAnnihilation_Talent_Icon.png/revision/latest?cb=20191128044533]]
!Psychoactive Payload
[img[https://vignette.wikia.nocookie.net/starcraft/images/e/e6/PsychoactivePayload_Talent_Icon.png/revision/latest?cb=20191128044627]]
!New Unit: Pride of Augustgrad
[img[https://vignette.wikia.nocookie.net/starcraft/images/b/b4/UnitPrideofAugustgrad_Talent_Icon.png/revision/latest?cb=20191128044730]]
!Complete Annihilation
[img[https://vignette.wikia.nocookie.net/starcraft/images/6/61/CompleteAnnihilation_Talent_Icon.png/revision/latest?cb=20191128044959]]
!Advanced Royal Guard Upgrade Cache
[img[https://vignette.wikia.nocookie.net/starcraft/images/1/16/AdvancedRoyalGuardUpgradeCache_Talent_Icon.png/revision/latest?cb=20191128045126]]
!Promotion Granted
[img[https://vignette.wikia.nocookie.net/starcraft/images/d/d6/PromotionGranted_Talent_Icon.png/revision/latest?cb=20191128045359]]
!![[Imperial Intercessor]]
Air transport. Heals nearby biological units. Can use Ignite Afterburners.
[img[https://bnetcmsus-a.akamaihd.net/cms/page_media/B3RTR1KL5YM11572391215300.png]]
[img[https://vignette.wikia.nocookie.net/starcraft/images/9/93/Healing_SC2_Icon1.jpg/revision/latest/scale-to-width-down/30?cb=20150723092935]] Healing
[img[https://vignette.wikia.nocookie.net/starcraft/images/a/ad/IgniteAfterburners_SC2_Icon.jpg/revision/latest/scale-to-width-down/30?cb=20151122041041]] Ignite Afterburners
!!![[Imperial Mandate]]
Imperial Mandate caps at 100.
His topbar pricing goes 25 per a bunker calldown (6 charges max) eack one of these is basically 340 minerals and a minute of production time.
Extremely worth This calldown doesn't need vision and can be used to spot which is nice too.
25 per a contaminated strike. Poor damage, amazing crowd control.
25 per a tier of dogs of war (up to 100). Really good dps and tanking. Each tier is worth waiting for. They are uncontrollable and auto target the closest enemy through fog of war.
And 100 for nuclear annihilation. Eveything dies, not as good as Dogs of war, but if it's on cooldown I'd use this.
His mandate comes from 3 sources.
*A base small amount that can't be altered.
*Indoctrinated troopers and laborers.
*And Royal Guard Units. [[[source|https://www.reddit.com/r/starcraft2coop/comments/e2fwcf/mengsk_observations_questions/]]]
[[PatchNotes4.11.3]]
++++
<<tiddler [[PatchNotes4.11.3##Mengsk]]>>
===
+++
[[Mengsk Mandate Generation, Caps, and Effective Numbers|https://www.reddit.com/r/starcraft2coop/comments/e9ex63/mengsk_mandate_generation_caps_and_effective/]]
Posted by [[u/TheTerribleness]]
I figured I'd make a separate post about imperial support and Mengsk's mandate generation as I've seen a lot of confusion about it. Most get the whole, use Witnesses thing by now but some hard numbers should help.
First the difference between Imperial Mandate and Imperial Support:
Mandate is what you spend on abilities it can range from 0 to 100. All abilities cost 25 or a multiple of 25 to use.
Imperial Support is what generates Imperial Mandate and it scales from 8 to 523*. Imperial support divided by 120 is equal to your Mandate per a second. Thus your minimum mandate per a second is 0.067 mandate per a second (25 minutes to get to 100 from 0) and your maximum is 4.358 mandate per a second (23 seconds to get to 100 mandate from 0).
*Maximum Support assumes you obey the supply cap. You can go higher by breaking it.
There are 3 sources of Imperial Support:
A base amount of 8 which you will always have (hence the minimum).
Royal Guard Units.
Indoctrinated Troopers and Laborers (requires an Imperial Witness).
Mengsk has only 1 unit he can build which does not help generate mandate, Imperial Intercessors. Each Intercessors you build effectively reduces your maximum possible imperial support by 5. Imperial Witnesses also do not generate imperial support directly, but do aid in its generation.
Royal Guard Units do not require indoctrination to generate mandate, however, their mandate generation is tied to their vet rank and supply costs and scales based off that. Royal Gaurds start out generating 25% of their supply cost as imperial support. Each veterancy rank increases this by 25%, to a maximum of 100% of their supply cost as imperial support. Thus Royal Guards can generate a maximum of 1.3 imperial support per a supply after masteries.
Troopers and Laborers do not generate support on their own. Instead they must be "indoctrinated" using an Imperial Witness in Patriot Mode. Indoctrinated Troopers and Laborers, in addition to the combat buffs Patriot Mode gives, also begin to generate Imperial Support at a rate of 1 imperial support per a supply (1.3 with masteries). After researching the amplified airwaves upgrades, this rate is double to a whopping 2 imperial support per a supply (2.6 with masteries). In game these numbers are rounded by the display so troopers with max masteries will be shown generating 3 support per.
As you can pretty quickly tell from these numbers, Indoctrinated Troopers/Laborers generate far more imperial support than royal guard units, easily twice as much as maxed ranked royal guard possibly can, with the cavet that they must be indoctrinated by a Witness (troopers/laborers in bunkers or garrisons cannot be indoctrinated). Hence you should always invest your masteries into trooper imperial support. Not only will you start with more supply of troopers, thus making generation start faster, you will always ultimately make more with them as well.
Now let's talk about his top bar for a second. Mengsk has 4 abilities:
Forced Conscription: 25 Mandate, 60 second charge cooldown, stores 4 charges
Contaminated Strike: 25 Mandate, 30 second cooldown
Dogs of War: 25 to 100 Mandate, 180 second cooldown
Nuclear Annihilation: 100 Mandate, 300 second cooldown
As most who use these know Contaminated Strike is a situational stun, Forced Conscription is a useful cooldown for both economic and combat reasons while Nuclear Annihilation and Dogs of War are both very powerful combat calldowns.
Most want to at least use Nuclear Annihilation and Dogs of War (at max mandate) on cooldown, with maybe situational use of the other two abilities at a minimum. This would be equal to generating 100 imperial mandate every 60 seconds (the minimum time between cooldowns that is greater than 0). This is equal to 1.67 mandate a second, or 200 imperial support. Assuming a normal expansion of 5 mineral patches and a main base of 7, two Imperial Witness with upgrades will generate 120 support on fully saturated bases, which combine with your base of 8 support means you only need to generate 72 extra support (28 indoctrinated troopers worth) to ensure you can use both those cooldowns as often as possible in a normal game. More support will allow you to mix in using the other calldowns more often.
As a small aside, Forced Conscription is the only calldown which will actually generate additional mandate, assuming you empty the bunker and put those Troopers under a Witness. When used in this manner, they will fully pay for their own mandate cost, on their own, in 3 minutes and 12 seconds. Roughly the cooldown of Dogs of War.
TL;DR Troopers generate the most mandate per a supply or per a cost. 200 imperial support total is the magic number you want to hit to spam Mengsk's strong calldowns and can be achieved on a normal map with Witnesses over both your minerals lines and one over at least 28 troopers.
Hope this helps.
EDIT: Small edit to base/expo generation because I forgot units inside a refinery are also garrisoned and do not generate mandate (this is why you see the numbers fluctuate as laborers enter and exit a refinery).
===
![[Talents|MengskTalents]]
<<tiddler [[MengskTalent##5]]>>
!![[Imperial Witness]]
Aerial support unit. Can use Enable Patriot Mode to Indoctrinate nearby allies.
Detector
[img[https://bnetcmsus-a.akamaihd.net/cms/page_media/XYCPI0V8KQF61572391215306.png]]
Allows the Aegis Guard's attacks to slow enemy units movement speed by 40% for 3 seconds.
Purchased from [[Royal Academy]] for <<tiddler Cost with:"100" "100" "50">>
/***
|Name:|InstantTimestampPlugin|
|Description:|A handy way to insert timestamps in your tiddler content|
|Version:|1.0.10a|
|Date:|27-Jun-2011|
|Source:|http://mptw.tiddlyspot.com/#InstantTimestampPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!!Usage
If you enter {ts} in your tiddler content (without the spaces) it will be replaced with a timestamp when you save the tiddler. Full list of formats:
* {ts} or {t} -> timestamp
* {ds} or {d} -> datestamp
* !ts or !t at start of line -> !!timestamp
* !ds or !d at start of line -> !!datestamp
(I added the extra ! since that's how I like it. Remove it from translations below if required)
!!Notes
* Change the timeFormat and dateFormat below to suit your preference.
* See also http://mptw2.tiddlyspot.com/#AutoCorrectPlugin
* You could invent other translations and add them to the translations array below.
***/
//{{{
config.InstantTimestamp = {
// adjust to suit
timeFormat: 'DD/0MM/YY 0hh:0mm',
dateFormat: 'DD/0MM/YY',
translations: [
[/^!ts?$/img, "'!!{{ts{'+now.formatString(config.InstantTimestamp.timeFormat)+'}}}'"],
[/^!ds?$/img, "'!!{{ds{'+now.formatString(config.InstantTimestamp.dateFormat)+'}}}'"],
// thanks Adapted Cat
[/\{ts?\}(?!\}\})/ig,"'{{ts{'+now.formatString(config.InstantTimestamp.timeFormat)+'}}}'"],
[/\{ds?\}(?!\}\})/ig,"'{{ds{'+now.formatString(config.InstantTimestamp.dateFormat)+'}}}'"]
],
excludeTags: [
"noAutoCorrect",
"noTimestamp",
"html",
"CSS",
"css",
"systemConfig",
"systemConfigDisabled",
"zsystemConfig",
"Plugins",
"Plugin",
"plugins",
"plugin",
"javascript",
"code",
"systemTheme",
"systemPalette"
],
excludeTiddlers: [
"StyleSheet",
"StyleSheetLayout",
"StyleSheetColors",
"StyleSheetPrint"
// more?
]
};
TiddlyWiki.prototype.saveTiddler_mptw_instanttimestamp = TiddlyWiki.prototype.saveTiddler;
TiddlyWiki.prototype.saveTiddler = function(title,newTitle,newBody,modifier,modified,tags,fields,clearChangeCount,created) {
tags = tags ? tags : []; // just in case tags is null
tags = (typeof(tags) == "string") ? tags.readBracketedList() : tags;
var conf = config.InstantTimestamp;
if ( !tags.containsAny(conf.excludeTags) && !conf.excludeTiddlers.contains(newTitle) ) {
var now = new Date();
var trans = conf.translations;
for (var i=0;i<trans.length;i++) {
newBody = newBody.replace(trans[i][0], eval(trans[i][1]));
}
}
// TODO: use apply() instead of naming all args?
return this.saveTiddler_mptw_instanttimestamp(title,newTitle,newBody,modifier,modified,tags,fields,clearChangeCount,created);
}
// you can override these in StyleSheet
setStylesheet(".ts,.ds { font-style:italic; }","instantTimestampStyles");
//}}}
[img[banner.gif]] {{big{→}}} [img[i4logo.gif]]
{{left{
__''@@font-size:18pt;font-family:times;color:#0c0;I@@ntuitive'' \In*tu"i*tive\ (//adj.//)__
{{small{
1. Seeing clearly; as, an intuitive view; intuitive vision.
2. Knowing, or perceiving, by intuition;
3. Capable of knowing without deduction or reasoning.
}}}
__''@@font-size:18pt;font-family:times;color:#0c0;I@@nterfaces'' \In`ter"faces\ (//noun//)__
{{small{
1. Devices and/or processes for controlling and monitoring inter-operability between complex physical systems and mechanisms
2. Visual, syntactic and semantic conventions and procedures for the representation and exchange of information and/or commands for controlling software applications and digital presentations.
}}}
__''@@font-size:18pt;font-family:times;color:#0c0;I@@ntelligent'' \In*tel"li*gent\ (//adj.//)__
{{small{
1. Possessing sound knowledge
2. Exercising or showing good judgment
3. Endowed with the capacity to reason
}}}
__''@@font-size:18pt;font-family:times;color:#0c0;I@@nteractions'' \In`ter*ac"tions\ (//noun//)__
{{small{
1. Mutual or reciprocal actions or influence
2. Sequences of events, actions, and conditional responses, combined to achieve specific goals or purposes
}}}}}}
!!!Design Principles
<<<
The most important function of an interface is to communicate information in ways that can be easily understood. To achieve this, a "user-centric" design approach is needed, in which the focus is on the intent, knowledge, expectations, and abilities of a range of typical viewers as they might be expected to interact with a proposed interface.
| ''Knowledge and ability vary greatly from person-to-person, and task-to-task. Interfaces should be flexible and adaptable to best fit these individual differences.'' |
The most effective interfaces help the viewer to ''focus'' on their ''goals'' and ''objectives'' to obtain relevant, meaningful and ''useful results'' with less of ''time'' and ''effort''. To evaluate the potential of alternative interface designs, techniques such as scenarios, storyboarding, and use-case analysis can be used to illustrate how even minor variations in the presentation style and organization of an interface can enhance or detract from the overall effectiveness of the viewing experience.
| ''A good interface is like a good hairpiece - you won't notice it. A bad interface is like a bad hairpiece - all you can do is stare at it.'' |
When an interface is well designed, it doesn't really get much notice. Most functions perform just as the viewer expects them to, and the interaction flows smoothly from activity to activity. In contrast, when an interface is poorly designed, very little works as the viewer expects. As a result, the viewer's mental focus is diverted away from the real task and they expend considerable effort simply to decipher an arbitrary, non-intuitive method of interaction, in hopes of finding a means to achieve the results they desire.
| ''More often than not, you get what you //expect// to get. Effective interfaces focus on helping the user form expectations that work.'' |
Informative messages, tooltips, help text, as well as suitably-worded labels on form controls and linked text, all contribute to an interactive process of "managing expectations", so that the user is able to quickly understand and form accurate expectations of the behavior of the interface and the desired results can be reliably predicted and more easily achieved.
<<<
@@font-size:6pt;©1995-2006 Eric L. Shulman. All rights retained.@@
Prevents the Emperor's Shadow from taking any damage for 10 seconds after being attacked. Cannot occur more than once every 30 seconds. Can be set to autocast.
<<tiddler Costa with:"-" "-" "10" "30">>
/***
|Name:|LessBackupsPlugin|
|Description:|Intelligently limit the number of backup files you create|
|Version:|3.0.1a|
|Date:|27-Jun-2011|
|Source:|http://mptw.tiddlyspot.com/#LessBackupsPlugin|
|Author:|Simon Baird|
|Email:|simon.baird@gmail.com|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!!Description
You end up with just backup one per year, per month, per weekday, per hour, minute, and second. So total number won't exceed about 200 or so. Can be reduced by commenting out the seconds/minutes/hours line from modes array
!!Notes
Works in IE and Firefox only. Algorithm by Daniel Baird. IE specific code by by Saq Imtiaz.
***/
//{{{
var MINS = 60 * 1000;
var HOURS = 60 * MINS;
var DAYS = 24 * HOURS;
if (!config.lessBackups) {
config.lessBackups = {
// comment out the ones you don't want or set config.lessBackups.modes in your 'tweaks' plugin
modes: [
["YYYY", 365*DAYS], // one per year for ever
["MMM", 31*DAYS], // one per month
["ddd", 7*DAYS], // one per weekday
//["d0DD", 1*DAYS], // one per day of month
["h0hh", 24*HOURS], // one per hour
["m0mm", 1*HOURS], // one per minute
["s0ss", 1*MINS], // one per second
["latest",0] // always keep last version. (leave this).
]
};
}
window.getSpecialBackupPath = function(backupPath) {
var now = new Date();
var modes = config.lessBackups.modes;
for (var i=0;i<modes.length;i++) {
// the filename we will try
var specialBackupPath = backupPath.replace(/(\.)([0-9]+\.[0-9]+)(\.html)$/,
'$1'+now.formatString(modes[i][0]).toLowerCase()+'$3')
// open the file
try {
if (config.browser.isIE) {
var fsobject = new ActiveXObject("Scripting.FileSystemObject")
var fileExists = fsobject.FileExists(specialBackupPath);
if (fileExists) {
var fileObject = fsobject.GetFile(specialBackupPath);
var modDate = new Date(fileObject.DateLastModified).valueOf();
}
}
else {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath(specialBackupPath);
var fileExists = file.exists();
if (fileExists) {
var modDate = file.lastModifiedTime;
}
}
}
catch(e) {
// give up
return backupPath;
}
// expiry is used to tell if it's an 'old' one. Eg, if the month is June and there is a
// June file on disk that's more than an month old then it must be stale so overwrite
// note that "latest" should be always written because the expiration period is zero (see above)
var expiry = new Date(modDate + modes[i][1]);
if (!fileExists || now > expiry)
return specialBackupPath;
}
}
// hijack the core function
window.getBackupPath_mptw_orig = window.getBackupPath;
window.getBackupPath = function(localPath) {
return getSpecialBackupPath(getBackupPath_mptw_orig(localPath));
}
//}}}
/***
|''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);
}
//}}}
|Guns|Unit|Equipment|Upgrade|Mastery|Cooldown|Hits|Area of Effect|Upgrade|Hit Damage|Burst Damage (0/1/2/3/5/5 Lone Wolf Stacks)|DPS (0/1/2/3/5/5 Lone Wolf Stacks)|
||Tychus|Shredder Grenade|||20|1|4||75|75/97/120/142/165/187|3/4/6/7/8/9|
||Tychus|Shredder Grenade||Shredder Grenade Cooldown|14|1|4||75|75/97/120/142/165/187|5/6/8/10/11/13|
||Tychus|Vanadium Shell|||20|1|4||125|125/162/200/237/275/312|6/8/10/11/13/15|
||Tychus|Vanadium Shell||Shredder Grenade Cooldown|14|1|4||125|125/162/200/237/275/312|8/11/14/16/19/22|
||Tychus||||0,3|1||<<tiddler [[IMG##OutlawWeapons]]>> 0|18|18/23/28/34/39/45|60/78/96/114/132/150|
||Tychus||||0,3|1||<<tiddler [[IMG##OutlawWeapons]]>> 1|20|20/26/32/38/44/50|66/86/106/126/146/166|
||Tychus||||0,3|1||<<tiddler [[IMG##OutlawWeapons]]>> 2|22|22/28/35/41/48/55|73/95/117/139/161/183|
||Tychus||||0,3|1||<<tiddler [[IMG##OutlawWeapons]]>> 3|24|24/31/38/45/52/60|80/104/128/152/176/200|
||Tychus||||0,3|1||<<tiddler [[IMG##OutlawWeapons]]>> 4|26|26/33/41/49/57/65|86/112/138/164/190/216|
||Tychus||||0,3|1||<<tiddler [[IMG##OutlawWeapons]]>> 5|28|28/36/44/53/61/70|93/121/149/177/205/233|
||Tychus||ITCE Triggers||0,24|1||<<tiddler [[IMG##OutlawWeapons]]>> 0|18|18/23/28/34/39/45|75/97/120/142/165/187|
||Tychus||ITCE Triggers||0,24|1||<<tiddler [[IMG##OutlawWeapons]]>> 1|20|20/26/32/38/44/50|83/108/133/158/183/208|
||Tychus||ITCE Triggers||0,24|1||<<tiddler [[IMG##OutlawWeapons]]>> 2|22|22/28/35/41/48/55|91/119/146/174/201/229|
||Tychus||ITCE Triggers||0,24|1||<<tiddler [[IMG##OutlawWeapons]]>> 3|24|24/31/38/45/52/60|100/130/160/190/220/250|
||Tychus||ITCE Triggers||0,24|1||<<tiddler [[IMG##OutlawWeapons]]>> 4|26|26/33/41/49/57/65|108/140/173/205/238/270|
||Tychus||ITCE Triggers||0,24|1||<<tiddler [[IMG##OutlawWeapons]]>> 5|28|28/36/44/53/61/70|116/151/186/221/256/291|
||Tychus||ITCE Triggers|Tri Outlaw Improvement|0,21|1||<<tiddler [[IMG##OutlawWeapons]]>> 0|18|18/23/28/34/39/45|85/111/137/162/188/214|
||Tychus||ITCE Triggers|Tri Outlaw Improvement|0,21|1||<<tiddler [[IMG##OutlawWeapons]]>> 1|20|20/26/32/38/44/50|95/123/152/180/209/238|
||Tychus||ITCE Triggers|Tri Outlaw Improvement|0,21|1||<<tiddler [[IMG##OutlawWeapons]]>> 2|22|22/28/35/41/48/55|104/136/167/199/230/261|
||Tychus||ITCE Triggers|Tri Outlaw Improvement|0,21|1||<<tiddler [[IMG##OutlawWeapons]]>> 3|24|24/31/38/45/52/60|114/148/182/217/251/285|
||Tychus||ITCE Triggers|Tri Outlaw Improvement|0,21|1||<<tiddler [[IMG##OutlawWeapons]]>> 4|26|26/33/41/49/57/65|123/160/198/235/272/309|
||Tychus||ITCE Triggers|Tri Outlaw Improvement|0,21|1||<<tiddler [[IMG##OutlawWeapons]]>> 5|28|28/36/44/53/61/70|133/173/213/253/293/333|
||Tychus||ITCE Triggers|Tri Outlaw Improvement+Tychus Attack Speed|0,16|1||<<tiddler [[IMG##OutlawWeapons]]>> 0|18|18/23/28/34/39/45|112/146/180/213/247/281|
||Tychus||ITCE Triggers|Tri Outlaw Improvement+Tychus Attack Speed|0,16|1||<<tiddler [[IMG##OutlawWeapons]]>> 1|20|20/26/32/38/44/50|125/162/200/237/275/312|
||Tychus||ITCE Triggers|Tri Outlaw Improvement+Tychus Attack Speed|0,16|1||<<tiddler [[IMG##OutlawWeapons]]>> 2|22|22/28/35/41/48/55|137/178/220/261/302/343|
||Tychus||ITCE Triggers|Tri Outlaw Improvement+Tychus Attack Speed|0,16|1||<<tiddler [[IMG##OutlawWeapons]]>> 3|24|24/31/38/45/52/60|150/195/240/285/330/375|
||Tychus||ITCE Triggers|Tri Outlaw Improvement+Tychus Attack Speed|0,16|1||<<tiddler [[IMG##OutlawWeapons]]>> 4|26|26/33/41/49/57/65|162/211/260/308/357/406|
||Tychus||ITCE Triggers|Tri Outlaw Improvement+Tychus Attack Speed|0,16|1||<<tiddler [[IMG##OutlawWeapons]]>> 5|28|28/36/44/53/61/70|175/227/280/332/385/437|
|Guns|Unit|Equipment|Upgrade|Mastery|Cooldown|Hits|Area of Effect|Upgrade|Hit Damage|Burst Damage (0/1/2/3/5/5 Lone Wolf Stacks)|DPS (0/1/2/3/5/5 Lone Wolf Stacks)|
||Sam|Demolition Charge|||30|1|||500|500/650/800/950/1100/1250|16/21/26/31/36/41|
||Sam|LarsCorp G7 Charges|||30|1|||1000|1000/1300/1600/1900/2200/2500|33/43/53/63/73/83|
||Sam||||1,1|2||<<tiddler [[IMG##OutlawWeapons]]>> 0|30|60/78/96/114/132/150|54/70/87/103/120/136|
||Sam||||1,1|2||<<tiddler [[IMG##OutlawWeapons]]>> 1|33|66/85/105/125/145/165|60/78/96/114/132/150|
||Sam||||1,1|2||<<tiddler [[IMG##OutlawWeapons]]>> 2|36|72/93/115/136/158/180|65/85/104/124/144/163|
||Sam||||1,1|2||<<tiddler [[IMG##OutlawWeapons]]>> 3|39|78/101/124/148/171/195|70/92/113/134/156/177|
||Sam||||1,1|2||<<tiddler [[IMG##OutlawWeapons]]>> 4|42|84/109/134/159/184/210|76/99/122/145/168/190|
||Sam||||1,1|2||<<tiddler [[IMG##OutlawWeapons]]>> 5|45|90/117/144/171/198/225|81/106/130/155/180/204|
||Sam||ITCE Triggers||0,88|2||<<tiddler [[IMG##OutlawWeapons]]>> 0|30|60/78/96/114/132/150|68/88/109/129/150/170|
||Sam||ITCE Triggers||0,88|2||<<tiddler [[IMG##OutlawWeapons]]>> 1|33|66/85/105/125/145/165|75/97/120/142/165/187|
||Sam||ITCE Triggers||0,88|2||<<tiddler [[IMG##OutlawWeapons]]>> 2|36|72/93/115/136/158/180|81/106/130/155/180/204|
||Sam||ITCE Triggers||0,88|2||<<tiddler [[IMG##OutlawWeapons]]>> 3|39|78/101/124/148/171/195|88/115/141/168/195/221|
||Sam||ITCE Triggers||0,88|2||<<tiddler [[IMG##OutlawWeapons]]>> 4|42|84/109/134/159/184/210|95/124/152/181/210/238|
||Sam||ITCE Triggers||0,77|2||<<tiddler [[IMG##OutlawWeapons]]>> 5|45|90/117/144/171/198/225|116/151/187/222/257/292|
||Sam||ITCE Triggers|Tri Outlaw Improvement|0,77|2||<<tiddler [[IMG##OutlawWeapons]]>> 0|30|60/78/96/114/132/150|77/101/124/148/171/194|
||Sam||ITCE Triggers|Tri Outlaw Improvement|0,77|2||<<tiddler [[IMG##OutlawWeapons]]>> 1|33|66/85/105/125/145/165|85/111/137/162/188/214|
||Sam||ITCE Triggers|Tri Outlaw Improvement|0,77|2||<<tiddler [[IMG##OutlawWeapons]]>> 2|36|72/93/115/136/158/180|93/121/149/177/205/233|
||Sam||ITCE Triggers|Tri Outlaw Improvement|0,77|2||<<tiddler [[IMG##OutlawWeapons]]>> 3|39|78/101/124/148/171/195|101/131/162/192/222/253|
||Sam||ITCE Triggers|Tri Outlaw Improvement|0,77|2||<<tiddler [[IMG##OutlawWeapons]]>> 4|42|84/109/134/159/184/210|109/141/174/207/240/272|
||Sam||ITCE Triggers|Tri Outlaw Improvement|0,77|2||<<tiddler [[IMG##OutlawWeapons]]>> 5|45|90/117/144/171/198/225|116/151/187/222/257/292|
|Guns|Unit|Equipment|Upgrade|Mastery|Cooldown|Hits|Area of Effect|Upgrade|Hit Damage|Burst Damage (0/1/2/3/5/5 Lone Wolf Stacks)|DPS (0/1/2/3/5/5 Lone Wolf Stacks)|
||Sirius||||1,7|1||<<tiddler [[IMG##OutlawWeapons]]>> 0|23|23/29/36/43/50/57|13/17/21/25/29/33|
||Sirius||||1,7|1||<<tiddler [[IMG##OutlawWeapons]]>> 1|25|25/32/40/47/55/62|14/19/23/27/32/36|
||Sirius||||1,7|1||<<tiddler [[IMG##OutlawWeapons]]>> 2|27|27/35/43/51/59/67|15/20/25/30/34/39|
||Sirius||||1,7|1||<<tiddler [[IMG##OutlawWeapons]]>> 3|29|29/37/46/55/63/72|17/22/27/32/37/42|
||Sirius||||1,7|1||<<tiddler [[IMG##OutlawWeapons]]>> 4|31|31/40/49/58/68/77|18/23/29/34/40/45|
||Sirius||||1,7|1||<<tiddler [[IMG##OutlawWeapons]]>> 5|33|33/42/52/62/72/82|19/25/31/36/42/48|
||Sirius||ITCE Triggers||1,36|1||<<tiddler [[IMG##OutlawWeapons]]>> 0|23|23/29/36/43/50/57|16/21/27/32/37/42|
||Sirius||ITCE Triggers||1,36|1||<<tiddler [[IMG##OutlawWeapons]]>> 1|25|25/32/40/47/55/62|18/23/29/34/40/45|
||Sirius||ITCE Triggers||1,36|1||<<tiddler [[IMG##OutlawWeapons]]>> 2|27|27/35/43/51/59/67|19/25/31/37/43/49|
||Sirius||ITCE Triggers||1,36|1||<<tiddler [[IMG##OutlawWeapons]]>> 3|29|29/37/46/55/63/72|21/27/34/40/46/53|
||Sirius||ITCE Triggers||1,36|1||<<tiddler [[IMG##OutlawWeapons]]>> 4|31|31/40/49/58/68/77|22/29/36/43/50/56|
||Sirius||ITCE Triggers||1,36|1||<<tiddler [[IMG##OutlawWeapons]]>> 5|33|33/42/52/62/72/82|24/31/38/46/53/60|
||Sirius||ITCE Triggers|Tri Outlaw Improvement|1,18|1||<<tiddler [[IMG##OutlawWeapons]]>> 0|23|23/29/36/43/50/57|19/25/31/37/42/48|
||Sirius||ITCE Triggers|Tri Outlaw Improvement|1,18|1||<<tiddler [[IMG##OutlawWeapons]]>> 1|25|25/32/40/47/55/62|21/27/33/40/46/52|
||Sirius||ITCE Triggers|Tri Outlaw Improvement|1,18|1||<<tiddler [[IMG##OutlawWeapons]]>> 2|27|27/35/43/51/59/67|22/29/36/43/50/57|
||Sirius||ITCE Triggers|Tri Outlaw Improvement|1,18|1||<<tiddler [[IMG##OutlawWeapons]]>> 3|29|29/37/46/55/63/72|24/31/39/46/54/61|
||Sirius||ITCE Triggers|Tri Outlaw Improvement|1,18|1||<<tiddler [[IMG##OutlawWeapons]]>> 4|31|31/40/49/58/68/77|26/34/42/49/57/65|
||Sirius||ITCE Triggers|Tri Outlaw Improvement|1,18|1||<<tiddler [[IMG##OutlawWeapons]]>> 5|33|33/42/52/62/72/82|27/36/44/53/61/69|
||Sirius|SA-55 Thunderbolt Missiles x1|||15|8|||100|800/1040/1280/1520/1760/2000|53/69/85/101/117/133|
||Sirius|D99 Detonator|||1|1|||300|300/390/480/570/660/750|300/390/480/570/660/750|
||Warhound Turret||||0,77|1||<<tiddler [[IMG##OutlawWeapons]]>> 0|18|18/23/28/34/39/45|23/30/37/44/51/58|
||Warhound Turret||||0,77|1||<<tiddler [[IMG##OutlawWeapons]]>> 1|20|20/26/32/38/44/50|25/33/41/49/57/64|
||Warhound Turret||||0,77|1||<<tiddler [[IMG##OutlawWeapons]]>> 2|22|22/28/35/41/48/55|28/37/45/54/62/71|
||Warhound Turret||||0,77|1||<<tiddler [[IMG##OutlawWeapons]]>> 3|24|24/31/38/45/52/60|31/40/49/59/68/77|
||Warhound Turret||||0,77|1||<<tiddler [[IMG##OutlawWeapons]]>> 4|26|26/33/41/49/57/65|33/43/54/64/74/84|
||Warhound Turret||||0,77|1||<<tiddler [[IMG##OutlawWeapons]]>> 5|28|28/36/44/53/61/70|36/47/58/69/80/90|
||Warhound Turret|SA-55 Thunderbolt Missiles x1|||30|2|||100|200/260/320/380/440/500|6/8/10/12/14/16|
||Warhound Turret|D99 Detonator|||1|1|||50|50/65/80/95/110/125|50/65/80/95/110/125|
|Muscles|Unit|Equipment|Upgrade|Mastery|Cooldown|Hits|Area of Effect|Upgrade|Hit Damage|Burst Damage|DPS|
||Blaze|Oil Spill 1s|||15|1|||5|5/6/8/9/11/12|0/0/0/0/0/0|
||Blaze|Oil Spill 10s|||15|1|||50|50/65/80/95/110/125|3/4/5/6/7/8|
||Blaze|Hades Oil (vs light) 1s|||15|1|||30|30/39/48/57/66/75|2/2/3/3/4/5|
||Blaze|Hades Oil (vs light) 10s|||15|1|||300|300/390/480/570/660/750|20/26/32/38/44/50|
||Blaze||||1,4|1|2x3|<<tiddler [[IMG##OutlawWeapons]]>> 0|36|36/46/57/68/79/90|25/33/41/48/56/64|
||Blaze||||1,4|1|2x3|<<tiddler [[IMG##OutlawWeapons]]>> 1|40|40/52/64/76/88/100|28/37/45/54/62/71|
||Blaze||||1,4|1|2x3|<<tiddler [[IMG##OutlawWeapons]]>> 2|44|44/57/70/83/96/110|31/40/50/59/69/78|
||Blaze||||1,4|1|2x3|<<tiddler [[IMG##OutlawWeapons]]>> 3|48|48/62/76/91/105/120|34/44/54/65/75/85|
||Blaze||||1,4|1|2x3|<<tiddler [[IMG##OutlawWeapons]]>> 4|52|52/67/83/98/114/130|37/48/59/70/81/92|
||Blaze||||1,4|1|2x3|<<tiddler [[IMG##OutlawWeapons]]>> 5|56|56/72/89/106/123/140|40/52/64/76/88/100|
||Blaze (vsLight)||||1,4|1|2x3|<<tiddler [[IMG##OutlawWeapons]]>> 0|53|53/68/84/100/116/132|37/49/60/71/83/94|
||Blaze (vsLight)||||1,4|1|2x3|<<tiddler [[IMG##OutlawWeapons]]>> 1|56|56/72/89/106/123/140|40/52/64/76/88/100|
||Blaze (vsLight)||||1,4|1|2x3|<<tiddler [[IMG##OutlawWeapons]]>> 2|63|63/81/100/119/138/157|45/58/72/85/99/112|
||Blaze (vsLight)||||1,4|1|2x3|<<tiddler [[IMG##OutlawWeapons]]>> 3|68|68/88/108/129/149/170|48/63/77/92/106/121|
||Blaze (vsLight)||||1,4|1|2x3|<<tiddler [[IMG##OutlawWeapons]]>> 4|73|73/94/116/138/160/182|52/67/83/99/114/130|
||Blaze (vsLight)||||1,4|1|2x3|<<tiddler [[IMG##OutlawWeapons]]>> 5|78|78/101/124/148/171/195|55/72/89/105/122/139|
||Unit|Equipment|Upgrade|Mastery|Cooldown|Hits|Area of Effect|Upgrade|Hit Damage|Burst Damage|DPS|
||Rattlesnake||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 0|40|40/52/64/76/88/100|26/34/42/50/58/66|
||Rattlesnake||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 1|44|44/57/70/83/96/110|29/38/46/55/64/73|
||Rattlesnake||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 2|48|48/62/76/91/105/120|32/41/51/60/70/80|
||Rattlesnake||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 3|52|52/67/83/98/114/130|34/45/55/65/76/86|
||Rattlesnake||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 4|56|56/72/89/106/123/140|37/48/59/70/82/93|
||Rattlesnake||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 5|60|60/78/96/114/132/150|40/52/64/76/88/100|
||Rattlesnake (vs Armored)||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 0|80|80/104/128/152/176/200|53/69/85/101/117/133|
||Rattlesnake (vs Armored)||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 1|88|88/114/140/167/193/220|58/76/93/111/129/146|
||Rattlesnake (vs Armored)||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 2|96|96/124/153/182/211/240|64/83/102/121/140/160|
||Rattlesnake (vs Armored)||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 3|104|104/135/166/197/228/260|69/90/110/131/152/173|
||Rattlesnake (vs Armored)||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 4|112|112/145/179/212/246/280|74/97/119/141/164/186|
||Rattlesnake (vs Armored)||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 5|120|120/156/192/228/264/300|80/104/128/152/176/200|
||Rattlesnake|Stimpack|||1|1||<<tiddler [[IMG##OutlawWeapons]]>> 0|40|40/52/64/76/88/100|40/52/64/76/88/100|
||Rattlesnake|Stimpack|||1|1||<<tiddler [[IMG##OutlawWeapons]]>> 1|44|44/57/70/83/96/110|44/57/70/83/96/110|
||Rattlesnake|Stimpack|||1|1||<<tiddler [[IMG##OutlawWeapons]]>> 2|48|48/62/76/91/105/120|48/62/76/91/105/120|
||Rattlesnake|Stimpack|||1|1||<<tiddler [[IMG##OutlawWeapons]]>> 3|52|52/67/83/98/114/130|52/67/83/98/114/130|
||Rattlesnake|Stimpack|||1|1||<<tiddler [[IMG##OutlawWeapons]]>> 4|56|56/72/89/106/123/140|56/72/89/106/123/140|
||Rattlesnake|Stimpack|||1|1||<<tiddler [[IMG##OutlawWeapons]]>> 5|60|60/78/96/114/132/150|60/78/96/114/132/150|
||Rattlesnake (vs Armored)|Stimpack|||1|1||<<tiddler [[IMG##OutlawWeapons]]>> 0|80|80/104/128/152/176/200|80/104/128/152/176/200|
||Rattlesnake (vs Armored)|Stimpack|||1|1||<<tiddler [[IMG##OutlawWeapons]]>> 1|88|88/114/140/167/193/220|88/114/140/167/193/220|
||Rattlesnake (vs Armored)|Stimpack|||1|1||<<tiddler [[IMG##OutlawWeapons]]>> 2|96|96/124/153/182/211/240|96/124/153/182/211/240|
||Rattlesnake (vs Armored)|Stimpack|||1|1||<<tiddler [[IMG##OutlawWeapons]]>> 3|104|104/135/166/197/228/260|104/135/166/197/228/260|
||Rattlesnake (vs Armored)|Stimpack|||1|1||<<tiddler [[IMG##OutlawWeapons]]>> 4|112|112/145/179/212/246/280|112/145/179/212/246/280|
||Rattlesnake (vs Armored)|Stimpack|||1|1||<<tiddler [[IMG##OutlawWeapons]]>> 5|120|120/156/192/228/264/300|120/156/192/228/264/300|
||Unit|Equipment|Upgrade|Mastery|Cooldown|Hits|Area of Effect|Upgrade|Hit Damage|Burst Damage|DPS|
||Cannonball|Heavy Impact|||15|1|||20|20/26/32/38/44/50|1/1/2/2/2/3|
||Cannonball||||1,8|1||<<tiddler [[IMG##OutlawWeapons]]>> 0|50|50/65/80/95/110/125|27/36/44/52/61/69|
||Cannonball||||1,8|1||<<tiddler [[IMG##OutlawWeapons]]>> 1|55|55/71/88/104/121/137|30/39/48/58/67/76|
||Cannonball||||1,8|1||<<tiddler [[IMG##OutlawWeapons]]>> 2|60|60/78/96/114/132/150|33/43/53/63/73/83|
||Cannonball||||1,8|1||<<tiddler [[IMG##OutlawWeapons]]>> 3|65|65/84/104/123/143/162|36/46/57/68/79/90|
||Cannonball||||1,8|1||<<tiddler [[IMG##OutlawWeapons]]>> 4|70|70/91/112/133/154/175|38/50/62/73/85/97|
||Cannonball||||1,8|1||<<tiddler [[IMG##OutlawWeapons]]>> 5|75|75/97/120/142/165/187|41/54/66/79/91/104|
||Cannonball|Redline Power Cells|||1,12|1||<<tiddler [[IMG##OutlawWeapons]]>> 0|110|110/143/176/209/242/275|98/127/157/186/216/245|
||Cannonball|Redline Power Cells|||1,12|1||<<tiddler [[IMG##OutlawWeapons]]>> 1|115|115/149/184/218/253/287|102/133/164/195/225/256|
||Cannonball|Redline Power Cells|||1,12|1||<<tiddler [[IMG##OutlawWeapons]]>> 2|120|120/156/192/228/264/300|107/139/171/203/235/267|
||Cannonball|Redline Power Cells|||1,12|1||<<tiddler [[IMG##OutlawWeapons]]>> 3|125|125/162/200/237/275/312|111/145/178/212/245/279|
||Cannonball|Redline Power Cells|||1,12|1||<<tiddler [[IMG##OutlawWeapons]]>> 4|130|130/169/208/247/286/325|116/150/185/220/255/290|
||Cannonball|Redline Power Cells|||1,12|1||<<tiddler [[IMG##OutlawWeapons]]>> 5|135|135/175/216/256/297/337|120/156/192/229/265/301|
|Fixers|Unit|Equipment|Upgrade|Mastery|Cooldown|Hits|Area of Effect|Upgrade|Hit Damage|Burst Damage|DPS|
||Nux|Ultrasonic Pulse 1s|||30|1|2/3||20|20/26/32/38/44/50|0/0/1/1/1/1|
||Nux|Ultrasonic Pulse 6s|||30|1|2/3||120|120/156/192/228/264/300|4/5/6/7/8/10|
||Nux|Ultrasonic Pulse+Crystalline Amplifiers 12s|||30|1|2/3||240|240/312/384/456/528/600|8/10/12/15/17/20|
||Nux|T4 Cloudburst Shells 1s|||30|1|2/3||30|30/39/48/57/66/75|1/1/1/1/2/2|
||Nux|T4 Cloudburst Shells 6s|||30|1|2/3||180|180/234/288/342/396/450|6/7/9/11/13/15|
||Nux|T4 Cloudburst Shells+Crystalline Amplifiers 12s|||30|1|2/3||360|360/468/576/684/792/900|12/15/19/22/26/30|
||Nux||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 0|30|30/39/48/57/66/75|20/26/32/38/44/50|
||Nux||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 1|33|33/42/52/62/72/82|22/28/35/41/48/55|
||Nux||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 2|36|36/46/57/68/79/90|24/31/38/45/52/60|
||Nux||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 3|39|39/50/62/74/85/97|26/33/41/49/57/65|
||Nux||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 4|42|42/54/67/79/92/105|28/36/44/53/61/70|
||Nux||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 5|45|45/58/72/85/99/112|30/39/48/57/66/75|
||Unit|Equipment|Upgrade|Mastery|Cooldown|Hits|Area of Effect|Upgrade|Hit Damage|Burst Damage|DPS|
||Vega||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 0|20|20/26/32/38/44/50|13/17/21/25/29/33|
||Vega||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 1|22|22/28/35/41/48/55|14/19/23/27/32/36|
||Vega||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 2|24|24/31/38/45/52/60|16/20/25/30/35/40|
||Vega||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 3|26|26/33/41/49/57/65|17/22/27/32/38/43|
||Vega||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 4|28|28/36/44/53/61/70|18/24/29/35/41/46|
||Vega||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 5|30|30/39/48/57/66/75|20/26/32/38/44/50|
||Vega (vs light)||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 0|40|40/52/64/76/88/100|26/34/42/50/58/66|
||Vega (vs light)||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 1|44|44/57/70/83/96/110|29/38/46/55/64/73|
||Vega (vs light)||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 2|48|48/62/76/91/105/120|32/41/51/60/70/80|
||Vega (vs light)||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 3|52|52/67/83/98/114/130|34/45/55/65/76/86|
||Vega (vs light)||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 4|56|56/72/89/106/123/140|37/48/59/70/82/93|
||Vega (vs light)||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 5|60|60/78/96/114/132/150|40/52/64/76/88/100|
Sources:
https://www.maguro.one/p/damage-breakpoints.html
https://starcraft2coop.com/commanders/tychus
https://starcraft2coop.com/tools/unitstats
https://starcraft.fandom.com/wiki/Tychus_Findlay_(Co-op_Missions)
Notes
+Max LW: max bonus damage received from Lone Wolf, +150% or 250% base damage
30x2: an attack with multiple hits, for example Sam uses two weapons at once, doubling the damage dealt but also the damage absorbed by armor
Burst Damage: the damage dealt by the weapon (armor can raise the breakpoint) or ability (ignore armor) per attack; Tychus has an ability that lower enemy armor by 5
Damage over time: some abilities deals damage over many seconds, so they cannot kill some enemies on the breakpoint if they can regenerate at least 1 health/shield
|Outlaw|Weapon|Damage dealing Abilities|h
|Tychus|Sweet Talker|Shredder Grenade, Vanadium Shell|
|Sam|The Negotiators|Demolition Charge, LarsCorp G7 Charges|
|Sirius|Big Tom|SA-55 Thunderbolt Missiles, D99 Detonator|
|Warhound Turret|Gauss Cannon|SA-55 Thunderbolt Missiles, D99 Detonator|
|Blaze|Brimstone|Oil Spill, Hades Oil|
|Rattlesnake|Rattler||
|Cannonball|Meteor Smasher|Heavy Impact, Redline Power Cells|
|Vega|Canister Rifle||
|Nux|Gauss Rifle|Ultrasonic Pulse, T4 Cloudburst Shells, Crystalline Amplifiers |
|>|>|Lone Wolf disables Ultimate Gear|
To keep things reasonably simple I skipped the intermediate weapon upgrades and Lone Wolf Stages, there are only "no upgrades" and "full upgrades with Max Lone Wolf Bonus" entries.
I also skipped Damage Per Second and only listed burst damage or full damage over time to keep the table readable.
Pure DPS is deceiving without considering enemy armor, targets and area of effect. Many units have 1 base armor and quickly gain the +3 from upgrades, biological units regenerate over time, and there are "medic" units that restore life like Medics, Sentries, Science Vessels and repair from workers.
|LIFE|DAMAGE BREAKPOINTS|Burst Damage|Outlaw|Weapon/Ability (Upgrades)|h
|||18|Tychus|Sweet Talker|
|~|~|18|Warhound Turret|Gauss Cannon|
|~|~|20|Cannonball|Heavy Impact|
|~|~|20|Vega|Canister Rifle|
|~|~|23|Sirius|Big Tom|
|25|Spider Mine, Scourge|30|Nux|Gauss Rifle|
|30|Baneling, Broodling||||
|35|Zergling, Infested Terran|36|Blaze|Brimstone|
|~|~|40|Rattlesnake|Rattler|
|~|~|40|Vega|Canister Rifle vs Light|
|40|Probe, Drone|45|Nux|Gauss Rifle (5)|
|45|Marine, SCV|48|Sirius|Big Tom(5) +Max LW|
|~|~|50|Cannonball|Meteor Smasher|
|~|~|50|Blaze|Oils Spill (10s)|
|~|~|50|Vega|Canister Rifle +Max LW|
|50|Infested Marine|50|Cannonball|Heavy Impact +Max LW|
|~|~|53|Blaze|Brimstone vs light|
|55|Marine (with Combat Shield)|30x2|Sam|The Negotiators|
|60|Medic, Observer, Volatile Infested||||
|65|Reaper, Locust|70|Warhound Turret|Gauss Cannon +Max LW|
|70|Infested Terran (Infested maps)|70|Tychus|Sweet Talker(5) +Max LW|
|75|Vulture, War Pig|75|Tychus|Shredder Grenade|
|~|~|75|Blaze|Oils Spill (10s) +Max LW|
|~|~|75|Nux|Gauss Rifle +Max LW|
|~|~|75|Vega|Canister Rifle (5) +Max LW|
|~|~|80|Rattlesnake|Rattler vs Armored|
|80|Hydralisk, Sentry, High Templar||||
|90|Hellion, Widow Mine, Infestor||||
|100|Firebat, Infested Marine (Infested Maps)|110|Cannonball|Metero Smasher + max Power Cells|
|~|~|112|Nux|Gauss Rifle (5) +Max LW|
|~|~|120|Nux|Ultrasonic Pulse (6s)|
|120|Dark Templar, Mutalisk, Ravager, Brood Queen, Volatile Infested (Infested Maps)||||
|125|Marauder, Viking, HERC|125|Tychus|Vanadium Shells|
|~|~|132|Blaze|Brimstone (5) vs light +Max LW|
|135|Hellbat||||
|140|Raven, (Infested) Banshee, Wraith|75x2|Sam|The Negotiators(5) +Max LW|
|145|Roach|150|Rattlesnake|Rattler (5) +Max LW|
|~|~|150|Vega|Canister Rifle (5) vs Light +Max LW|
|150|Medivac, Auto-Turret, Goliath, Zealot, Viper, Swarm Queen, Guardian||||
|160|(Infested) Siege Tank, Stalker, Oracle, Swarm Host|180|Nux|T4 Cloudburst Shells (6s)|
|180|Liberator, Adept, Dragoon, Phoenix, Corsair|187|Tychus|Shredder Grenade +Max LW|
|200|Science Vessel, Cyclone, Disruptor, Warp Prism, Overlord, Overseer, Lurker, Corruptor|100x2|Warhound Turret|SA-55 Thunderbolt Missiles vs Air +Max LW|
|220|Warhound||||
|225|Brood Lord|240|Nux|Ultrasonic Pulse+Crystalline Amplifiers (12s)|
|250|(Infested) Missile Turret, Voidray, Scout, Hunterling, Devourer|275|Cannonball|Metero Smasher +Max LW|
|275|Aberration|300|Rattlesnake|Rattler (5) vs Armored +Max LW|
|~|~|300|Nux|Ultrasonic Pulse (6s) +Max LW|
|~|~|300|Blaze|Hades Oil (10s) vs light|
|300|Immortal, Photon Cannon, Spine Crawler|300|Sirius|D99 Detonator|
|~|~|312|Tychus|Vanadium Shells +Max LW|
|~|~|337|Cannonball|Metero Smasher + max Power Cells +Max LW|
|350|Colossus, Reaver|360|Nux|T4 Cloudburst Shells+Crystalline Amplifiers (12s)|
|360|Archon||||
|400|(Infested) Bunker, Thor, Spore Colony, Sunken Colony, Arbiter|450|Nux|T4 Cloudburst Shells (6s) +Max Lw|
|450|Tempest, Carrier||||
|500|Ultralisk, Spotter|500|Sam|Demolition Charge|
|550|Battlecruiser|600|Nux|Ultrasonic Pulse+Crystalline Amplifiers (12s) + Max LW|
|600|Hybrid Destroyer, Choker||||
|700|Mothership|750|Blaze|Hades Oil (10s) vs light +Max LW|
|~|~|750|Sirius|D99 Detonator +Max LW|
|~|~|100x8|Sirius|SA-55 Thunderbolt Missiles vs Air|
|~|~|900|Nux|T4 Cloudburst Shells+Crystalline Amplifiers (12s)+Max LW|
|900|Hybrid Nemesis||||
|1000|Hybrid Reaver, Kaboomer|1000|Sam|LarsCorp G7 Charges|
|~|~|1250|Sam|Demolition Charge +Max LW|
|1500|Loki, Planetary Fortress||||
|2000|Leviathan, Hybrid Dominator, Hybrid Behemoth|250x8|Sirius|SA-55 Thunderbolt Missiles vs Air +Max LW|
|~|~|2500|Sam|LarsCorp G7 Charges +Max LW|
|6000|Stank||||
Details Table (open at your own risk)
+++
|Guns|Unit|Equipment|Upgrade|Mastery|Cooldown|Hits|Area of Effect|Upgrade|Hit Damage|Burst Damage (0/1/2/3/5/5 Lone Wolf Stacks)|DPS (0/1/2/3/5/5 Lone Wolf Stacks)|
||Tychus|Shredder Grenade|||20|1|4||75|75/97/120/142/165/187|3/4/6/7/8/9|
||Tychus|Shredder Grenade||Shredder Grenade Cooldown|14|1|4||75|75/97/120/142/165/187|5/6/8/10/11/13|
||Tychus|Vanadium Shell|||20|1|4||125|125/162/200/237/275/312|6/8/10/11/13/15|
||Tychus|Vanadium Shell||Shredder Grenade Cooldown|14|1|4||125|125/162/200/237/275/312|8/11/14/16/19/22|
||Tychus|Sweet Talker|||0,3|1||<<tiddler [[IMG##OutlawWeapons]]>> 0|18|18/23/28/34/39/45|60/78/96/114/132/150|
||Tychus||||0,3|1||<<tiddler [[IMG##OutlawWeapons]]>> 1|20|20/26/32/38/44/50|66/86/106/126/146/166|
||Tychus||||0,3|1||<<tiddler [[IMG##OutlawWeapons]]>> 2|22|22/28/35/41/48/55|73/95/117/139/161/183|
||Tychus||||0,3|1||<<tiddler [[IMG##OutlawWeapons]]>> 3|24|24/31/38/45/52/60|80/104/128/152/176/200|
||Tychus||||0,3|1||<<tiddler [[IMG##OutlawWeapons]]>> 4|26|26/33/41/49/57/65|86/112/138/164/190/216|
||Tychus||||0,3|1||<<tiddler [[IMG##OutlawWeapons]]>> 5|28|28/36/44/53/61/70|93/121/149/177/205/233|
||Tychus||ITCE Triggers||0,24|1||<<tiddler [[IMG##OutlawWeapons]]>> 0|18|18/23/28/34/39/45|75/97/120/142/165/187|
||Tychus||ITCE Triggers||0,24|1||<<tiddler [[IMG##OutlawWeapons]]>> 1|20|20/26/32/38/44/50|83/108/133/158/183/208|
||Tychus||ITCE Triggers||0,24|1||<<tiddler [[IMG##OutlawWeapons]]>> 2|22|22/28/35/41/48/55|91/119/146/174/201/229|
||Tychus||ITCE Triggers||0,24|1||<<tiddler [[IMG##OutlawWeapons]]>> 3|24|24/31/38/45/52/60|100/130/160/190/220/250|
||Tychus||ITCE Triggers||0,24|1||<<tiddler [[IMG##OutlawWeapons]]>> 4|26|26/33/41/49/57/65|108/140/173/205/238/270|
||Tychus||ITCE Triggers||0,24|1||<<tiddler [[IMG##OutlawWeapons]]>> 5|28|28/36/44/53/61/70|116/151/186/221/256/291|
||Tychus||ITCE Triggers|Tri Outlaw Improvement|0,21|1||<<tiddler [[IMG##OutlawWeapons]]>> 0|18|18/23/28/34/39/45|85/111/137/162/188/214|
||Tychus||ITCE Triggers|Tri Outlaw Improvement|0,21|1||<<tiddler [[IMG##OutlawWeapons]]>> 1|20|20/26/32/38/44/50|95/123/152/180/209/238|
||Tychus||ITCE Triggers|Tri Outlaw Improvement|0,21|1||<<tiddler [[IMG##OutlawWeapons]]>> 2|22|22/28/35/41/48/55|104/136/167/199/230/261|
||Tychus||ITCE Triggers|Tri Outlaw Improvement|0,21|1||<<tiddler [[IMG##OutlawWeapons]]>> 3|24|24/31/38/45/52/60|114/148/182/217/251/285|
||Tychus||ITCE Triggers|Tri Outlaw Improvement|0,21|1||<<tiddler [[IMG##OutlawWeapons]]>> 4|26|26/33/41/49/57/65|123/160/198/235/272/309|
||Tychus||ITCE Triggers|Tri Outlaw Improvement|0,21|1||<<tiddler [[IMG##OutlawWeapons]]>> 5|28|28/36/44/53/61/70|133/173/213/253/293/333|
||Tychus||ITCE Triggers|Tri Outlaw Improvement+Tychus Attack Speed|0,16|1||<<tiddler [[IMG##OutlawWeapons]]>> 0|18|18/23/28/34/39/45|112/146/180/213/247/281|
||Tychus||ITCE Triggers|Tri Outlaw Improvement+Tychus Attack Speed|0,16|1||<<tiddler [[IMG##OutlawWeapons]]>> 1|20|20/26/32/38/44/50|125/162/200/237/275/312|
||Tychus||ITCE Triggers|Tri Outlaw Improvement+Tychus Attack Speed|0,16|1||<<tiddler [[IMG##OutlawWeapons]]>> 2|22|22/28/35/41/48/55|137/178/220/261/302/343|
||Tychus||ITCE Triggers|Tri Outlaw Improvement+Tychus Attack Speed|0,16|1||<<tiddler [[IMG##OutlawWeapons]]>> 3|24|24/31/38/45/52/60|150/195/240/285/330/375|
||Tychus||ITCE Triggers|Tri Outlaw Improvement+Tychus Attack Speed|0,16|1||<<tiddler [[IMG##OutlawWeapons]]>> 4|26|26/33/41/49/57/65|162/211/260/308/357/406|
||Tychus||ITCE Triggers|Tri Outlaw Improvement+Tychus Attack Speed|0,16|1||<<tiddler [[IMG##OutlawWeapons]]>> 5|28|28/36/44/53/61/70|175/227/280/332/385/437|
|Guns|Unit|Equipment|Upgrade|Mastery|Cooldown|Hits|Area of Effect|Upgrade|Hit Damage|Burst Damage (0/1/2/3/5/5 Lone Wolf Stacks)|DPS (0/1/2/3/5/5 Lone Wolf Stacks)|
||Sam|Demolition Charge|||30|1|||500|500/650/800/950/1100/1250|16/21/26/31/36/41|
||Sam|LarsCorp G7 Charges|||30|1|||1000|1000/1300/1600/1900/2200/2500|33/43/53/63/73/83|
||Sam||||1,1|2||<<tiddler [[IMG##OutlawWeapons]]>> 0|30|60/78/96/114/132/150|54/70/87/103/120/136|
||Sam||||1,1|2||<<tiddler [[IMG##OutlawWeapons]]>> 1|33|66/85/105/125/145/165|60/78/96/114/132/150|
||Sam||||1,1|2||<<tiddler [[IMG##OutlawWeapons]]>> 2|36|72/93/115/136/158/180|65/85/104/124/144/163|
||Sam||||1,1|2||<<tiddler [[IMG##OutlawWeapons]]>> 3|39|78/101/124/148/171/195|70/92/113/134/156/177|
||Sam||||1,1|2||<<tiddler [[IMG##OutlawWeapons]]>> 4|42|84/109/134/159/184/210|76/99/122/145/168/190|
||Sam||||1,1|2||<<tiddler [[IMG##OutlawWeapons]]>> 5|45|90/117/144/171/198/225|81/106/130/155/180/204|
||Sam||ITCE Triggers||0,88|2||<<tiddler [[IMG##OutlawWeapons]]>> 0|30|60/78/96/114/132/150|68/88/109/129/150/170|
||Sam||ITCE Triggers||0,88|2||<<tiddler [[IMG##OutlawWeapons]]>> 1|33|66/85/105/125/145/165|75/97/120/142/165/187|
||Sam||ITCE Triggers||0,88|2||<<tiddler [[IMG##OutlawWeapons]]>> 2|36|72/93/115/136/158/180|81/106/130/155/180/204|
||Sam||ITCE Triggers||0,88|2||<<tiddler [[IMG##OutlawWeapons]]>> 3|39|78/101/124/148/171/195|88/115/141/168/195/221|
||Sam||ITCE Triggers||0,88|2||<<tiddler [[IMG##OutlawWeapons]]>> 4|42|84/109/134/159/184/210|95/124/152/181/210/238|
||Sam||ITCE Triggers||0,77|2||<<tiddler [[IMG##OutlawWeapons]]>> 5|45|90/117/144/171/198/225|116/151/187/222/257/292|
||Sam||ITCE Triggers|Tri Outlaw Improvement|0,77|2||<<tiddler [[IMG##OutlawWeapons]]>> 0|30|60/78/96/114/132/150|77/101/124/148/171/194|
||Sam||ITCE Triggers|Tri Outlaw Improvement|0,77|2||<<tiddler [[IMG##OutlawWeapons]]>> 1|33|66/85/105/125/145/165|85/111/137/162/188/214|
||Sam||ITCE Triggers|Tri Outlaw Improvement|0,77|2||<<tiddler [[IMG##OutlawWeapons]]>> 2|36|72/93/115/136/158/180|93/121/149/177/205/233|
||Sam||ITCE Triggers|Tri Outlaw Improvement|0,77|2||<<tiddler [[IMG##OutlawWeapons]]>> 3|39|78/101/124/148/171/195|101/131/162/192/222/253|
||Sam||ITCE Triggers|Tri Outlaw Improvement|0,77|2||<<tiddler [[IMG##OutlawWeapons]]>> 4|42|84/109/134/159/184/210|109/141/174/207/240/272|
||Sam||ITCE Triggers|Tri Outlaw Improvement|0,77|2||<<tiddler [[IMG##OutlawWeapons]]>> 5|45|90/117/144/171/198/225|116/151/187/222/257/292|
|Guns|Unit|Equipment|Upgrade|Mastery|Cooldown|Hits|Area of Effect|Upgrade|Hit Damage|Burst Damage (0/1/2/3/5/5 Lone Wolf Stacks)|DPS (0/1/2/3/5/5 Lone Wolf Stacks)|
||Sirius||||1,7|1||<<tiddler [[IMG##OutlawWeapons]]>> 0|23|23/29/36/43/50/57|13/17/21/25/29/33|
||Sirius||||1,7|1||<<tiddler [[IMG##OutlawWeapons]]>> 1|25|25/32/40/47/55/62|14/19/23/27/32/36|
||Sirius||||1,7|1||<<tiddler [[IMG##OutlawWeapons]]>> 2|27|27/35/43/51/59/67|15/20/25/30/34/39|
||Sirius||||1,7|1||<<tiddler [[IMG##OutlawWeapons]]>> 3|29|29/37/46/55/63/72|17/22/27/32/37/42|
||Sirius||||1,7|1||<<tiddler [[IMG##OutlawWeapons]]>> 4|31|31/40/49/58/68/77|18/23/29/34/40/45|
||Sirius||||1,7|1||<<tiddler [[IMG##OutlawWeapons]]>> 5|33|33/42/52/62/72/82|19/25/31/36/42/48|
||Sirius||ITCE Triggers||1,36|1||<<tiddler [[IMG##OutlawWeapons]]>> 0|23|23/29/36/43/50/57|16/21/27/32/37/42|
||Sirius||ITCE Triggers||1,36|1||<<tiddler [[IMG##OutlawWeapons]]>> 1|25|25/32/40/47/55/62|18/23/29/34/40/45|
||Sirius||ITCE Triggers||1,36|1||<<tiddler [[IMG##OutlawWeapons]]>> 2|27|27/35/43/51/59/67|19/25/31/37/43/49|
||Sirius||ITCE Triggers||1,36|1||<<tiddler [[IMG##OutlawWeapons]]>> 3|29|29/37/46/55/63/72|21/27/34/40/46/53|
||Sirius||ITCE Triggers||1,36|1||<<tiddler [[IMG##OutlawWeapons]]>> 4|31|31/40/49/58/68/77|22/29/36/43/50/56|
||Sirius||ITCE Triggers||1,36|1||<<tiddler [[IMG##OutlawWeapons]]>> 5|33|33/42/52/62/72/82|24/31/38/46/53/60|
||Sirius||ITCE Triggers|Tri Outlaw Improvement|1,18|1||<<tiddler [[IMG##OutlawWeapons]]>> 0|23|23/29/36/43/50/57|19/25/31/37/42/48|
||Sirius||ITCE Triggers|Tri Outlaw Improvement|1,18|1||<<tiddler [[IMG##OutlawWeapons]]>> 1|25|25/32/40/47/55/62|21/27/33/40/46/52|
||Sirius||ITCE Triggers|Tri Outlaw Improvement|1,18|1||<<tiddler [[IMG##OutlawWeapons]]>> 2|27|27/35/43/51/59/67|22/29/36/43/50/57|
||Sirius||ITCE Triggers|Tri Outlaw Improvement|1,18|1||<<tiddler [[IMG##OutlawWeapons]]>> 3|29|29/37/46/55/63/72|24/31/39/46/54/61|
||Sirius||ITCE Triggers|Tri Outlaw Improvement|1,18|1||<<tiddler [[IMG##OutlawWeapons]]>> 4|31|31/40/49/58/68/77|26/34/42/49/57/65|
||Sirius||ITCE Triggers|Tri Outlaw Improvement|1,18|1||<<tiddler [[IMG##OutlawWeapons]]>> 5|33|33/42/52/62/72/82|27/36/44/53/61/69|
||Sirius|SA-55 Thunderbolt Missiles x1|||15|8|||100|800/1040/1280/1520/1760/2000|53/69/85/101/117/133|
||Sirius|D99 Detonator|||1|1|||300|300/390/480/570/660/750|300/390/480/570/660/750|
||Warhound Turret||||0,77|1||<<tiddler [[IMG##OutlawWeapons]]>> 0|18|18/23/28/34/39/45|23/30/37/44/51/58|
||Warhound Turret||||0,77|1||<<tiddler [[IMG##OutlawWeapons]]>> 1|20|20/26/32/38/44/50|25/33/41/49/57/64|
||Warhound Turret||||0,77|1||<<tiddler [[IMG##OutlawWeapons]]>> 2|22|22/28/35/41/48/55|28/37/45/54/62/71|
||Warhound Turret||||0,77|1||<<tiddler [[IMG##OutlawWeapons]]>> 3|24|24/31/38/45/52/60|31/40/49/59/68/77|
||Warhound Turret||||0,77|1||<<tiddler [[IMG##OutlawWeapons]]>> 4|26|26/33/41/49/57/65|33/43/54/64/74/84|
||Warhound Turret||||0,77|1||<<tiddler [[IMG##OutlawWeapons]]>> 5|28|28/36/44/53/61/70|36/47/58/69/80/90|
||Warhound Turret|SA-55 Thunderbolt Missiles x1|||30|2|||100|200/260/320/380/440/500|6/8/10/12/14/16|
||Warhound Turret|D99 Detonator|||1|1|||50|50/65/80/95/110/125|50/65/80/95/110/125|
|Muscles|Unit|Equipment|Upgrade|Mastery|Cooldown|Hits|Area of Effect|Upgrade|Hit Damage|Burst Damage|DPS|
||Blaze|Oil Spill 1s|||15|1|||5|5/6/8/9/11/12|0/0/0/0/0/0|
||Blaze|Oil Spill 10s|||15|1|||50|50/65/80/95/110/125|3/4/5/6/7/8|
||Blaze|Hades Oil (vs light) 1s|||15|1|||30|30/39/48/57/66/75|2/2/3/3/4/5|
||Blaze|Hades Oil (vs light) 10s|||15|1|||300|300/390/480/570/660/750|20/26/32/38/44/50|
||Blaze|Brimstone MK1|||1,4|1|2x3|<<tiddler [[IMG##OutlawWeapons]]>> 0|36|36/46/57/68/79/90|25/33/41/48/56/64|
||Blaze||||1,4|1|2x3|<<tiddler [[IMG##OutlawWeapons]]>> 1|40|40/52/64/76/88/100|28/37/45/54/62/71|
||Blaze||||1,4|1|2x3|<<tiddler [[IMG##OutlawWeapons]]>> 2|44|44/57/70/83/96/110|31/40/50/59/69/78|
||Blaze||||1,4|1|2x3|<<tiddler [[IMG##OutlawWeapons]]>> 3|48|48/62/76/91/105/120|34/44/54/65/75/85|
||Blaze||||1,4|1|2x3|<<tiddler [[IMG##OutlawWeapons]]>> 4|52|52/67/83/98/114/130|37/48/59/70/81/92|
||Blaze||||1,4|1|2x3|<<tiddler [[IMG##OutlawWeapons]]>> 5|56|56/72/89/106/123/140|40/52/64/76/88/100|
||Blaze (vsLight)||||1,4|1|2x3|<<tiddler [[IMG##OutlawWeapons]]>> 0|53|53/68/84/100/116/132|37/49/60/71/83/94|
||Blaze (vsLight)||||1,4|1|2x3|<<tiddler [[IMG##OutlawWeapons]]>> 1|56|56/72/89/106/123/140|40/52/64/76/88/100|
||Blaze (vsLight)||||1,4|1|2x3|<<tiddler [[IMG##OutlawWeapons]]>> 2|63|63/81/100/119/138/157|45/58/72/85/99/112|
||Blaze (vsLight)||||1,4|1|2x3|<<tiddler [[IMG##OutlawWeapons]]>> 3|68|68/88/108/129/149/170|48/63/77/92/106/121|
||Blaze (vsLight)||||1,4|1|2x3|<<tiddler [[IMG##OutlawWeapons]]>> 4|73|73/94/116/138/160/182|52/67/83/99/114/130|
||Blaze (vsLight)||||1,4|1|2x3|<<tiddler [[IMG##OutlawWeapons]]>> 5|78|78/101/124/148/171/195|55/72/89/105/122/139|
||Unit|Equipment|Upgrade|Mastery|Cooldown|Hits|Area of Effect|Upgrade|Hit Damage|Burst Damage|DPS|
||Rattlesnake|Rattler|||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 0|40|40/52/64/76/88/100|26/34/42/50/58/66|
||Rattlesnake||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 1|44|44/57/70/83/96/110|29/38/46/55/64/73|
||Rattlesnake||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 2|48|48/62/76/91/105/120|32/41/51/60/70/80|
||Rattlesnake||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 3|52|52/67/83/98/114/130|34/45/55/65/76/86|
||Rattlesnake||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 4|56|56/72/89/106/123/140|37/48/59/70/82/93|
||Rattlesnake||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 5|60|60/78/96/114/132/150|40/52/64/76/88/100|
||Rattlesnake (vs Armored)||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 0|80|80/104/128/152/176/200|53/69/85/101/117/133|
||Rattlesnake (vs Armored)||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 1|88|88/114/140/167/193/220|58/76/93/111/129/146|
||Rattlesnake (vs Armored)||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 2|96|96/124/153/182/211/240|64/83/102/121/140/160|
||Rattlesnake (vs Armored)||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 3|104|104/135/166/197/228/260|69/90/110/131/152/173|
||Rattlesnake (vs Armored)||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 4|112|112/145/179/212/246/280|74/97/119/141/164/186|
||Rattlesnake (vs Armored)||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 5|120|120/156/192/228/264/300|80/104/128/152/176/200|
||Rattlesnake|Stimpack|||1|1||<<tiddler [[IMG##OutlawWeapons]]>> 0|40|40/52/64/76/88/100|40/52/64/76/88/100|
||Rattlesnake|Stimpack|||1|1||<<tiddler [[IMG##OutlawWeapons]]>> 1|44|44/57/70/83/96/110|44/57/70/83/96/110|
||Rattlesnake|Stimpack|||1|1||<<tiddler [[IMG##OutlawWeapons]]>> 2|48|48/62/76/91/105/120|48/62/76/91/105/120|
||Rattlesnake|Stimpack|||1|1||<<tiddler [[IMG##OutlawWeapons]]>> 3|52|52/67/83/98/114/130|52/67/83/98/114/130|
||Rattlesnake|Stimpack|||1|1||<<tiddler [[IMG##OutlawWeapons]]>> 4|56|56/72/89/106/123/140|56/72/89/106/123/140|
||Rattlesnake|Stimpack|||1|1||<<tiddler [[IMG##OutlawWeapons]]>> 5|60|60/78/96/114/132/150|60/78/96/114/132/150|
||Rattlesnake (vs Armored)|Stimpack|||1|1||<<tiddler [[IMG##OutlawWeapons]]>> 0|80|80/104/128/152/176/200|80/104/128/152/176/200|
||Rattlesnake (vs Armored)|Stimpack|||1|1||<<tiddler [[IMG##OutlawWeapons]]>> 1|88|88/114/140/167/193/220|88/114/140/167/193/220|
||Rattlesnake (vs Armored)|Stimpack|||1|1||<<tiddler [[IMG##OutlawWeapons]]>> 2|96|96/124/153/182/211/240|96/124/153/182/211/240|
||Rattlesnake (vs Armored)|Stimpack|||1|1||<<tiddler [[IMG##OutlawWeapons]]>> 3|104|104/135/166/197/228/260|104/135/166/197/228/260|
||Rattlesnake (vs Armored)|Stimpack|||1|1||<<tiddler [[IMG##OutlawWeapons]]>> 4|112|112/145/179/212/246/280|112/145/179/212/246/280|
||Rattlesnake (vs Armored)|Stimpack|||1|1||<<tiddler [[IMG##OutlawWeapons]]>> 5|120|120/156/192/228/264/300|120/156/192/228/264/300|
||Unit|Equipment|Upgrade|Mastery|Cooldown|Hits|Area of Effect|Upgrade|Hit Damage|Burst Damage|DPS|
||Cannonball|Heavy Impact|||15|1|||20|20/26/32/38/44/50|1/1/2/2/2/3|
||Cannonball|Meteor Smasher|||1,8|1||<<tiddler [[IMG##OutlawWeapons]]>> 0|50|50/65/80/95/110/125|27/36/44/52/61/69|
||Cannonball||||1,8|1||<<tiddler [[IMG##OutlawWeapons]]>> 1|55|55/71/88/104/121/137|30/39/48/58/67/76|
||Cannonball||||1,8|1||<<tiddler [[IMG##OutlawWeapons]]>> 2|60|60/78/96/114/132/150|33/43/53/63/73/83|
||Cannonball||||1,8|1||<<tiddler [[IMG##OutlawWeapons]]>> 3|65|65/84/104/123/143/162|36/46/57/68/79/90|
||Cannonball||||1,8|1||<<tiddler [[IMG##OutlawWeapons]]>> 4|70|70/91/112/133/154/175|38/50/62/73/85/97|
||Cannonball||||1,8|1||<<tiddler [[IMG##OutlawWeapons]]>> 5|75|75/97/120/142/165/187|41/54/66/79/91/104|
||Cannonball|Redline Power Cells|||1,12|1||<<tiddler [[IMG##OutlawWeapons]]>> 0|110|110/143/176/209/242/275|98/127/157/186/216/245|
||Cannonball|Redline Power Cells|||1,12|1||<<tiddler [[IMG##OutlawWeapons]]>> 1|115|115/149/184/218/253/287|102/133/164/195/225/256|
||Cannonball|Redline Power Cells|||1,12|1||<<tiddler [[IMG##OutlawWeapons]]>> 2|120|120/156/192/228/264/300|107/139/171/203/235/267|
||Cannonball|Redline Power Cells|||1,12|1||<<tiddler [[IMG##OutlawWeapons]]>> 3|125|125/162/200/237/275/312|111/145/178/212/245/279|
||Cannonball|Redline Power Cells|||1,12|1||<<tiddler [[IMG##OutlawWeapons]]>> 4|130|130/169/208/247/286/325|116/150/185/220/255/290|
||Cannonball|Redline Power Cells|||1,12|1||<<tiddler [[IMG##OutlawWeapons]]>> 5|135|135/175/216/256/297/337|120/156/192/229/265/301|
|Fixers|Unit|Equipment|Upgrade|Mastery|Cooldown|Hits|Area of Effect|Upgrade|Hit Damage|Burst Damage|DPS|
||Nux|Ultrasonic Pulse 1s|||30|1|2/3||20|20/26/32/38/44/50|0/0/1/1/1/1|
||Nux|Ultrasonic Pulse 6s|||30|1|2/3||120|120/156/192/228/264/300|4/5/6/7/8/10|
||Nux|Ultrasonic Pulse+Crystalline Amplifiers 12s|||30|1|2/3||240|240/312/384/456/528/600|8/10/12/15/17/20|
||Nux|T4 Cloudburst Shells 1s|||30|1|2/3||30|30/39/48/57/66/75|1/1/1/1/2/2|
||Nux|T4 Cloudburst Shells 6s|||30|1|2/3||180|180/234/288/342/396/450|6/7/9/11/13/15|
||Nux|T4 Cloudburst Shells+Crystalline Amplifiers 12s|||30|1|2/3||360|360/468/576/684/792/900|12/15/19/22/26/30|
||Nux|Gauss Rifle|||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 0|30|30/39/48/57/66/75|20/26/32/38/44/50|
||Nux||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 1|33|33/42/52/62/72/82|22/28/35/41/48/55|
||Nux||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 2|36|36/46/57/68/79/90|24/31/38/45/52/60|
||Nux||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 3|39|39/50/62/74/85/97|26/33/41/49/57/65|
||Nux||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 4|42|42/54/67/79/92/105|28/36/44/53/61/70|
||Nux||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 5|45|45/58/72/85/99/112|30/39/48/57/66/75|
||Unit|Equipment|Upgrade|Mastery|Cooldown|Hits|Area of Effect|Upgrade|Hit Damage|Burst Damage|DPS|
||Vega|Canister Rifle|||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 0|20|20/26/32/38/44/50|13/17/21/25/29/33|
||Vega||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 1|22|22/28/35/41/48/55|14/19/23/27/32/36|
||Vega||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 2|24|24/31/38/45/52/60|16/20/25/30/35/40|
||Vega||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 3|26|26/33/41/49/57/65|17/22/27/32/38/43|
||Vega||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 4|28|28/36/44/53/61/70|18/24/29/35/41/46|
||Vega||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 5|30|30/39/48/57/66/75|20/26/32/38/44/50|
||Vega (vs light)||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 0|40|40/52/64/76/88/100|26/34/42/50/58/66|
||Vega (vs light)||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 1|44|44/57/70/83/96/110|29/38/46/55/64/73|
||Vega (vs light)||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 2|48|48/62/76/91/105/120|32/41/51/60/70/80|
||Vega (vs light)||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 3|52|52/67/83/98/114/130|34/45/55/65/76/86|
||Vega (vs light)||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 4|56|56/72/89/106/123/140|37/48/59/70/82/93|
||Vega (vs light)||||1,5|1||<<tiddler [[IMG##OutlawWeapons]]>> 5|60|60/78/96/114/132/150|40/52/64/76/88/100|
===
<<search>><<closeAll>><<newTiddler>><<tiddler TspotSidebar>> MainMenu [[GettingStarted]] [[DefaultTiddlers]] [[Mengsk]] <<tiddler ToggleRightSidebar>> PrestData CommanderPrestige NestedSlidersPluginInfo UploadLog
!Raynor
|Commander|Power Set|Effect|One Point|Max Points (30)|Notes|
|Raynor|1|Research Resource Cost|-2%|-60%||
|~|~|Speed Increases for Drop-Pod units|+2%|+60%||
|~|2|Hyperion Cooldown (down to a minimum of 240 sec)|-4 sec|-120 sec|(down to a minimum of 240 sec; does not affect the initial cooldown at the start of the mission)|
|~|~|Banshee Airstrike Cooldown: -4 sec – -120 sec (down to a minimum of 120 sec; neither of thoses affect the initial cooldown at the start of the mission.)|-4 sec|-120 sec|(down to a minimum of 120 sec; does not affect the initial cooldown at the start of the mission)|
|~|3|Medics Heal Additional Target: +3% – +90%|+3%|+90%||
|~|~|Mech Attack Speed: +1% – +30%|+1%|+30%||
[img[https://bnetcmsus-a.akamaihd.net/cms/blog_header/yt/YTKTEH22QUYN1572478663713.jpg][https://news.blizzard.com/en-gb/starcraft2/23185584/new-co-op-commander-arcturus-mengsk]]
![[Sources|MengskSources]]
+++<<tiddler MengskSources>>===
!YOUR EMPEROR CALLS ON YOU TO SERVE
Arcturus Mengsk is asking every able-bodied citizen to commit themselves completely to the defense of all we hold dear. For some time, our beautiful worlds have been under attack from enemies at all sides: the zerg vermin that want to consume us; the invading protoss who serve their own sinister, alien agenda; and worst of all, the human traitors who have cast their lot with anti-Dominion terrorists. While those threats will be dealt with in time, for now we must focus our efforts on rooting out the true enemy that lurks in the shadows.
Your time to show your complete and total dedication to the Dominion and your Emperor is at hand! Glory awaits!
!ARCTURUS MENGSK IS TAKING CONTROL
Control the battle with an iron fist as Arcturus Mengsk, the newest Co-Op Commander for StarCraft II. Using conscripted laborers and troopers, Mengsk can put immediate pressure on his enemies and cement his power in the early game. Long-range artillery and “inspirational” broadcasts help Mengsk project his force across the battlefield, and his elite Royal Guard units grow in strength as they gain experience from battle, enhancing their ability to serve their emperor.
Feed an endless stream of cheap troopers into the meat grinder, softening your enemies for your Royal Guard to go in for the kill. When a fallen trooper drops their weapon upon their death, another will pick it up and resume the inexorable march toward victory.
Instead of energy, Mengsk uses a resource called Imperial Mandate, which you generate by training and ranking up the Royal Guard. Alternatively, Mengsk’s Imperial Witness can broadcast a message of indoctrination, which instills loyalty to Mengsk in your Troopers, in turn generating even more Imperial Mandate. And as his Imperial Mandate grows, Mengsk gets access to even more powerful and controversial abilities.
Should the need arise, Mengsk can unleash Nuclear Annihilation on his foes, raining atomic bombs on the battlefield, leaving nothing but ashes.
![[Info|MengskInfo]]
+++<<tiddler [[MengskInfo]]>>===
![[Calldowns|MengskCalldowns]]
+++<<tiddler MengskCalldowns>>===
![[Units|MengskUnitsTab]]
+++<<tiddler MengskUnitsTab>>===
![[DPS Chart|MengskDPS]]
+++<<tiddler MengskDPS>>===
![[Units Command Cards|MengskCommandCards]]
+++<<tiddler MengskCommandCards>>===
![[Tech Tree|MengskTechTree]]
+++<<tiddler MengskTechTree>>===
![[Talents|MengskTalents]]
+++<<tiddler MengskTalents>>===
!DESIGN PHILOSOPHY
+++
As one of the most iconic characters in StarCraft lore, our goal with Mengsk was to capture the duplicity and ruthlessness he’s displayed throughout his lifetime in the franchise.
Though Mengsk talks a big game about unity and “the common good,” it is merely a ruse meant to get the common people to do his bidding. We believe this is best captured by the cost of Trooper weapons, which are significantly more expensive than the Troopers themselves. This, combined with the mechanic of Troopers being able to pick up dropped weapons, helps to demonstrate that Mengsk doesn’t really care about his people—it’s their expensive weaponry is that he values.
Meanwhile, Mengsk also has an upper echelon of elite soldiers he keeps close to his chest: his Royal Guard, who rank up and grow more powerful with experience. Because Troopers have high mineral costs and Royal Guards have high gas costs, these two unit classes are designed to be used together, and are most effectively utilized by players who can control them in tandem.
As the head of the most prominent bastion of Terran military power in the Koprulu Sector, we felt Mengsk was best suited to embody the iconic real-time strategy concept of an entrenched commander who plays to win at all costs, with mechanics like picking up weapons, fighting within bunkers, ranking up, and artillery.
Co-op Commanders in the past have traditionally relied on either powerful heroic units or impactful calldowns to defend early waves. To change up the formula with Mengsk, we borrowed two ideas from Warcraft III: the Human Peasant’s Call to Arms ability, which inspired the Dominion Laborer’s Call to Arms, and the Orc Burrow’s Battle Stations ability, which translated into Mengsk’s Supply Bunkers. With these two abilities combined, we feel we’ve provided players with powerful tools to defend initial waves with workers alone, while at the same time reinforcing the gameplay fantasy we’re going for.
!TO VICTORY
Look for Arcturus Mengsk in-game and in the Blizzard shop starting late November!
===
https://www.reddit.com/r/starcraft2coop/comments/e9ex63/mengsk_mandate_generation_caps_and_effective/
<html>
<iframe id="inlineFrameExample"
title="Inline Frame Example"
width="1280"
height="720"
src="https://web.archive.org/web/20191214115416/https://www.reddit.com/r/starcraft2coop/comments/e9ex63/mengsk_mandate_generation_caps_and_effective/">
</iframe>
</html>
!Sources
[[Announcement|https://news.blizzard.com/en-gb/starcraft2/23185584/new-co-op-commander-arcturus-mengsk]]
[[Fandom Wiki|https://starcraft.fandom.com/wiki/Arcturus_Mengsk_(Co-op_Missions)]]
[img[https://bnetcmsus-a.akamaihd.net/cms/blog_header/yt/YTKTEH22QUYN1572478663713.jpg][https://news.blizzard.com/en-gb/starcraft2/23185584/new-co-op-commander-arcturus-mengsk]]
!YOUR EMPEROR CALLS ON YOU TO SERVE
Arcturus Mengsk is asking every able-bodied citizen to commit themselves completely to the defense of all we hold dear. For some time, our beautiful worlds have been under attack from enemies at all sides: the zerg vermin that want to consume us; the invading protoss who serve their own sinister, alien agenda; and worst of all, the human traitors who have cast their lot with anti-Dominion terrorists. While those threats will be dealt with in time, for now we must focus our efforts on rooting out the true enemy that lurks in the shadows.
Your time to show your complete and total dedication to the Dominion and your Emperor is at hand! Glory awaits!
!ARCTURUS MENGSK IS TAKING CONTROL
Control the battle with an iron fist as Arcturus Mengsk, the newest Co-Op Commander for StarCraft II. Using conscripted laborers and troopers, Mengsk can put immediate pressure on his enemies and cement his power in the early game. Long-range artillery and “inspirational” broadcasts help Mengsk project his force across the battlefield, and his elite Royal Guard units grow in strength as they gain experience from battle, enhancing their ability to serve their emperor.
Feed an endless stream of cheap troopers into the meat grinder, softening your enemies for your Royal Guard to go in for the kill. When a fallen trooper drops their weapon upon their death, another will pick it up and resume the inexorable march toward victory.
Instead of energy, Mengsk uses a resource called Imperial Mandate, which you generate by training and ranking up the Royal Guard. Alternatively, Mengsk’s Imperial Witness can broadcast a message of indoctrination, which instills loyalty to Mengsk in your Troopers, in turn generating even more Imperial Mandate. And as his Imperial Mandate grows, Mengsk gets access to even more powerful and controversial abilities.
Should the need arise, Mengsk can unleash Nuclear Annihilation on his foes, raining atomic bombs on the battlefield, leaving nothing but ashes.
!Info
+++<<tiddler [[MengskInfo]]>>===
!Calldowns
++++<<tiddler MengskCalldowns>>====
!Units
++++<<tiddler MengskUnitsTab>>===
!Units Command Cards
++++<<tiddler MengskCommandCards>>===
!Tech Tree
+++<<tiddler MengskTechTree>>===
!Talents
++++<<tiddler MengskUpgrades>>===
!DESIGN PHILOSOPHY
+++
As one of the most iconic characters in StarCraft lore, our goal with Mengsk was to capture the duplicity and ruthlessness he’s displayed throughout his lifetime in the franchise.
Though Mengsk talks a big game about unity and “the common good,” it is merely a ruse meant to get the common people to do his bidding. We believe this is best captured by the cost of Trooper weapons, which are significantly more expensive than the Troopers themselves. This, combined with the mechanic of Troopers being able to pick up dropped weapons, helps to demonstrate that Mengsk doesn’t really care about his people—it’s their expensive weaponry is that he values.
Meanwhile, Mengsk also has an upper echelon of elite soldiers he keeps close to his chest: his Royal Guard, who rank up and grow more powerful with experience. Because Troopers have high mineral costs and Royal Guards have high gas costs, these two unit classes are designed to be used together, and are most effectively utilized by players who can control them in tandem.
As the head of the most prominent bastion of Terran military power in the Koprulu Sector, we felt Mengsk was best suited to embody the iconic real-time strategy concept of an entrenched commander who plays to win at all costs, with mechanics like picking up weapons, fighting within bunkers, ranking up, and artillery.
Co-op Commanders in the past have traditionally relied on either powerful heroic units or impactful calldowns to defend early waves. To change up the formula with Mengsk, we borrowed two ideas from Warcraft III: the Human Peasant’s Call to Arms ability, which inspired the Dominion Laborer’s Call to Arms, and the Orc Burrow’s Battle Stations ability, which translated into Mengsk’s Supply Bunkers. With these two abilities combined, we feel we’ve provided players with powerful tools to defend initial waves with workers alone, while at the same time reinforcing the gameplay fantasy we’re going for.
!TO VICTORY
Look for Arcturus Mengsk in-game and in the Blizzard shop starting late November!
===
| !Level | !Talent |
|08 - Primary Royal Guard Upgrade Cache|Unlocks the following upgrades:<br>-Allows Shock Division in Siege Mode to fire at enemy air units while picked up by an Imperial Intercessor (Researched at the Armory).|
|14 - Advanced Royal Guard Upgrade Cache|Unlocks the following upgrades:<br>-Blackhammers grant 3 armor to units positioned beneath them (Researched at the Armory).|
!!Full Power of the Dominion
| <<tiddler [[Forced Conscription]]>> | <<tiddler [[Contaminated Strike]]>> | <<tiddler [[Imperial Mandate]]>> | <<tiddler [[Dogs of War]]>> | <<tiddler [[Nuclear Annihilation]]>> |
!Enlistment Center
| <<tiddler [[IMG##Conscript Dominion Laborer]]>> | <<tiddler [[IMG##Conscript Dominion Trooper]]>> ||||
| [[Call to Labor]] | [[Call to Arms]] || [[Set Laborer Rally Point]] | [[Set Trooper Rally Point]] |
||| [[Orbital Trooper Pods]]>> | [[Lift Off]] ||
!Refinery (Mengsk)
||||||
| [[Micro-Filtering]] |||||
||||||
!Dominion Laborer
| [[Move]] | [[Stop]] | [[Hold Position]] | [[Patrol]] | [[Attack]] |
| [[Gather]] | [[Return Cargo]] | [[Working Crew]] | [[Will of the People]] | [[Report for Combat]] |
| [[Dominion Laborer Build Structure]]+++<<tiddler [[MengskCommandCard##Dominion Laborer Build Structure]]>>===| [[Dominion Laborer Build Advanced Structure]]+++<<tiddler [[MengskCommandCard##Dominion Laborer Build Advanced Structure]]>>===| [[Repair]] | [[Spray]] | [[Halt Building]] |
!Dominion Laborer Build Structure
| [[Build Enlistment Center]] | [[Build Refinery]] | [[Build Supply Bunker]] |||
| [[Build Barracks]] | [[Build Engineering Bay]] ||||
| [[Build Earthsplitter Ordnance]] | [[Build Missile Turret]] ||| [[Cancel]] |
!Dominion Laborer Build Advanced Structure
| [[Build Royal Academy]] |||||
| [[Build Factory]] | [[Build Armory]] ||||
| [[Build Starport]] | [[Build Fusion Core]] ||| [[Cancel]] |
!Dominion Trooper
| [[Move]] | [[Stop]] | [[Hold Position]] | [[Patrol]] | [[Attack]] |
||| [[Working Crew]] | [[Will of the People]] | [[Report for Labor]] |
| [[Dominion Trooper Build Combat Structure]]+++<<tiddler [[MengskCommandCard##Dominion Trooper Build Combat Structure]]>>===| [[Equip B-2 High-Cal LMG]] | [[Equip CPO-7 Salamander Flamethrower]] | [[Equip Hailstorm Launcher]] ||
!Dominion Trooper Build Combat Structure
||| [[Build Supply Bunker]] |||
||||||
| [[Build Earthsplitter Ordnance]] | [[Build Missile Turret]] ||| [[Cancel]] |
!Supply Bunker
|| [[Stop]] ||| [[Attack]] |
| [[Call to Labor]] | [[Call to Arms]] | [[Neosteel Fortified Armor]] | [[Aim-assist Embrasures]] | [[Set Rally Point]] |
|| [[Load (Supply Bunker)]] | [[Unload All (Supply Bunker)]] | [[Salvage]] ||
!Barracks (Mengsk)
|| [[Train Aegis Guard]] | [[Train Emperor's Shadow]] |||
||||| [[Set Rally Point]] |
|||| [[Lift Off]] | [[Cancel]] |
!Aegis Guard
| [[Move]] | [[Stop]] | [[Hold Position]] | [[Patrol]] | [[Attack]] |
| [[Royal Guard of the Dominion (Marauder)]] | [[Might of the Empire (Marauder)]] |[[Aegis Barrier]]+++<<tiddler [[Aegis Barrier]]>>===| [[Incapacitator Shells]] ||
| <<tiddler [[IMG##High Grade Stimpacks]]>> |||||
!Emperor's Shadow
| [[Move]] | [[Stop]] | [[Hold Position]] | [[Patrol]] | [[Attack]] |
| [[Royal Guard of the Dominion (Ghost)]] | [[Might of the Empire (Ghost)]] | [[Hold Fire]] | [[Weapon Free]] | [[Sovereign Tactical Missiles]] |
| [[Pirokinetic Immolation (Small/Big Damage)]] | [[EMP Blast (Short/Long Stun)]] | [[Labyrinth Cloak]] | [[Tactical Missile Strilke]] | [[Cancel]] |
!Engineering Bay (Mengsk)
| [[Upgrade Dominion Weapons level 1/2/3]] | [[Upgrade Dominion Armor level 1/2/3]] ||||
| [[Research Orbital Trooper Pods]] | [[Research Neosteel Fortified Armor]] | [[Research Aim-assist Embrasures]] | [[Research Hemispheric Accelerants]] ||
| [[Earthsplitter Ordnance (Unlock)]] | [[Missile Turret (Unlock)]] ||| [[Cancel]] |
!Missile Turret
|| [[Stop]] ||| [[Attack]] |
| [[Neosteel Fortified Armor]] |||||
| [[Salvage]] |||||
!Earthsplitter Ordnance
|| [[Stop]] ||||
| [[Contaminated Strike]] | [[Neosteel Fortified Armor]] | [[Hemispheric Accelerants]] || [[Set Earthsplitter Ordnance Rally Point]] |
| [[Bombardment]] | [[Load (Artillery)]] | [[Unload All (Artillery)]] | [[Salvage]] ||
!Royal Academy (Mengsk)
| [[Research Incapacitator Shells]] | [[Research Sovereign Tactical Missiles]] ||||
||||||
| [[Arm Silo with Tactical Missile]] |||| [[Cancel]] |
!Factory (Mengsk)
||| [[Build Shock Division]] || [[Build Blackhammer]] |
|||| [[Research Hemispheric Accelerants]] | [[Set Rally Point]] |
|||| [[Lift Off]] | [[Cancel]] |
!Shock Division
| [[Move]] | [[Stop]] | [[Hold Position]] | [[Patrol]] | [[Attack]] |
| [[Royal Guard of the Dominion (Siege Tank)]] | [[Might of the Empire (Siege Tank)]] | [[Shock and Awe]] | [[Armament Stabilizers]] ||
| [[Siege Mode (Mengsk)]] | [[Tank Mode (Mengsk)]] ||||
!Blackhammer
| [[Move]] | [[Stop]] | [[Hold Position]] | [[Patrol]] | [[Attack]] |
| [[Royal Guard of the Dominion (Thor)]] | [[Might of the Empire (Thor)]] | [[Bulwark Field]] |||
| [[Overwatch Mode]] | [[Walker Mode]] ||||
!Armory (Mengsk)
| [[Research Armament Stabilizers]] | [[Research Bulwark Field]] | [[Research Smart Servos]] |||
||||||
||||| [[Cancel]] |
!Starport (Mengsk)
| [[Build Sky Fury (Fighter Mode)]] | [[Build Imperial Intercessor]] | [[Build Imperial Witness]] |||
| [[Build Pride of Augustgrad]] |||| [[Set Rally Point]] |
|||| [[Lift Off]] | [[Cancel]] |
!Sky Fury
| [[Move]] | [[Stop]] | [[Hold Position]] | [[Patrol]] | [[Attack]] |
| [[Royal Guard of the Dominion (Viking)]] | [[Might of the Empire (Viking)]] | [[Tactical Realignment]] | [[Evasive Maneuvers]] | [[Aesir Turbines]] |
|| [[Assault Mode (Mengsk)]] ||||
!Sky Fury Ground
| [[Move]] | [[Stop]] | [[Hold Position]] | [[Patrol]] | [[Attack]] |
| [[Royal Guard of the Dominion (Viking)]] | [[Might of the Empire (Viking)]] | [[Tactical Realignment]] | [[Phoenix Protocol]] ||
| [[Fighter Mode (Mengsk)]] |||||
!Imperial Intercessor
| [[Move]] | [[Stop]] | [[Hold Position]] | [[Patrol]] | [[Attack]] |
| [[Dual Resuscitators]] | [[Scatter Veil]] | [[Armament Stabilizers]] |||
| [[Heal (Mengsk)]] | [[Ignite Afterburners (Mengsk)]] | [[Load (Medivac)]] | [[Unload All (Medivacs)]] | [[Detector]] |
!Imperial Witness
| [[Move]] | [[Stop]] | [[Hold Position]] | [[Patrol]] | [[Attack]] |
| [[Detector]] |||||
||| [[Patriot Mode]] |||
!Imperial Witness Patriot Mode
| [[Move]] | [[Stop]] | [[Hold Position]] | [[Patrol]] | [[Attack]] |
| [[Detector]] | [[Indoctrinate]] | [[Amplified Airwaves]] |||
|||| [[Cancel Patriot Mode]] ||
!Pride of Augustgrad
| [[Move]] | [[Stop]] | [[Hold Position]] | [[Patrol]] | [[Attack]] |
| [[Royal Guard of the Dominion (Battlecruiser)]] | [[Might of the Empire (Battlecruiser)]] | [[Field-Assist Targeting System]] |||
| [[Yamato Cannon (Mengsk)]] | [[Tactical Jump (Mengsk)]] ||||
!Fusion Core (Mengsk)
| [[Research Dual Resuscitators]] | [[Research Scatter Veil]] | [[Research Amplified Airwaves]] | [[Research Aesir Turbines]] | [[Research Field-Assist Targeting System]] |
||||||
||||| [[Cancel]] |
<<tiddler [[Enlistment Center##Ability Card]]>>
|>|>|>|>|>| |
| ![[Refinery (Mengsk)]] ||||||
|| [[Micro-Filtering]] |||||
|||||||
|>|>|>|>|>| |
| ![[Dominion Laborer]] | [[Move]] | [[Stop]] | [[Hold Position]] | [[Patrol]] | [[Attack]] |
|| [[Gather]] | [[Return Cargo]] | [[Working Crew]] | [[Will of the People]] | [[Report for Combat]] |
|| [[Build Structure]] | [[Build Advanced Structure]] | [[Repair]] | [[Spray]] | [[Halt Building]] |
|>|>|>|>|>| |
| ![[Dominion Laborer]] | [[Build Enlistment Center]] | [[Build Refinery]] | [[Build Supply Bunker]] |||
| ![[Build Structure]] | [[Build Barracks]] | [[Build Engineering Bay]] ||||
|| [[Build Earthsplitter Ordnance]] | [[Build Missile Turret]] ||| [[Cancel]] |
|>|>|>|>|>| |
| ![[Dominion Laborer]] | [[Build Royal Academy]] |||||
| ![[Build Advanced Structure]] | [[Build Factory]] | [[Build Armory]] ||||
|| [[Build Starport]] | [[Build Fusion Core]] ||| [[Cancel]] |
|>|>|>|>|>| |
| ![[Dominion Trooper/Assault/Rocket/Flame]] | [[Move]] | [[Stop]] | [[Hold Position]] | [[Patrol]] | [[Attack]] |
|||| [[Working Crew]] | [[Will of the People]] | [[Report for Labor]] |
|| [[Build Combat Structure]] | [[Equip B-2 High-Cal LMG]] | [[Equip CPO-7 Salamander Flamethrower]] | [[Equip Hailstorm Launcher]] ||
|>|>|>|>|>| |
| ![[Dominion Trooper]] ||| [[Build Supply Bunker]] |||
| ![[Build Combat Structure]] ||||||
|| [[Build Earthsplitter Ordnance]] | [[Build Missile Turret]] ||| [[Cancel]] |
|>|>|>|>|>| |
| ![[Supply Bunker]] || [[Stop]] ||| [[Attack]] |
|| [[Call to Labor]] | [[Call to Arms]] | [[Neosteel Fortified Armor]] | [[Aim-assist Embrasures]] | [[Set Rally Point]] |
||| [[Load (Supply Bunker)]] | [[Unload All (Supply Bunker)]] | [[Salvage]] ||
|>|>|>|>|>| |
| ![[Barracks (Mengsk)]] || [[Train Aegis Guard]] | [[Train Emperor's Shadow]] |||
|||||| [[Set Rally Point]] |
||||| [[Lift Off]] | [[Cancel]] |
|>|>|>|>|>| |
| ![[Aegis Guard]] | [[Move]] | [[Stop]] | [[Hold Position]] | [[Patrol]] | [[Attack]] |
|| [[Royal Guard of the Dominion (Marauder)]] | [[Might of the Empire (Marauder)]] | [[Aegis Barrier]] | [[Incapacitator Shells]] ||
|| [[High Grade Stimpacks]] |||||
|>|>|>|>|>| |
| ![[Emperor's Shadow]] | [[Move]] | [[Stop]] | [[Hold Position]] | [[Patrol]] | [[Attack]] |
|| [[Royal Guard of the Dominion (Ghost)]] | [[Might of the Empire (Ghost)]] | [[Hold Fire]] | [[Weapon Free]] | [[Sovereign Tactical Missiles]] |
|| [[Pirokinetic Immolation (Small/Big Damage)]] | [[EMP Blast (Short/Long Stun)]] | [[Labyrinth Cloak]] | [[Tactical Missile Strilke]] | [[Cancel]] |
|>|>|>|>|>| |
| ![[Engineering Bay (Mengsk)]] | [[Upgrade Dominion Weapons level 1/2/3]] | [[Upgrade Dominion Armor level 1/2/3]] ||||
|| [[Research Orbital Trooper Pods]] | [[Research Neosteel Fortified Armor]] | [[Research Aim-assist Embrasures]] | [[Research Hemispheric Accelerants]] ||
|| [[Earthsplitter Ordnance (Unlock)]] | [[Missile Turret (Unlock)]] ||| [[Cancel]] |
|>|>|>|>|>| |
| ![[Missile Turret]] || [[Stop]] ||| [[Attack]] |
|| [[Neosteel Fortified Armor]] |||||
|| [[Salvage]] |||||
|>|>|>|>|>| |
| ![[Earthsplitter Ordnance]] || [[Stop]] ||||
|| [[Contaminated Strike]] | [[Neosteel Fortified Armor]] | [[Hemispheric Accelerants]] || [[Set Earthsplitter Ordnance Rally Point]] |
|| [[Bombardment]] | [[Load (Artillery)]] | [[Unload All (Artillery)]] | [[Salvage]] ||
|>|>|>|>|>| |
| ![[Royal Academy (Mengsk)]] | [[Research Incapacitator Shells]] | [[Research Sovereign Tactical Missiles]] ||||
|||||||
|| [[Arm Silo with Tactical Missile]] |||| [[Cancel]] |
|>|>|>|>|>| |
| ![[Factory (Mengsk)]] ||| [[Build Shock Division]] || [[Build Blackhammer]] |
||||| [[Research Hemispheric Accelerants]] | [[Set Rally Point]] |
||||| [[Lift Off]] | [[Cancel]] |
|>|>|>|>|>| |
| ![[Shock Division (Siege/Tank Mode)]] | [[Move]] | [[Stop]] | [[Hold Position]] | [[Patrol]] | [[Attack]] |
|| [[Royal Guard of the Dominion (Siege Tank)]] | [[Might of the Empire (Siege Tank)]] | [[Shock and Awe]] | [[Armament Stabilizers]] ||
|| [[Siege Mode (Mengsk)]] | [[Tank Mode (Mengsk)]] ||||
|>|>|>|>|>| |
| ![[Armory (Mengsk)]] | [[Research Armament Stabilizers]] | [[Research Bulwark Field]] | [[Research Smart Servos]] |||
|||||||
|||||| [[Cancel]] |
|>|>|>|>|>| |
| ![[Starport (Mengsk)]] | [[Build Sky Fury (Fighter Mode)]] | [[Build Imperial Intercessor]] | [[Build Imperial Witness]] |||
|| [[Build Pride of Augustgrad]] |||| [[Set Rally Point]] |
||||| [[Lift Off]] | [[Cancel]] |
|>|>|>|>|>| |
| ![[Sky Fury (Fighter Mode)]] | [[Move]] | [[Stop]] | [[Hold Position]] | [[Patrol]] | [[Attack]] |
|| [[Royal Guard of the Dominion (Viking)]] | [[Might of the Empire (Viking)]] | [[Tactical Realignment]] | [[Evasive Maneuvers]] | [[Aesir Turbines]] |
||| [[Assault Mode (Mengsk)]] ||||
|>|>|>|>|>| |
| ![[Sky Fury (Assault Mode)]] | [[Move]] | [[Stop]] | [[Hold Position]] | [[Patrol]] | [[Attack]] |
|| [[Royal Guard of the Dominion (Viking)]] | [[Might of the Empire (Viking)]] | [[Tactical Realignment]] | [[Phoenix Protocol]] ||
|| [[Fighter Mode (Mengsk)]] |||||
|>|>|>|>|>| |
| ![[Imperial Intercessor]] | [[Move]] | [[Stop]] | [[Hold Position]] | [[Patrol]] | [[Attack]] |
| ![[Medivac]] | [[Dual Resuscitators]] | [[Scatter Veil]] | [[Armament Stabilizers]] |||
|| [[Heal (Mengsk)]] | [[Ignite Afterburners (Mengsk)]] | [[Load (Medivac)]] | [[Unload All (Medivacs)]] | [[Detector]] |
|>|>|>|>|>| |
| ![[Imperial Witness]] | [[Move]] | [[Stop]] | [[Hold Position]] | [[Patrol]] | [[Attack]] |
| ![[Mobile Mode]] | [[Detector]] |||||
|||| [[Patriot Mode]] |||
|>|>|>|>|>| |
| ![[Imperial Witness]] | [[Move]] | [[Stop]] | [[Hold Position]] | [[Patrol]] | [[Attack]] |
| ![[Patriot Mode]] | [[Detector]] | [[Indoctrinate]] | [[Amplified Airwaves]] |||
||||| [[Cancel Patriot Mode]] ||
|>|>|>|>|>| |
| ![[Pride of Augustgrad]] | [[Move]] | [[Stop]] | [[Hold Position]] | [[Patrol]] | [[Attack]] |
|| [[Royal Guard of the Dominion (Battlecruiser)]] | [[Might of the Empire (Battlecruiser)]] | [[Field-Assist Targeting System]] |||
|| [[Yamato Cannon (Mengsk)]] | [[Tactical Jump (Mengsk)]] ||||
|>|>|>|>|>| |
| ![[Fusion Core (Mengsk)]] | [[Research Dual Resuscitators]] | [[Research Scatter Veil]] | [[Research Amplified Airwaves]] | [[Research Aesir Turbines]] | [[Research Field-Assist Targeting System]] |
|||||||
|||||| [[Cancel]] |
|>|>|>|>|>| |
|>|![[Conscripts|MengskUnitsTab]]| !Weapon | Type | Upgrade | !Attacks| !Damage| !Damage <br> Upgrade | !Cooldown<br><<tiddler Time>> | !Range || !Base <br> DPS |!Max DPS<br>vs Armor 0|!Max DPS<br>vs Armor 1|!Max DPS<br>vs Armor 2|!Max DPS<br>vs Armor 3|!Max DPS<br>vs Armor 4|!Max DPS<br>vs Armor 5|!Max DPS<br>vs Armor 6|!Max DPS<br>vs Armor 7 || !Base <br> DPS per supply <<tiddler Supply>>|!Max DPS<br>vs Armor 0 per supply <<tiddler Supply>>|!Max DPS<br>vs Armor 1 per supply <<tiddler Supply>>|!Max DPS<br>vs Armor 2 per supply <<tiddler Supply>>|!Max DPS<br>vs Armor 3 per supply <<tiddler Supply>>|!Max DPS<br>vs Armor 4 per supply <<tiddler Supply>>|!Max DPS<br>vs Armor 5 per supply <<tiddler Supply>>|!Max DPS<br>vs Armor 6 per supply <<tiddler Supply>> | !Max DPS<br>vs Armor 7 per supply <<tiddler Supply>> |
| <<tiddler [[IMG##Dominion Laborer]]>> | [[Dominion Laborer]] +++<<tiddler [[MengskCommandCard##Dominion Laborer]]>>=== | SCV - Fusion Cutter | melee, ground | none | 1 | 5 | | 1,50 | 0,10 | | 3,33 | 3,33 | 2,67 | 2,00 | 1,33 | 0,67 | 0,33 | 0,33 | 0,33 | | 3,33 | 3,33 | 2,67 | 2,00 | 1,33 | 0,67 | 0,33 | 0,33 | 0,33 |
| <<tiddler [[IMG##Dominion Trooper]]>> | [[Dominion Trooper]] +++<<tiddler [[MengskCommandCard##Dominion Trooper]]>>=== | Ferromag SMG | ranged | Dominion Weapons | 1 | 6 | 1 | 0,86 | 5,00 | | 6,97 | 10,46 | 9,29 | 8,13 | 6,97 | 5,81 | 4,65 | 3,49 | 2,32 | | 6,97 | 10,46 | 9,29 | 8,13 | 6,97 | 5,81 | 4,65 | 3,49 | 2,32 |
| <<tiddler [[IMG##Dominion Assault Trooper]]>> | [[Dominion Assault Trooper]] +++<<tiddler [[MengskCommandCard##Dominion Assault Trooper]]>>=== | B-2 High-Cal LMG | ranged|~| 1 | 12 | 1 | 0,86 | 5,00 | | 13,94 | 17,43 | 16,26 | 15,10 | 13,94 | 12,78 | 11,62 | 10,46 | 9,29 | | 13,94 | 17,43 | 16,26 | 15,10 | 13,94 | 12,78 | 11,62 | 10,46 | 9,29 |
| <<tiddler [[IMG##Dominion Rocket Trooper]]>> | [[Dominion Rocket Trooper]] +++<<tiddler [[MengskCommandCard##Dominion Rocket Trooper]]>>=== | Hailstorm Launcher | ranged, air|~| 2 | 8 | 1 | 1,50 | 10,00 | | 10,67 | 14,67 | 13,33 | 12,00 | 10,67 | 9,33 | 8,00 | 6,67 | 5,33 | | 10,67 | 14,67 | 13,33 | 12,00 | 10,67 | 9,33 | 8,00 | 6,67 | 5,33 |
| <<tiddler [[IMG##Dominion Flame Trooper]]>> | [[Dominion Flame Trooper]] +++<<tiddler [[MengskCommandCard##Dominion Flame Trooper]]>>=== | CPO-7 Salamander Flamethrower | splash, ground|~| 1 | 16 | 2 | 1,40 | 2,00 | | 11,43 | 15,71 | 15,00 | 14,29 | 13,57 | 12,86 | 12,14 | 11,43 | 10,71 | | 11,43 | 15,71 | 15,00 | 14,29 | 13,57 | 12,86 | 12,14 | 11,43 | 10,71 |
|~|~|~| vs light|~| 1 | 24 | 2 | 1,40 | 2,00 | | 17,14 | 21,43 | 20,71 | 20,00 | 19,29 | 18,57 | 17,86 | 17,14 | 16,43 | | 17,14 | 21,43 | 20,71 | 20,00 | 19,29 | 18,57 | 17,86 | 17,14 | 16,43 |
|>|![[Royal Guards|MengskUnitsTab]]| !Weapon | Type | Upgrade | !Attacks| !Damage| !Damage <br> Upgrade | !Cooldown<br><<tiddler Time>> | !Range || !Base <br> DPS |!Max DPS<br>vs Armor 0|!Max DPS<br>vs Armor 1|!Max DPS<br>vs Armor 2|!Max DPS<br>vs Armor 3|!Max DPS<br>vs Armor 4|!Max DPS<br>vs Armor 5|!Max DPS<br>vs Armor 6|!Max DPS<br>vs Armor 7 || !Base <br> DPS per supply <<tiddler Supply>>|!Max DPS<br>vs Armor 0 per supply <<tiddler Supply>>|!Max DPS<br>vs Armor 1 per supply <<tiddler Supply>>|!Max DPS<br>vs Armor 2 per supply <<tiddler Supply>>|!Max DPS<br>vs Armor 3 per supply <<tiddler Supply>>|!Max DPS<br>vs Armor 4 per supply <<tiddler Supply>>|!Max DPS<br>vs Armor 5 per supply <<tiddler Supply>>|!Max DPS<br>vs Armor 6 per supply <<tiddler Supply>> | !Max DPS<br>vs Armor 7 per supply <<tiddler Supply>> |
| <<tiddler [[IMG##Aegis Guard]]>> | [[Aegis Guard]] +++<<tiddler [[MengskCommandCard##Aegis Guard]]>>=== | Marauder - Punisher Grenades | ranged, ground | Rank | 1 | 20 | 5,00 | 1,50 | 6,00 | | 13,33 | 23,33 | 22,67 | 22,00 | 21,33 | 20,67 | 20,00 | 19,33 | 18,67 | | 3,33 | 5,83 | 5,67 | 5,50 | 5,33 | 5,17 | 5,00 | 4,83 | 4,67 |
|~|~|~| vs armored|~|1 | 40 | 10,00 | 1,50 | 6,00 | | 26,67 | 46,67 | 46,00 | 45,33 | 44,67 | 44,00 | 43,33 | 42,67 | 42,00 | | 6,67 | 11,67 | 11,50 | 11,33 | 11,17 | 11,00 | 10,83 | 10,67 | 10,50 |
| <<tiddler [[IMG##Emperor's Shadow]]>> | [[Emperor's Shadow]] +++<<tiddler [[MengskCommandCard##Emperor's Shadow]]>>=== | Ghost - C-10 Canister Rifle (Mengsk) | ranged|~|1 | 15 | 3,75 | 1,50 | 6,00 | | 10,00 | 17,50 | 16,83 | 16,17 | 15,50 | 14,83 | 14,17 | 13,50 | 12,83 | | 2,50 | 4,38 | 4,21 | 4,04 | 3,88 | 3,71 | 3,54 | 3,38 | 3,21 |
| <<tiddler [[IMG##Shock Division]]>> | [[Shock Division]] +++<<tiddler [[MengskCommandCard##Shock Division]]>>=== | Siege Tank - 90mm Cannons (Mengsk) | ranged, ground|~|1 | 25 | 6,25 | 1,04 | 7,00 | | 24,04 | 42,07 | 41,11 | 40,14 | 39,18 | 38,22 | 37,26 | 36,30 | 35,34 | | 4,01 | 7,01 | 6,85 | 6,69 | 6,53 | 6,37 | 6,21 | 6,05 | 5,89 |
|~|~|~| vs Armored|~|1 | 40 | 10,00 | 1,04 | 7,00 | | 38,46 | 67,31 | 66,35 | 65,38 | 64,42 | 63,46 | 62,50 | 61,54 | 60,58 | | 6,41 | 11,22 | 11,06 | 10,90 | 10,74 | 10,58 | 10,42 | 10,26 | 10,10 |
| <<tiddler [[IMG##Shock Division Siege]]>> | [[Shock Division Siege]] +++<<tiddler [[MengskCommandCard##Shock Division Siege]]>>=== | Siege Tank - Crucio Shock Cannon (Mengsk) | ranged, ground|~|1 | 40 | 10,00 | 3,00 | 13,00 | | 13,33 | 23,33 | 23,00 | 22,67 | 22,33 | 22,00 | 21,67 | 21,33 | 21,00 | | 2,22 | 3,89 | 3,83 | 3,78 | 3,72 | 3,67 | 3,61 | 3,56 | 3,50 |
|~|~|~| vs Armored|~|1 | 70 | 17,50 | 3,00 | 13,00 | | 23,33 | 40,83 | 40,50 | 40,17 | 39,83 | 39,50 | 39,17 | 38,83 | 38,50 | | 3,89 | 6,81 | 6,75 | 6,69 | 6,64 | 6,58 | 6,53 | 6,47 | 6,42 |
| <<tiddler [[IMG##Blackhammer]]>> | [[Blackhammer]] +++<<tiddler [[MengskCommandCard##Blackhammer]]>>=== | Thor's Hammer | ranged, ground|~|2 | 45 | 11,25 | 1,28 | 7,00 | | 70,31 | 123,05 | 121,48 | 119,92 | 118,36 | 116,80 | 115,23 | 113,67 | 112,11 | | 8,79 | 15,38 | 15,19 | 14,99 | 14,79 | 14,60 | 14,40 | 14,21 | 14,01 |
|~|~|Thor - Javelin Missile Launcher | ranged, air|~|4 | 9 | 2,25 | 3,00 | 10,00 | | 12,00 | 21,00 | 19,67 | 18,33 | 17,00 | 15,67 | 14,33 | 13,00 | 11,67 | | 1,50 | 2,63 | 2,46 | 2,29 | 2,13 | 1,96 | 1,79 | 1,63 | 1,46 |
|~|~|~| vs light|~|4 | 18 | 4,50 | 3,00 | 10,00 | | 24,00 | 42,00 | 40,67 | 39,33 | 38,00 | 36,67 | 35,33 | 34,00 | 32,67 | | 3,00 | 5,25 | 5,08 | 4,92 | 4,75 | 4,58 | 4,42 | 4,25 | 4,08 |
| <<tiddler [[IMG##Blackhammer Siege]]>> | [[Blackhammer Siege]] +++<<tiddler [[MengskCommandCard##Blackhammer Siege]]>>=== | Inferno Volley | ranged, air|~|1 | 8 | 2,00 | 0,34 | 18,00 | | 23,53 | 41,18 | 38,24 | 35,29 | 32,35 | 29,41 | 26,47 | 23,53 | 20,59 | | 2,94 | 5,15 | 4,78 | 4,41 | 4,04 | 3,68 | 3,31 | 2,94 | 2,57 |
| <<tiddler [[IMG##Sky Fury]]>> | [[Sky Fury]] +++<<tiddler [[MengskCommandCard##Sky Fury]]>>=== | Fighter Mode | ranged, air|~|2 | 21 | 5,25 | 2,00 | 9,00 | | 21,00 | 36,75 | 35,75 | 34,75 | 33,75 | 32,75 | 31,75 | 30,75 | 29,75 | | 5,25 | 9,19 | 8,94 | 8,69 | 8,44 | 8,19 | 7,94 | 7,69 | 7,44 |
|~|~|~|vs massive|~|2 | 46 | 11,50 | 2,00 | 9,00 | | 46,00 | 80,50 | 79,50 | 78,50 | 77,50 | 76,50 | 75,50 | 74,50 | 73,50 | | 11,50 | 20,13 | 19,88 | 19,63 | 19,38 | 19,13 | 18,88 | 18,63 | 18,38 |
| <<tiddler [[IMG##Sky Fury Ground]]>> | [[Sky Fury Ground]] +++<<tiddler [[MengskCommandCard##Sky Fury Ground]]>>=== | Gatling Cannon | ranged, ground|~|1 | 18 | 4,50 | 1,00 | 6,00 | | 18,00 | 31,50 | 30,50 | 29,50 | 28,50 | 27,50 | 26,50 | 25,50 | 24,50 | | 4,50 | 7,88 | 7,63 | 7,38 | 7,13 | 6,88 | 6,63 | 6,38 | 6,13 |
| <<tiddler [[IMG##Pride of Augustgrad]]>> | [[Pride of Augustgrad]] +++<<tiddler [[MengskCommandCard##Pride of Augustgrad]]>>=== | Battlecruiser Switcher - Laser Battery | ranged|~|1 | 9 | 2,25 | 0,23 | 6,00 | | 40,00 | 70,00 | 65,56 | 61,11 | 56,67 | 52,22 | 47,78 | 43,33 | 38,89 | | 10,00 | 17,50 | 16,39 | 15,28 | 14,17 | 13,06 | 11,94 | 10,83 | 9,72 |
|>|![[Supports|MengskUnitsTab]]| !Weapon | Type | Upgrade | !Attacks| !Damage| !Damage <br> Upgrade | !Cooldown<br><<tiddler Time>> | !Range || !Base <br> DPS |!Max DPS<br>vs Armor 0|!Max DPS<br>vs Armor 1|!Max DPS<br>vs Armor 2|!Max DPS<br>vs Armor 3|!Max DPS<br>vs Armor 4|!Max DPS<br>vs Armor 5|!Max DPS<br>vs Armor 6|!Max DPS<br>vs Armor 7 || !Base <br> DPS per supply <<tiddler Supply>>|!Max DPS<br>vs Armor 0 per supply <<tiddler Supply>>|!Max DPS<br>vs Armor 1 per supply <<tiddler Supply>>|!Max DPS<br>vs Armor 2 per supply <<tiddler Supply>>|!Max DPS<br>vs Armor 3 per supply <<tiddler Supply>>|!Max DPS<br>vs Armor 4 per supply <<tiddler Supply>>|!Max DPS<br>vs Armor 5 per supply <<tiddler Supply>>|!Max DPS<br>vs Armor 6 per supply <<tiddler Supply>> | !Max DPS<br>vs Armor 7 per supply <<tiddler Supply>> |
| <<tiddler [[IMG##Imperial Intercessor]]>> | [[Imperial Intercessor]] +++<<tiddler [[MengskCommandCard##Imperial Intercessor]]>>=== | Medivac Mengsk Siege Tank Airlift | ranged, air | | 1 | 55 | | 4,50 | 13,00 | | 12,22 | 12,22 | 12,00 | 11,78 | 11,56 | 11,33 | 11,11 | 10,89 | 10,67 | | 6,11 | 6,11 | 6,00 | 5,89 | 5,78 | 5,67 | 5,56 | 5,44 | 5,33 |
|~|~|~| vs armored | | 1 | 80 | | 4,50 | 13,00 | | 17,78 | 17,78 | 17,56 | 17,33 | 17,11 | 16,89 | 16,67 | 16,44 | 16,22 | | 8,89 | 8,89 | 8,78 | 8,67 | 8,56 | 8,44 | 8,33 | 8,22 | 8,11 |
|~|Upgraded|Medivac Mengsk Siege Tank Airlift Improved AoE | ranged, air | | 1 | 40 | | 4,50 | 13,00 | | 8,89 | 8,89 | 8,67 | 8,44 | 8,22 | 8,00 | 7,78 | 7,56 | 7,33 | | 4,44 | 4,44 | 4,33 | 4,22 | 4,11 | 4,00 | 3,89 | 3,78 | 3,67 |
|~|~|~| vs armored | | 1 | 70 | | 4,50 | 13,00 | | 15,56 | 15,56 | 15,33 | 15,11 | 14,89 | 14,67 | 14,44 | 14,22 | 14,00 | | 7,78 | 7,78 | 7,67 | 7,56 | 7,44 | 7,33 | 7,22 | 7,11 | 7,00 |
| <<tiddler [[IMG##Imperial Witness]]>> | [[Imperial Witness]] +++<<tiddler [[MengskCommandCard##Imperial Witness]]>>=== | none | | | | 0 | | | | | | - | - | - | - | - | - | - | - | | 0,00 | | | | | | | | |
| <<tiddler [[IMG##Imperial Witness Patriot Mode]]>> | [[Imperial Witness Patriot Mode]] +++<<tiddler [[MengskCommandCard##Imperial Witness Patriot Mode]]>>=== | ~| | | | 0 | | | | | | - | - | - | - | - | - | - | - | | 0,00 | | | | | | | | |
| <<tiddler [[IMG##Supply Bunker]]>> | [[Supply Bunker]] +++<<tiddler [[MengskCommandCard##Supply Bunker]]>>=== | | | | | 0 | | | 0/+1 | | | - | - | - | - | - | - | - | - | | - | - | - | - | - | - | - | - | - |
| <<tiddler [[IMG##Missile Turret (Mengsk)]]>> | [[Missile Turret (Mengsk)]] +++<<tiddler [[MengskCommandCard##Missile Turret (Mengsk)]]>>=== | Longbolt Missile | ranged, air | | 2 | 12 | | 0,86 | 7,00 | | 27,88 | 27,88 | 25,56 | 23,23 | 20,91 | 18,59 | 16,26 | 13,94 | 11,62 | | - | - | - | - | - | - | - | - | - |
| <<tiddler [[IMG##Earthsplitter Ordnance]]>> | [[Earthsplitter Ordnance]] +++<<tiddler [[MengskCommandCard##Earthsplitter Ordnance]]>>=== | Bombardment<br> Garrison 0 | splash, ground | | 1 | 100 | | 30,00 | min 7<br>max 50/75 | | 3,33 | 3,33 | 3,30 | 3,27 | 3,23 | 3,20 | 3,17 | 3,13 | 3,10 | | - | - | - | - | - | - | - | - | - |
|~|~|Garrison 1|~| | 1 | 100 | | 15,00 | | | 6,67 | 6,67 | 6,60 | 6,53 | 6,47 | 6,40 | 6,33 | 6,27 | 6,20 | | - | - | - | - | - | - | - | - | - |
|~|~|Garrison 2|~| | 1 | 100 | | 10,00 | | | 10,00 | 10,00 | 9,90 | 9,80 | 9,70 | 9,60 | 9,50 | 9,40 | 9,30 | | - | - | - | - | - | - | - | - | - |
|~|~|Garrison 3|~| | 1 | 100 | | 8,00 | | | 12,50 | 12,50 | 12,38 | 12,25 | 12,13 | 12,00 | 11,88 | 11,75 | 11,63 | | - | - | - | - | - | - | - | - | - |
|~|~|Garrison 4|~| | 1 | 100 | | 6,00 | | | 16,67 | 16,67 | 16,50 | 16,33 | 16,17 | 16,00 | 15,83 | 15,67 | 15,50 | | - | - | - | - | - | - | - | - | - |
|>|![[Enthralled Zergs|MengskUnitsTab]]| !Weapon | Type | Upgrade | !Attacks| !Damage| !Damage <br> Upgrade | !Cooldown<br><<tiddler Time>> | !Range || !Base <br> DPS |!Max DPS<br>vs Armor 0|!Max DPS<br>vs Armor 1|!Max DPS<br>vs Armor 2|!Max DPS<br>vs Armor 3|!Max DPS<br>vs Armor 4|!Max DPS<br>vs Armor 5|!Max DPS<br>vs Armor 6|!Max DPS<br>vs Armor 7 || !Base <br> DPS per supply <<tiddler Supply>>|!Max DPS<br>vs Armor 0 per supply <<tiddler Supply>>|!Max DPS<br>vs Armor 1 per supply <<tiddler Supply>>|!Max DPS<br>vs Armor 2 per supply <<tiddler Supply>>|!Max DPS<br>vs Armor 3 per supply <<tiddler Supply>>|!Max DPS<br>vs Armor 4 per supply <<tiddler Supply>>|!Max DPS<br>vs Armor 5 per supply <<tiddler Supply>>|!Max DPS<br>vs Armor 6 per supply <<tiddler Supply>> | !Max DPS<br>vs Armor 7 per supply <<tiddler Supply>> |
| <<tiddler [[IMG##Enthralled Zergling]]>> | [[Enthralled Zergling]] +++<<tiddler [[MengskCommandCard##Enthralled Zergling]]>>=== | Zergling Claws | melee, ground | Dominion Weapons | 1 | 5 | 1 | 0,50 | 0,10 | | 10,00 | 16,00 | 14,00 | 12,00 | 10,00 | 8,00 | 6,00 | 4,00 | 2,00 | | - | - | - | - | - | - | - | - | - |
| <<tiddler [[IMG##Enthralled Hydralisk]]>> | [[Enthralled Hydralisk]] +++<<tiddler [[MengskCommandCard##Enthralled Hydralisk]]>>=== | Needle Spines / Melee | ranged | Dominion Weapons | 1 | 12 | 1 | 0,86 | 5,00 | | 13,95 | 17,44 | 16,28 | 15,12 | 13,95 | 12,79 | 11,63 | 10,47 | 9,30 | | - | - | - | - | - | - | - | - | - |
| <<tiddler [[IMG##Enthralled Mutalisk]]>> | [[Enthralled Mutalisk]] +++<<tiddler [[MengskCommandCard##Enthralled Mutalisk]]>>=== | Glaive Wurm (Mengsk) | ranged (bounce) | Dominion Weapons | 1 | 9 | 1 | 1,52 | 3,00 | | 5,90 | 7,87 | 7,22 | 6,56 | 5,90 | 5,25 | 4,59 | 3,94 | 3,28 | | - | - | - | - | - | - | - | - | - |
| <<tiddler [[IMG##Enthralled Ultralisk]]>> | [[Enthralled Ultralisk]] +++<<tiddler [[MengskCommandCard##Enthralled Ultralisk]]>>=== | Ultralisk Mengsk - Kaiser Blades | melee, ground | Dominion Weapons | 1 | 35 | 2 | 0,86 | 1,00 | | 40,70 | 47,67 | 46,51 | 45,35 | 44,19 | 43,02 | 41,86 | 40,70 | 39,53 | | - | - | - | - | - | - | - | - | - |
|>|![[Production/Research Facilities|MengskUnitsTab]]| !Weapon | Type | Upgrade | !Attacks| !Damage| !Damage <br> Upgrade | !Cooldown<br><<tiddler Time>> | !Range || !Base <br> DPS |!Max DPS<br>vs Armor 0|!Max DPS<br>vs Armor 1|!Max DPS<br>vs Armor 2|!Max DPS<br>vs Armor 3|!Max DPS<br>vs Armor 4|!Max DPS<br>vs Armor 5|!Max DPS<br>vs Armor 6|!Max DPS<br>vs Armor 7 ||-|-|-|-|-|-|-|- | - |
| <<tiddler [[IMG##Enlistment Center]]>> | [[Enlistment Center]] +++<<tiddler [[MengskCommandCard##Enlistment Center]]>>=== | | | | | | | | | | | - | - | - | - | - | - | - | - | | - | - | - | - | - | - | - | - | - |
| <<tiddler [[IMG##Refinery (Mengsk)]]>> | [[Refinery (Mengsk)]] +++<<tiddler [[MengskCommandCard##Refinery (Mengsk)]]>>=== | | | | | | | | | | | - | - | - | - | - | - | - | - | | - | - | - | - | - | - | - | - | - |
| <<tiddler [[IMG##Barracks (Mengsk)]]>> | [[Barracks (Mengsk)]] +++<<tiddler [[MengskCommandCard##Barracks (Mengsk)]]>>=== | | | | | | | | | | | - | - | - | - | - | - | - | - | | - | - | - | - | - | - | - | - | - |
| <<tiddler [[IMG##Engineering Bay (Mengsk)]]>> | [[Engineering Bay (Mengsk)]] +++<<tiddler [[MengskCommandCard##Engineering Bay (Mengsk)]]>>=== | | | | | | | | | | | - | - | - | - | - | - | - | - | | - | - | - | - | - | - | - | - | - |
| <<tiddler [[IMG##Royal Academy]]>> | [[Royal Academy]] +++<<tiddler [[MengskCommandCard##Royal Academy]]>>=== | | | | | | | | | | | - | - | - | - | - | - | - | - | | - | - | - | - | - | - | - | - | - |
| <<tiddler [[IMG##Factory (Mengsk)]]>> | [[Factory (Mengsk)]] +++<<tiddler [[MengskCommandCard##Factory (Mengsk)]]>>=== | | | | | | | | | | | - | - | - | - | - | - | - | - | | - | - | - | - | - | - | - | - | - |
| <<tiddler [[IMG##Starport (Mengsk)]]>> | [[Starport (Mengsk)]] +++<<tiddler [[MengskCommandCard##Starport (Mengsk)]]>>=== | | | | | | | | | | | - | - | - | - | - | - | - | - | | - | - | - | - | - | - | - | - | - |
| <<tiddler [[IMG##Armory (Mengsk)]]>> | [[Armory (Mengsk)]] +++<<tiddler [[MengskCommandCard##Armory (Mengsk)]]>>=== | | | | | | | | | | | - | - | - | - | - | - | - | - | | - | - | - | - | - | - | - | - | - |
| <<tiddler [[IMG##Fusion Core (Mengsk)]]>> | [[Fusion Core (Mengsk)]] +++<<tiddler [[MengskCommandCard##Fusion Core (Mengsk)]]>>=== | | | | | | | | | | | - | - | - | - | - | - | - | - | | - | - | - | - | - | - | - | - | - |
| !Level | !Talent |
|06 - Engineering Bay Upgrade Cache|Unlocks the following upgrades at the Engineering Bay:<br>-Allows Laborers and Troopers to switch modes directly on the battlefield.<br>-Further increases the range of units within Supply Bunkers by +1.<br>-Increases the range of the Earthsplitter Ordnance's Bombardment ability by +10.|
| !Level | !Talent |
|05 - Unquestioned Authority|Imperial Mandate generates more quickly based on the supply count and ranks of your Royal Guard.<br>Indoctrinated Laborers and Troopers also increase Imperial Mandate generation.<br>Unlocks the Amplified Airwaves upgrade, which double Imperial Mandate generation from Indoctrinated Laborers and Troopers (Researched at the Fusion Core).|
|08 - Primary Royal Guard Upgrade Cache|Unlocks the following upgrades:<br>-Increases the movement speed of Sky Furies (Researched at the Fusion Core).|
|14 - Advanced Royal Guard Upgrade Cache|Unlocks the following upgrades:<br>-Pride of Augustgrad grant +1 attack range to nearby friendly ranged ground units. (Researched at the Fusion Core).|
![[Arcturus Mengsk|MengskInfo]]
[img[https://bnetcmsus-a.akamaihd.net/cms/page_media/g1/G1ENPB915WKF1572479328287.jpg]]
*Emperor of the Dominion
**Recommended for experienced players
**Conscript a large disposable army of Dominion Troopers
**Control and level up the Royal Guard, your personal elite fighting force
!Masteries
|Power Set 1|Laborer and Trooper Imperial Support:| +1% | +30% |
|~|Royal Guard Support:| +1% | +30% |
|Power Set 2|Terrible Damage<br>(Calldown Damage, not affecting Forced Conscription):| +1% | +30% |
|~|Royal Guard Cost:| -0.67% | -20% |
|Power Set 3|Starting Imperial Mandate:| +2 | +60 |
|~|Royal Guard Experience Gain Rate:| +0.5% | +15% |
[[[source|https://starcraft.fandom.com/wiki/Arcturus_Mengsk_(Co-op_Missions)]]]
!Royal Guard of the Dominion
Killing enemy units grants experience to nearby [[Royal Guards]]. If there are no nearby Royal Guards when an enemy is killed, the experience is instead split between all Royal Guards in the mission. Experience allows this unit to gain Rank, which improves its damage, armor, and health.
Quoting Aommaster
1. Experience is "dropped" at a rate of 100 exp/supply cost of unit killed
2. If the unit is heroic, with a supply cost of 0, it will drop 800 exp
3. Exp is evenly divided among all XPHungry Mengsk units within 15 range of the dying unit
4. Once a unit reaches max veterancy, it is removed from the list and will no longer consume exp
5. Minimim exp gain for a unit is 1 exp, regardless
[[Royal Guard Unit Stats Per Veterancy Rank|https://www.reddit.com/r/starcraft2coop/comments/e3iuok/mengsk_royal_guard_unit_stats_per_veterancy_rank/]]
+++
| Unit Level | Experience | HP | Shield | Armor | Damage | Imperial Support | Ability |h
| Marauder (4 supply) ||||||||
|0|0|300|0|1|20(+20)|1|None|
|1|1200|375|300|2|25(+25)|2|Shield/Knockback|
|2|2800|450|300|3|30(+30)|3|Cone Attack|
|3|4800|525|300|4|35(+35)|4|Super Stim|
| Ghost (4 supply) |||Energy|||||
|0|0|200|200|0|15(+15)|1|None|
|1|1200|250|250|1|18.75(+18.75)|2|Cloak|
|2|2800|300|300|2|22.5(+22.5)|3|Extra damage and stun|
|3|4800|350|350|3|26.25(+26.25)|4|AoE and Feedback|
| Tank (6 supply) ||||||||
|0|0|350||1|25(+15)|2|None|
|1|1800|440||2|31.25(+18.75)|3|Shock and Awe|
|2|2400|530||3|37.5(+22.5)|4|Vision and Attack range +2 in siege|
|3|7200|620||4|43.75(+26.25)|6|40% Wider AoE in siege|
| Thor (8 supply) ||||||||
|0|0|600||3|36(+36)|2|None|
|1|2400|750||4|45(+45)|4|Expanded radius Overwatch|
|2|5600|900||5|54(+54)|6|Extra range Overwatch|
|3|9600|1050||6|63(+63)|8|33% attackspeed Overwatch|
| Viking (4 supply) ||||||||
|0|0|270||0|30(+12)|1|None|
|1|1200|330||1|52.5(+62.5)|2|Bonus to massive|
|2|2800|390||2|62(+76)|3|Tactical Realignment|
|3|4800|450||3|73.5(+87.5)|4|Phoenix Protocol/ Evasive Maneuvers|
| Battlecruiser (10 supply) ||||||||
|0|0|800||3|9|2|None|
|1|3000|1000||4|11.25|5|Extra Ability charges|
|2|7000|1200||5|13.5|8|AoE Yamato|
|3|12000|1400||6|16.15|10|Triple tap|
===
+++
|Marauder|Rank 0|Rank 1|Rank 2|Rank 3|h
|XP|0|1200|2800|4800|
|Damage Dealt Fraction|20|25|30|35|
|Life Armor Bonus|1|2|3|4|
|HP|300|375|450|525|
|>|>|>|>| |
|Ghost|Rank 0|Rank 1|Rank 2|Rank 3|h
|XP|0|1200|2800|4800|
|Damage Dealt Fraction|15|18,75|22,50|26,25|
|Life Armor Bonus|0|1|2|3|
|HP|200|250|300|350|
|Energy|200|250|300|350|
|Energy Regen|1,125|1,625|2,125|2,625|
|>|>|>|>| |
|Viking|Rank 0|Rank 1|Rank 2|Rank 3|h
|XP|0|1200|2800|4800|
|Damage Dealt Fraction|21|26,25|31,50|36,75|
|Life Armor Bonus|0|1|2|3|
|HP|270|340|410|480|
|>|>|>|>| |
|Tank|Rank 0|Rank 1|Rank 2|Rank 3|h
|XP|0|1800|2400|7200|
|Damage Dealt Fraction|25|31,25|37,50|43,75|
|Life Armor Bonus|1|2|3|4|
|HP|350|440|530|620|
|>|>|>|>| |
|Thor|Rank 0|Rank 1|Rank 2|Rank 3|h
|XP|0|2400|5600|9600|
|Damage Dealt Fraction|45|56,25|67,50|78,75|
|Life Armor Bonus|3|4|5|6|
|HP|600|750|900|1050|
|>|>|>|>| |
|Battlecruiser|Rank 0|Rank 1|Rank 2|Rank 3|h
|XP|0|3000|7000|12000|
|Damage Dealt Fraction|9|11,25|13,50|15,75|
|Life Armor Bonus|3|4|5|6|
|HP|800|1000|1200|1400|
|>|>|>|>| |
===
!Might of the Empire
[[Royal Guards]] increase [[Imperial Support]] based on their supply cost and [[Rank]].
+++
<c val="#ColorAttackInfo">Royal Guards</c> increase <c val="#ColorAttackInfo">Imperial Support</c> based on their supply cost and <c val="#ColorAttackInfo">Rank</c>. Each point of Imperial Support generates 1 <c val="#ColorAttackInfo">Imperial Mandate</c> every <d ref="Effect,TopbarMengskBonusRegenFactorDummy,Amount"/> seconds.<n/><n/>This unit is increasing Imperial Support by <c val="#ColorAttackInfo"><d ref="$BehaviorStackCount:MengskVeterancyMarauderMengsk$*Unit,MarauderMengsk,Food*(-1)*Effect,RoyalGuardMengskTopbarRegenDummy,Amount*Effect,MasteryMengskRoyalGuardImperialMandateRegenerationFactorDummy,Amount" player="current" precision="0"/></c>.
===
| !Level | !Talent |
|08 - Primary Royal Guard Upgrade Cache|Unlocks the following upgrades:<br>-Allows Aegis Guards to slow enemy units with their attack (Researched at the Royal Academy).|
|14 - Advanced Royal Guard Upgrade Cache|Unlocks the following upgrades:<br>-Allows Emperor's Shadows to fire Tactical Missile Strikes without chennelling (Researched at the Royal Academy).|
[[Announcement|https://news.blizzard.com/en-gb/starcraft2/23185584/new-co-op-commander-arcturus-mengsk]]
[[Fandom Wiki|https://starcraft.fandom.com/wiki/Arcturus_Mengsk_(Co-op_Missions)]]
Game Editor
[[Mengsk Observations & Questions|https://www.reddit.com/r/starcraft2coop/comments/e2fwcf/mengsk_observations_questions/]]
[[Co-op Commander Guide: Mengsk (starcraft2coop.com)|https://starcraft2coop.com/commanders/mengsk]]
!0
|| Level | Talent | Description |h
!1
|<<tiddler [[IMG##Law and Order]]>>| 1 | Law and Order |Mengsk conscripts Dominion Laborers instead of SCV's to work and Dominion Troopers instead of Marines to fight. His Royal Guard units can level up, gaining new abilities and improvements to existing abilities.|
!2
|<<tiddler [[IMG##Expanded Arsenal]]>>| 2 | Expanded Arsenal |Allows Troopers to equip Flamethrowers and Rocket Launchers.|
!3
|<<tiddler [[IMG##Earthsplitter Ordnance]]>>| 3 | New Unit: Earthsplitter Ordnance |Randomly bombards near a target location, dealing damage to ground units in the area. Enables Contaminated Strike from the top panel. Can attack ground units.|
!4
|<<tiddler [[IMG##Contaminated Strike]]>>| 4 | Contaminated Strike |Unlocks the ability to launch experimental payloads, fired from your Earthspliter Ordnance randomly near a target area.|
!5
|<<tiddler [[IMG##Unquestioned Authority]]>>| 5 | Unquestioned Authority |Indoctrinated Laborers, Indoctrinated Troopers, and Royal Guards provide Imperial Support, which increases Imperial Mandate generation. Unlocks the Amplified Airwaves upgrade, which doubles the Imperial Support provided by Indoctrinated Laborers and Troopers (Researched at the Fusion Core).|
!6
|<<tiddler [[IMG##Engineering Bay Upgrade Cache]]>>| 6 | Engineering Bay Upgrade Cache |Unlocks the following upgrades at the Engineering Bay: Further increases the range of units within Supply Bunkers by +1. Increases the range of Earthsplitter Ordnance's Bombardment ability by +25.|
!7
|<<tiddler [[IMG##Wolves of War]]>>| 7 | Wolves of War |Dogs of War now deploys additional Mutalisks and Ultralisks at higher Imperial Mandate levels.|
!8
|<<tiddler [[IMG##Basic Royal Guard Upgrade Cache]]>>| 8 | Basic Royal Guard Upgrade Cache |Unlocks the following upgrades:<br>Allows Aegis Guard to slow enemy units with their attack (Researched at the Royal Academy).<br>Allows Shock Division in Siege Mode to fire at enemy air units while picked up by an Imperial Intercessor (Researched at the Armory).<br>Increases the movement speed of Sky Furies (Researched at the Fusion Core).|
!9
|<<tiddler [[IMG##New Unit: Blackhammer]]>>| 9 | New Unit: Blackhammer |Royal Guard heavy assault mech. Can use Overwatch Mode. Built from the Factory. Can attack ground and air units.|
!10
|<<tiddler [[IMG##Nuclear Annihilation]]>>| 10 | Nuclear Annihilation |Unlocks the ability to call down a rain of Tactical Missiles followed by a Nuclear Missile. Activate Nuclear Annihilation from the top panel.|
!11
|<<tiddler [[IMG##Psychoactive Payload]]>>| 11 | Psychoactive Payload |Contaminated Strike now Fears enemy units on impact, causing them to run around in panic.|
!12
|<<tiddler [[IMG##New Unit: Pride of Augustgrad]]>>| 12 | New Unit: Pride of Augustgrad |Powerful Royal Guard warship. Can use Yamato Cannon and Tactical Jump. Built from the Starport. Can attack ground and air units.|
!13
|<<tiddler [[IMG##Complete Annihilation]]>>| 13 | Complete Annihilation |Increased the number of Tactical Missiles dropped by Nuclear Annihilation from 20 to 40.|
!14
|<<tiddler [[IMG##Advanced Royal Guard Upgrade Cache]]>>| 14 | Advanced Royal Guard Upgrade Cache |Unlocks the following upgrades:<br>Allows Emperor's Shadows to fire Tactical Missile Strikes without channeling (Researched at the Royal Academy).<br>Blackhammers grant 3 armor to units positioned beneath them (Researched at the Armory).<br>Pride of Augustgrads grant +1 attack range to nearby friendly ranged ground units (Researched at the Fusion Core).|
!15
|<<tiddler [[IMG##Promotion Granted]]>>| 15 | Promotion Granted |Royal Guard units can now attain Rank 3, gaining the following abilities:<br>Aegis Guard can greatly increase their attack speed.<br>The Emperor's Shadow's Pyrokinetic Immolation causes an explosion with the target dies. Units take damage from the Emperor's Shadow's EMP Blast equal to the amount of energy drained.<br>Increases the Shock Division's attack's area of effect radius in Siege Mode.<br>Increases the attack speed of Blackhammers in Overwatch Mode.<br>Grants Sky Furies with a chance to evade enemy attacks in Fighter Mode. When Sky Furies take fatal damage in Assault Mode, they transform to Fighter Mode and gain a barrier.<br>Allows the Pride of Augustgrad's Yamato Cannon to fire three times in rapid succession.|
![[Talents|MengskTalents]]
|<<tiddler [[IMG##Talent]]>>| Level | Talent | Description |h
|<<tiddler [[IMG##Law and Order]]>>| 1 | Law and Order |Mengsk conscripts Dominion Laborers instead of SCV's to work and Dominion Troopers instead of Marines to fight. His Royal Guard units can level up, gaining new abilities and improvements to existing abilities.|
|<<tiddler [[IMG##Expanded Arsenal]]>>| 2 | Expanded Arsenal |Allows Troopers to equip Flamethrowers and Rocket Launchers.|
|<<tiddler [[IMG##Earthsplitter Ordnance]]>>| 3 | New Unit: Earthsplitter Ordnance |Randomly bombards near a target location, dealing damage to ground units in the area. Enables Contaminated Strike from the top panel. Can attack ground units.|
|<<tiddler [[IMG##Contaminated Strike]]>>| 4 | Contaminated Strike |Unlocks the ability to launch experimental payloads, fired from your Earthspliter Ordnance randomly near a target area.|
|<<tiddler [[IMG##Unquestioned Authority]]>>| 5 | Unquestioned Authority |Indoctrinated Laborers, Indoctrinated Troopers, and Royal Guards provide Imperial Support, which increases Imperial Mandate generation. Unlocks the Amplified Airwaves upgrade, which doubles the Imperial Support provided by Indoctrinated Laborers and Troopers (Researched at the Fusion Core).|
|<<tiddler [[IMG##Engineering Bay Upgrade Cache]]>>| 6 | Engineering Bay Upgrade Cache |Unlocks the following upgrades at the Engineering Bay: Further increases the range of units within Supply Bunkers by +1. Increases the range of Earthsplitter Ordnance's Bombardment ability by +25.|
|<<tiddler [[IMG##Wolves of War]]>>| 7 | Wolves of War |Dogs of War now deploys additional Mutalisks and Ultralisks at higher Imperial Mandate levels.|
|<<tiddler [[IMG##Basic Royal Guard Upgrade Cache]]>>| 8 | Basic Royal Guard Upgrade Cache |Unlocks the following upgrades:<br>Allows Aegis Guard to slow enemy units with their attack (Researched at the Royal Academy).<br>Allows Shock Division in Siege Mode to fire at enemy air units while picked up by an Imperial Intercessor (Researched at the Armory).<br>Increases the movement speed of Sky Furies (Researched at the Fusion Core).|
|<<tiddler [[IMG##New Unit: Blackhammer]]>>| 9 | New Unit: Blackhammer |Royal Guard heavy assault mech. Can use Overwatch Mode. Built from the Factory. Can attack ground and air units.|
|<<tiddler [[IMG##Nuclear Annihilation]]>>| 10 | Nuclear Annihilation |Unlocks the ability to call down a rain of Tactical Missiles followed by a Nuclear Missile. Activate Nuclear Annihilation from the top panel.|
|<<tiddler [[IMG##Psychoactive Payload]]>>| 11 | Psychoactive Payload |Contaminated Strike now Fears enemy units on impact, causing them to run around in panic.|
|<<tiddler [[IMG##New Unit: Pride of Augustgrad]]>>| 12 | New Unit: Pride of Augustgrad |Powerful Royal Guard warship. Can use Yamato Cannon and Tactical Jump. Built from the Starport. Can attack ground and air units.|
|<<tiddler [[IMG##Complete Annihilation]]>>| 13 | Complete Annihilation |Increased the number of Tactical Missiles dropped by Nuclear Annihilation from 20 to 40.|
|<<tiddler [[IMG##Advanced Royal Guard Upgrade Cache]]>>| 14 | Advanced Royal Guard Upgrade Cache |Unlocks the following upgrades:<br>Allows Emperor's Shadows to fire Tactical Missile Strikes without channeling (Researched at the Royal Academy).<br>Blackhammers grant 3 armor to units positioned beneath them (Researched at the Armory).<br>Pride of Augustgrads grant +1 attack range to nearby friendly ranged ground units (Researched at the Fusion Core).|
|<<tiddler [[IMG##Promotion Granted]]>>| 15 | Promotion Granted |Royal Guard units can now attain Rank 3, gaining the following abilities:<br>Aegis Guard can greatly increase their attack speed.<br>The Emperor's Shadow's Pyrokinetic Immolation causes an explosion with the target dies. Units take damage from the Emperor's Shadow's EMP Blast equal to the amount of energy drained.<br>Increases the Shock Division's attack's area of effect radius in Siege Mode.<br>Increases the attack speed of Blackhammers in Overwatch Mode.<br>Grants Sky Furies with a chance to evade enemy attacks in Fighter Mode. When Sky Furies take fatal damage in Assault Mode, they transform to Fighter Mode and gain a barrier.<br>Allows the Pride of Augustgrad's Yamato Cannon to fire three times in rapid succession.|
![[TECH TREE|MengskTechTree]]
| [img[https://vignette.wikia.nocookie.net/starcraft/images/7/7b/Command_Center_SC2_Rend1.jpg/revision/latest/scale-to-width-down/350?cb=20081104001909]] | <<tiddler [[Dominion Laborer]]>> | <<tiddler [[Dominion Trooper]]>> |
| [img[https://vignette.wikia.nocookie.net/starcraft/images/4/47/SC2EngineeringBay.jpg/revision/latest/scale-to-width-down/350?cb=20180505111608]] | | <<tiddler MengskEngineeringBay>> |
| [img[https://vignette.wikia.nocookie.net/starcraft/images/7/78/Barracks_SC2_Game1.jpg/revision/latest/scale-to-width-down/350?cb=20080629230915]] | <<tiddler [[Aegis Guard]]>> | <<tiddler [[Emperor's Shadow]]>> |
| [img[https://vignette.wikia.nocookie.net/starcraft/images/9/96/ShadowOps_SC2_Rend1.jpg/revision/latest/scale-to-width-down/350?cb=20100818210857]] || <<tiddler MengskRoyalAcademy>> |
| [img[https://vignette.wikia.nocookie.net/starcraft/images/8/8f/Factory_SC2_Game1.jpg/revision/latest/scale-to-width-down/350?cb=20080630035038]] | <<tiddler [[Shock Division]]>> | <<tiddler [[Blackhammer]]>> |
| [img[https://vignette.wikia.nocookie.net/starcraft/images/b/ba/Armory_SC2_Rend1.jpg/revision/latest/scale-to-width-down/350?cb=20100716232157]]|| <<tiddler MengskArmory>> |
| [img[https://vignette.wikia.nocookie.net/starcraft/images/2/25/Starport_SC2_DevRend2.jpg/revision/latest/scale-to-width-down/350?cb=20080629223825]] | <<tiddler [[Imperial Intercessor]]>> | <<tiddler [[Imperial Witness]]>> |
|~| <<tiddler [[Sky Fury]]>> | <<tiddler [[Pride of Augustgrad]]>> |
| [img[https://vignette.wikia.nocookie.net/starcraft/images/7/75/FusionCore_SC2_Rend1.jpg/revision/latest/scale-to-width-down/350?cb=20100716232527]]|| <<tiddler MengskFusionCore>> |
![[UNITS|MengskUnitsTab]]<<editTiddler MengskUnitsTab edit>>
<<tiddler MengskUnitsTab>>
<<tiddler MengskTechTree>><<editTiddler MengskTechTree edit>>
|>|![[Conscripts|MengskUnitsTab]]| Tags | !Minerals<br><<tiddler Minerals>> | !Gas<br><<tiddler Gas>> | !Supply<br><<tiddler Supply>> | !Hit Points| !Armor | !Armor <br> Upgrade | !Sight | !Speed | !Build Time<br><<tiddler Time>> | !Weapon | Type | Upgrade | !Attacks| !Damage| !Damage <br> Upgrade | !Cooldown<br><<tiddler Time>> | !Range || !Base <br> DPS |
| <<tiddler [[IMG##Dominion Laborer]]>> | [[Dominion Laborer]] +++<<tiddler [[Dominion Laborer##Ability Card]]>>=== | Biological, Light, Mechanical | 40 | | 1 | 45 | 0/3 | Dominion Armor | 8 | 2,81 | 8 | SCV - Fusion Cutter | melee, ground | none | 1 | 5 | | 1,50 | 0,10 | | 3,33 |
| <<tiddler [[IMG##Dominion Trooper]]>> | [[Dominion Trooper]] +++<<tiddler [[MengskCommandCard##Dominion Trooper]]>>=== | Biological, Light | 40 | | 1 | 45 | 0/3 |~| 9 | 2,95 | 8 | Ferromag SMG | ranged | Dominion Weapons | 1 | 6 | 1 | 0,86 | 5,00 | | 6,97 |
| <<tiddler [[IMG##Dominion Assault Trooper]]>> | [[Dominion Assault Trooper]] +++<<tiddler [[MengskCommandCard##Dominion Assault Trooper]]>>=== | ~| 200 | | 1 | 45 | 0/3 |~| | | | B-2 High-Cal LMG | ranged|~| 1 | 12 | 1 | 0,86 | 5,00 | | 13,94 |
| <<tiddler [[IMG##Dominion Rocket Trooper]]>> | [[Dominion Rocket Trooper]] +++<<tiddler [[MengskCommandCard##Dominion Rocket Trooper]]>>=== | ~| 200 | | 1 | 45 | 0/3 |~| | | | Hailstorm Launcher | ranged, air|~| 2 | 8 | 1 | 1,50 | 10,00 | | 10,67 |
| <<tiddler [[IMG##Dominion Flame Trooper]]>> | [[Dominion Flame Trooper]] +++<<tiddler [[MengskCommandCard##Dominion Flame Trooper]]>>=== | Armored, Biological | 200 | | 1 | 145 | 1/4 |~| | | | CPO-7 Salamander Flamethrower | splash, ground|~| 1 | 16 | 2 | 1,40 | 2,00 | | 11,43 |
|~|~|~| 200 | | 1 | 145 | 1/4 |~| | | |~| vs light|~| 1 | 24 | 2 | 1,40 | 2,00 | | 17,14 |
|>|![[Royal Guards|MengskUnitsTab]]| Tags | !Minerals<br><<tiddler Minerals>> | !Gas<br><<tiddler Gas>> | !Supply<br><<tiddler Supply>> | !Hit Points| !Armor | !Armor <br> Upgrade | !Sight | !Speed | !Build Time<br><<tiddler Time>> | !Weapon | Type | Upgrade | !Attacks| !Damage| !Damage <br> Upgrade | !Cooldown<br><<tiddler Time>> | !Range || !Base <br> DPS |
| <<tiddler [[IMG##Aegis Guard]]>> | [[Aegis Guard]] +++<<tiddler [[MengskCommandCard##Aegis Guard]]>>=== | Armored, Biological | 125 | 350 | 4 | 300 | 1/4 | | 10 | 2,25 | 30 | Marauder - Punisher Grenades | ranged, ground | Rank | 1 | 20 | 5,00 | 1,50 | 6,00 | | 13,33 |
|~|~|~|~|~|4|~|~|~|~|~|~|~| vs armored|~|1 | 40 | 10,00 | 1,50 | 6,00 | | 26,67 |
| <<tiddler [[IMG##Emperor's Shadow]]>> | [[Emperor's Shadow]] +++<<tiddler [[MengskCommandCard##Emperor's Shadow]]>>=== | Biological, Psionic | 200 | 500 | 4 | 200 | 0/3 | | 11 | 2,25 | 40 | Ghost - C-10 Canister Rifle (Mengsk) | ranged|~|1 | 15 | 3,75 | 1,50 | 6,00 | | 10,00 |
| <<tiddler [[IMG##Shock Division]]>> | [[Shock Division]] +++<<tiddler [[MengskCommandCard##Shock Division]]>>=== | Armored, Mechanical | 150 | 425 | 6 | 350 | 1/4 | | 11 | 2,25 | 45 | Siege Tank - 90mm Cannons (Mengsk) | ranged, ground|~|1 | 25 | 6,25 | 1,04 | 7,00 | | 24,04 |
|~|~|~|~|~|6|~|~|~|~|2,25 |~|~| vs Armored|~|1 | 40 | 10,00 | 1,04 | 7,00 | | 38,46 |
| <<tiddler [[IMG##Shock Division Siege]]>> | [[Shock Division Siege]] +++<<tiddler [[MengskCommandCard##Shock Division Siege]]>>=== | ~|~|~|6|~|~|~|~|0,00 |~| Siege Tank - Crucio Shock Cannon (Mengsk) | ranged, ground|~|1 | 40 | 10,00 | 3,00 | 13,00 | | 13,33 |
|~|~|~|~|~|6|~|~|~|~|0,00 |~|~| vs Armored|~|1 | 70 | 17,50 | 3,00 | 13,00 | | 23,33 |
| <<tiddler [[IMG##Blackhammer]]>> | [[Blackhammer]] +++<<tiddler [[MengskCommandCard##Blackhammer]]>>=== | Armored, Massive, Mechanical | 300 | 600 | 8 | 600 | 3/6 | | 11 | 1,88 | 60 | Thor's Hammer | ranged, ground|~|2 | 45 | 11,25 | 1,28 | 7,00 | | 70,31 |
|~|~|~|~|~|8|~|~|~|~|~|~| Thor - Javelin Missile Launcher | ranged, air|~|4 | 9 | 2,25 | 3,00 | 10,00 | | 12,00 |
|~|~|~|~|~|8|~|~|~|~|~|~|~| vs light|~|4 | 18 | 4,50 | 3,00 | 10,00 | | 24,00 |
| <<tiddler [[IMG##Blackhammer Siege]]>> | [[Blackhammer Siege]] +++<<tiddler [[MengskCommandCard##Blackhammer Siege]]>>=== | ~|~|~|8|~|~|~|~|0,00 |~| Inferno Volley | ranged, air|~|1 | 8 | 2,00 | 0,34 | 18,00 | | 23,53 |
| <<tiddler [[IMG##Sky Fury]]>> | [[Sky Fury]] +++<<tiddler [[MengskCommandCard##Sky Fury]]>>=== | Armored, Mechanical | 150 | 375 | 4 | 270 | 0/3 | | 10 | 2,75 | 42 | Fighter Mode | ranged, air|~|2 | 21 | 5,25 | 2,00 | 9,00 | | 21,00 |
|~|~|~|~|~|4|~|~|~|~|~|~|~|vs massive|~|2 | 46 | 11,50 | 2,00 | 9,00 | | 46,00 |
| <<tiddler [[IMG##Sky Fury Ground]]>> | [[Sky Fury Ground]] +++<<tiddler [[MengskCommandCard##Sky Fury Ground]]>>=== | ~|~|~|4|~|~|~|~|2,25|~| Gatling Cannon | ranged, ground|~|1 | 18 | 4,50 | 1,00 | 6,00 | | 18,00 |
| <<tiddler [[IMG##Pride of Augustgrad]]>> | [[Pride of Augustgrad]] +++<<tiddler [[MengskCommandCard##Pride of Augustgrad]]>>=== | Armored, Massive, Mechanical | | | 4 | 800 | 3/6 | | | 1,88 | 90 | Battlecruiser Switcher - Laser Battery | ranged|~|1 | 9 | 2,25 | 0,23 | 6,00 | | 40,00 |
|>|![[Supports|MengskUnitsTab]]| Tags | !Minerals<br><<tiddler Minerals>> | !Gas<br><<tiddler Gas>> | !Supply<br><<tiddler Supply>> | !Hit Points| !Armor | !Armor <br> Upgrade | !Sight | !Speed | !Build Time<br><<tiddler Time>> | !Weapon | Type | Upgrade | !Attacks| !Damage| !Damage <br> Upgrade | !Cooldown<br><<tiddler Time>> | !Range || !Base <br> DPS |
| <<tiddler [[IMG##Imperial Intercessor]]>> | [[Imperial Intercessor]] +++<<tiddler [[MengskCommandCard##Imperial Intercessor]]>>=== | Armored, Mechanical | 100 | 50 | 2 | 150 | 1/4 | Dominion Armor | 11 | 2,50 | 21 | Medivac Mengsk Siege Tank Airlift | ranged, air | | 1 | 55 | | 4,50 | 13,00 | | 12,22 |
|~|~|~|~|~|2|~|~|~|~|~|~|~| vs armored | | 1 | 80 | | 4,50 | 13,00 | | 17,78 |
|~|Upgraded|~|~|~|2|~|~|~|~|~|~|Medivac Mengsk Siege Tank Airlift Improved AoE | ranged, air | | 1 | 40 | | 4,50 | 13,00 | | 8,89 |
|~|~|~|~|~|2|~|~|~|~|~|~|~| vs armored | | 1 | 70 | | 4,50 | 13,00 | | 15,56 |
| <<tiddler [[IMG##Imperial Witness]]>> | [[Imperial Witness]] +++<<tiddler [[MengskCommandCard##Imperial Witness]]>>=== | Mechanical | 100 | 100 | 2 | 350 | 1/4 | Dominion Armor | 11 | 2,25 | 30 | none | | | | 0 | | | | | |
| <<tiddler [[IMG##Imperial Witness Patriot Mode]]>> | [[Imperial Witness Patriot Mode]] +++<<tiddler [[MengskCommandCard##Imperial Witness Patriot Mode]]>>=== | ~|~|~|2|~|~|~|~| 0,00|~|~| | | | 0 | | | | | |
| <<tiddler [[IMG##Supply Bunker]]>> | [[Supply Bunker]] +++<<tiddler [[MengskCommandCard##Supply Bunker]]>>=== | Armored, Mechanical, Structure | 100 | 0 | -12 | 400/600 | 1/3 | Structure | 10 | 0,00 | 20 | | | | | 0 | | | 0/+1 | | |
| <<tiddler [[IMG##Missile Turret (Mengsk)]]>> | [[Missile Turret (Mengsk)]] +++<<tiddler [[MengskCommandCard##Missile Turret (Mengsk)]]>>=== | Armored, Mechanical, Structure | 100 | 0 | 0 | 250/450 | 0/2 | Structure | 11 | 0,00 | 25 | Longbolt Missile | ranged, air | | 2 | 12 | | 0,86 | 7,00 | | 27,88 |
| <<tiddler [[IMG##Earthsplitter Ordnance]]>> | [[Earthsplitter Ordnance]] +++<<tiddler [[MengskCommandCard##Earthsplitter Ordnance]]>>=== | Armored, Mechanical, Structure | 150 | 100 | 0 | 400/600 | 0/2 | Structure | 11 | 0,00 | 40 | Bombardment<br> Garrison 0 | splash, ground | | 1 | 100 | | 30,00 | min 7<br>max 50/75 | | 3,33 |
|~|~|~|~|~|0|~|~|~|~|~|~|Garrison 1|~| | 1 | 100 | | 15,00 | | | 6,67 |
|~|~|~|~|~|0|~|~|~|~|~|~|Garrison 2|~| | 1 | 100 | | 10,00 | | | 10,00 |
|~|~|~|~|~|0|~|~|~|~|~|~|Garrison 3|~| | 1 | 100 | | 8,00 | | | 12,50 |
|~|~|~|~|~|0|~|~|~|~|~|~|Garrison 4|~| | 1 | 100 | | 6,00 | | | 16,67 |
|>|![[Enthralled Zergs|MengskUnitsTab]]| Tags | !Minerals<br><<tiddler Minerals>> | !Gas<br><<tiddler Gas>> | !Supply<br><<tiddler Supply>> | !Hit Points| !Armor | !Armor <br> Upgrade | !Sight | !Speed | !Build Time<br><<tiddler Time>> | !Weapon | Type | Upgrade | !Attacks| !Damage| !Damage <br> Upgrade | !Cooldown<br><<tiddler Time>> | !Range || !Base <br> DPS |
| <<tiddler [[IMG##Enthralled Zergling]]>> | [[Enthralled Zergling]] +++<<tiddler [[MengskCommandCard##Enthralled Zergling]]>>=== | Biological, Light | 25 | | 0 | 35 | 0/3 | Dominion Armor | 8 | 4,70 | | Zergling Claws | melee, ground | Dominion Weapons | 1 | 5 | 1 | 0,50 | 0,10 | | 10,00 |
| <<tiddler [[IMG##Enthralled Hydralisk]]>> | [[Enthralled Hydralisk]] +++<<tiddler [[MengskCommandCard##Enthralled Hydralisk]]>>=== | Biological, Light | 100 | 50 | 0 | 80 | 0/3 | Dominion Armor | 9 | 2,95 | | Needle Spines / Melee | ranged | Dominion Weapons | 1 | 12 | 1 | 0,86 | 5,00 | | 13,95 |
| <<tiddler [[IMG##Enthralled Mutalisk]]>> | [[Enthralled Mutalisk]] +++<<tiddler [[MengskCommandCard##Enthralled Mutalisk]]>>=== | Biological, Light | 100 | 100 | 0 | 120 | 0/3 | Dominion Armor | 11 | 3,75 | | Glaive Wurm (Mengsk) | ranged (bounce) | Dominion Weapons | 1 | 9 | 1 | 1,52 | 3,00 | | 5,90 |
| <<tiddler [[IMG##Enthralled Ultralisk]]>> | [[Enthralled Ultralisk]] +++<<tiddler [[MengskCommandCard##Enthralled Ultralisk]]>>=== | Armored, Biological, Massive | 300 | 200 | 0 | 500 | 3/6 | Dominion Armor | 9 | 4,43 | | Ultralisk Mengsk - Kaiser Blades | melee, ground | Dominion Weapons | 1 | 35 | 2 | 0,86 | 1,00 | | 40,70 |
|>|![[Production/Research Facilities|MengskUnitsTab]]| Tags | !Minerals<br><<tiddler Minerals>> | !Gas<br><<tiddler Gas>> | !Supply<br><<tiddler Supply>> | !Hit Points| !Armor | !Armor <br> Upgrade | !Sight | !Speed | !Build Time<br><<tiddler Time>> | !Weapon | Type | Upgrade | !Attacks| !Damage| !Damage <br> Upgrade | !Cooldown<br><<tiddler Time>> | !Range || !Base <br> DPS |
| <<tiddler [[IMG##Enlistment Center]]>> | [[Enlistment Center]] +++<<tiddler [[Enlistment Center##Ability Card]]>>=== | Armored, Mechanical, Structure | 400 | 0 | 0 | 1500 | 1 | | 11 | 0,00 | 100 | | | | | | | | | | |
| <<tiddler [[IMG##Refinery (Mengsk)]]>> | [[Refinery (Mengsk)]] +++<<tiddler [[MengskCommandCard##Refinery (Mengsk)]]>>=== | Armored, Mechanical, Structure | 75 | 0 | 0 | 500 | 1 | | 9 | 0,00 | 30 | | | | | | | | | | |
| <<tiddler [[IMG##Barracks (Mengsk)]]>> | [[Barracks (Mengsk)]] +++<<tiddler [[MengskCommandCard##Barracks (Mengsk)]]>>=== | Armored, Mechanical, Structure | 150 | 0 | 0 | 1000 | 1 | | 9 | 0,00 | 65 | | | | | | | | | | |
| <<tiddler [[IMG##Engineering Bay (Mengsk)]]>> | [[Engineering Bay (Mengsk)]] +++<<tiddler [[MengskCommandCard##Engineering Bay (Mengsk)]]>>=== | Armored, Mechanical, Structure | 125 | 0 | 0 | 850 | 1 | | 9 | 0,00 | 35 | | | | | | | | | | |
| <<tiddler [[IMG##Royal Academy]]>> | [[Royal Academy]] +++<<tiddler [[MengskCommandCard##Royal Academy]]>>=== | Armored, Mechanical, Structure | 150 | 50 | 0 | 1250 | 1 | | 9 | 0,00 | 40 | | | | | | | | | | |
| <<tiddler [[IMG##Factory (Mengsk)]]>> | [[Factory (Mengsk)]] +++<<tiddler [[MengskCommandCard##Factory (Mengsk)]]>>=== | Armored, Mechanical, Structure | 150 | 100 | 0 | 1250 | 1 | | 9 | 0,00 | 60 | | | | | | | | | | |
| <<tiddler [[IMG##Starport (Mengsk)]]>> | [[Starport (Mengsk)]] +++<<tiddler [[MengskCommandCard##Starport (Mengsk)]]>>=== | Armored, Mechanical, Structure | 150 | 100 | 0 | 1300 | 1 | | 9 | 0,00 | 50 | | | | | | | | | | |
| <<tiddler [[IMG##Armory (Mengsk)]]>> | [[Armory (Mengsk)]] +++<<tiddler [[MengskCommandCard##Armory (Mengsk)]]>>=== | Armored, Mechanical, Structure | 150 | 100 | 0 | 750 | 1 | | 9 | 0,00 | 65 | | | | | | | | | | |
| <<tiddler [[IMG##Fusion Core (Mengsk)]]>> | [[Fusion Core (Mengsk)]] +++<<tiddler [[MengskCommandCard##Fusion Core (Mengsk)]]>>=== | Armored, Mechanical, Structure | 150 | 150 | 0 | 750 | 1 | | 9 | 0,00 | 65 | | | | | | | | | | |
/%
!info
|Name|MicroCalc|
|Source|http://www.TiddlyTools.com/#MicroCalc|
|Version|2.0.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion|
|Description|simple calculator using javascript eval() function|
Usage
<<<
{{{
<<tiddler MicroCalc>>
<<tiddler MicroCalc with: width>>
*''width'' (optional) is a CSS measurement (default=auto)
}}}
<<<
Example
>{{{<<tiddler MicroCalc with: 300px>>}}}
><<tiddler MicroCalc##show with: 300px>>
!end
!show
<html><nowiki>
<form action="javascript:;" style="width:$1;display:block;white-space:nowrap;margin:0;padding:0;"><!--
--><input name="input" value="0" style="width:70%;text-align:right;"
title="INPUT: enter a JavaScript expression, function, or object/variable name"
onfocus="this.select()"
onkeyup="if (event.keyCode==13) {this.form.go.click(); return false;}"><!--
--><input name="go" type="button" value="=" style="width:10%"
title="CALCULATE: evaluate input and display results"
onclick="var i=this.form.input; var o=this.form.output; var val=i.value; var res='';
try{res=eval(val);i.value=res}catch(e){res=e.description||e.toString()};
o.value+=(o.value.length?'\n':'')+val+'\n='+res;
o.style.display='block'; o.scrollTop=o.scrollHeight;
i.select();i.focus();"><!--
--><input name="memstore" type="button" value="m" style="width:10%"
title="MEMORY STORE: save input to temporary memory"
onclick="var f=this.form; f.memory.value=f.input.value;
f.memory.parentNode.style.display='block'"><!--
--><input name="clear" type="button" value="c" style="width:10%"
title="CLEAR: erase history and reset input"
onclick="var i=this.form.input; var o=this.form.output;
o.value='';o.style.display='none';
i.value='0';i.select();i.focus();"><!--
--><div style="display:none"><!--
--><input name="memory" value="0" style="width:70%;text-align:right;"
title="MEMORY: temporarily store input during calculations"><!--
--><input name="meminsert" type="button" value="mi" style="width:10%"
title="MEMORY INSERT: append memory value to current input"
onclick="var i=this.form.input;
i.value+=this.form.memory.value; i.select();i.focus();"><!--
--><input name="memrecall" type="button" value="mr" style="width:10%"
title="MEMORY RECALL: replace current input with memory value "
onclick="var i=this.form.input;
i.value=this.form.memory.value; i.select();i.focus();"><!--
--><input name="memclear" type="button" value="mc" style="width:10%"
title="MEMORY CLEAR: clear temporary memory"
onclick="var f=this.form; f.memory.value='0';
f.memory.parentNode.style.display='none';
f.input.select();f.input.focus();"><!--
--></div><!--
--><textarea name="output" rows=5 style="width:99%;display:none;text-align:right;"
title="HISTORY: previous inputs and calculated results"></textarea><!--
--></form></html>
!end
%/<<tiddler {{tiddler&&tiddler.title=='MicroCalc'?'MicroCalc##info':'MicroCalc##show'}}
with: {{'$1'!='$'+'1'?'$1':'auto'}}>>
Royal Guards increase Imperial Support based on their supply cost and Rank. Each point of Imperial Support generates 1 Imperial Mandate every 120 seconds.
Royal Guards increase Imperial Support based on their supply cost and Rank. Each point of Imperial Support generates 1 Imperial Mandate every 120 seconds.
Each Aegis Guard generates 4 Imperial Support.
[img[https://vignette.wikia.nocookie.net/starcraft/images/a/a3/Minerals_Terran_SC1.png/revision/latest?cb=20080313030234]]
Name: MptwBlack
Background: #000
Foreground: #fff
PrimaryPale: #333
PrimaryLight: #555
PrimaryMid: #888
PrimaryDark: #aaa
SecondaryPale: #111
SecondaryLight: #222
SecondaryMid: #555
SecondaryDark: #888
TertiaryPale: #222
TertiaryLight: #666
TertiaryMid: #888
TertiaryDark: #aaa
Error: #300
Name: MptwBlue
Background: #fff
Foreground: #000
PrimaryPale: #cdf
PrimaryLight: #57c
PrimaryMid: #114
PrimaryDark: #012
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
//{{{
// Pretty sure this is incomplete and experimental
// TODO: Fix it or remove it.
(function($){
merge(config.macros,{
mptwCollapse: {
handler: function(place,macroName,params) {
createTiddlyButton(place, params[0] == '+' ? '\u25AD' : '\u25AC', 'collapse/uncollapse', function(){
$(story.findContainingTiddler(place)).toggleClass('collapsed');
});
}
}
});
/* this doesn't work unless you have a modified ViewTempate */
config.shadowTiddlers["MptwCollapsePluginStyles"] = ""
+".collapsed .uncollapsedView { display:none; }"
+".collapsedView { display:none; }"
+".collapsed .collapsedView { display:block; }"
+".tiddler.collapsed { padding-bottom:1em; }"
+".tiddler.collapsed .title { font-size:100%; }"
;
store.addNotification("MptwCollapsePluginStyles",refreshStyles);
})(jQuery);
//}}}
/***
|Name:|MptwConfigPlugin|
|Description:|Miscellaneous tweaks used by MPTW|
|Version:|1.0a|
|Date:|27-Jun-2011|
|Source:|http://mptw.tiddlyspot.com/#MptwConfigPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#MptwConfigPlugin|
!!Note: instead of editing this you should put overrides in MptwUserConfigPlugin
***/
//{{{
var originalReadOnly = readOnly;
var originalShowBackstage = showBackstage;
config.options.chkHttpReadOnly = false; // means web visitors can experiment with your site by clicking edit
readOnly = false; // needed because the above doesn't work any more post 2.1 (??)
showBackstage = true; // show backstage for same reason
config.options.chkInsertTabs = true; // tab inserts a tab when editing a tiddler
config.views.wikified.defaultText = ""; // don't need message when a tiddler doesn't exist
config.views.editor.defaultText = ""; // don't need message when creating a new tiddler
config.options.chkSaveBackups = true; // do save backups
config.options.txtBackupFolder = 'twbackup'; // put backups in a backups folder
config.options.chkAutoSave = (window.location.protocol == "file:"); // do autosave if we're in local file
config.mptwVersion = "2.7.4";
config.macros.mptwVersion={handler:function(place){wikify(config.mptwVersion,place);}};
if (config.options.txtTheme == '')
config.options.txtTheme = 'MptwTheme';
// add to default GettingStarted
config.shadowTiddlers.GettingStarted += "\n\nSee also [[MPTW]].";
// add select theme and palette controls in default OptionsPanel
config.shadowTiddlers.OptionsPanel = config.shadowTiddlers.OptionsPanel.replace(/(\n\-\-\-\-\nAlso see \[\[AdvancedOptions\]\])/, "{{select{<<selectTheme>>\n<<selectPalette>>}}}$1");
// these are used by ViewTemplate
config.mptwDateFormat = 'DD/MM/YY';
config.mptwJournalFormat = 'Journal DD/MM/YY';
//}}}
Name: MptwGreen
Background: #fff
Foreground: #000
PrimaryPale: #9b9
PrimaryLight: #385
PrimaryMid: #031
PrimaryDark: #020
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
Name: MptwRed
Background: #fff
Foreground: #000
PrimaryPale: #eaa
PrimaryLight: #c55
PrimaryMid: #711
PrimaryDark: #500
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
|Name|MptwRounded|
|Description|Mptw Theme with some rounded corners (Firefox only)|
|ViewTemplate|MptwTheme##ViewTemplate|
|EditTemplate|MptwTheme##EditTemplate|
|PageTemplate|MptwTheme##PageTemplate|
|StyleSheet|##StyleSheet|
!StyleSheet
/*{{{*/
[[MptwTheme##StyleSheet]]
.tiddler,
.sliderPanel,
.button,
.tiddlyLink,
.tabContents
{ -moz-border-radius: 1em; }
.tab {
-moz-border-radius-topleft: 0.5em;
-moz-border-radius-topright: 0.5em;
}
#topMenu {
-moz-border-radius-bottomleft: 2em;
-moz-border-radius-bottomright: 2em;
}
/*}}}*/
Name: MptwSmoke
Background: #fff
Foreground: #000
PrimaryPale: #aaa
PrimaryLight: #777
PrimaryMid: #111
PrimaryDark: #000
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
|Name|MptwStandard|
|Description|Mptw Theme with the default TiddlyWiki PageLayout and Styles|
|ViewTemplate|MptwTheme##ViewTemplate|
|EditTemplate|MptwTheme##EditTemplate|
Name: MptwTeal
Background: #fff
Foreground: #000
PrimaryPale: #B5D1DF
PrimaryLight: #618FA9
PrimaryMid: #1a3844
PrimaryDark: #000
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #f8f8f8
TertiaryLight: #bbb
TertiaryMid: #999
TertiaryDark: #888
Error: #f88
|Name|MptwTheme|
|Description|Mptw Theme including custom PageLayout|
|PageTemplate|##PageTemplate|
|ViewTemplate|##ViewTemplate|
|EditTemplate|##EditTemplate|
|StyleSheet|##StyleSheet|
http://mptw.tiddlyspot.com/#MptwTheme ($Rev: 1829 $)
!PageTemplate
<!--{{{-->
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<!-- horizontal MainMenu -->
<div id='topMenu' refresh='content' tiddler='MainMenu'></div>
<!-- original MainMenu menu -->
<!-- <div id='mainMenu' refresh='content' tiddler='MainMenu'></div> -->
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
!ViewTemplate
<!--{{{-->
<div class="uncollapsedView">
[[MptwTheme##ViewTemplateToolbar]]
<div class="tagglyTagged" macro="tags"></div>
<div class='titleContainer'>
<span class='title' macro='view title'></span>
<span macro="miniTag"></span>
</div>
<div class='subtitle'>
(updated <span macro='view modified date {{config.mptwDateFormat?config.mptwDateFormat:"MM/0DD/YY"}}'></span>
by <span macro='view modifier link'></span>)
<!--
(<span macro='message views.wikified.createdPrompt'></span>
<span macro='view created date {{config.mptwDateFormat?config.mptwDateFormat:"MM/0DD/YY"}}'></span>)
-->
</div>
<div macro="showWhen tiddler.tags.containsAny(['css','html','pre','systemConfig']) && !tiddler.text.match('{{'+'{')">
<div class='viewer'><pre macro='view text'></pre></div>
</div>
<div macro="else">
<div class='viewer' macro='view text wikified'></div>
</div>
<div class="tagglyTagging" macro="tagglyTagging"></div>
</div>
<div class="collapsedView">
<span class='toolbar'>
<span macro='toolbar closeTiddler'></span>
<span macro='mptwCollapse +'></span>
</span>
<span class='title' macro='view title'></span>
</div>
<!--}}}-->
!ViewTemplateToolbar
<!--{{{-->
<div class='toolbar'>
<span macro="showWhenTagged systemConfig">
<span macro="toggleTag systemConfigDisable . '[[disable|systemConfigDisable]]'"></span>
</span>
<span macro="showWhenTagged systemTheme"><span macro="applyTheme"></span></span>
<span macro="showWhenTagged systemPalette"><span macro="applyPalette"></span></span>
<span macro="showWhen tiddler.tags.contains('css') || tiddler.title == 'StyleSheet'"><span macro="refreshAll"></span></span>
<span style="padding:1em;"></span>
<span macro='toolbar closeTiddler closeOthers +editTiddler deleteTiddler > fields syncing permalink references jump'></span> <span macro='newHere label:"new here"'></span>
<span macro='newJournalHere {{config.mptwJournalFormat?config.mptwJournalFormat:"MM/0DD/YY"}}'></span>
<!--span macro='mptwCollapse -'></span-->
</div>
<!--}}}-->
!EditTemplate
<!--{{{-->
<div class="toolbar" macro="toolbar +saveTiddler saveCloseTiddler closeOthers -cancelTiddler cancelCloseTiddler deleteTiddler"></div>
<div class="title" macro="view title"></div>
<div class="editLabel">Title</div><div class="editor" macro="edit title"></div>
<div macro='annotations'></div>
<div class="editLabel">Content</div><div class="editor" macro="edit text"></div>
<div class="editLabel">Tags</div><div class="editor" macro="edit tags"></div>
<div class="editorFooter"><span macro="message views.editor.tagPrompt"></span><span macro="tagChooser"></span></div>
<!--}}}-->
!StyleSheet
/*{{{*/
/* a contrasting background so I can see where one tiddler ends and the other begins */
body {
background: [[ColorPalette::TertiaryLight]];
}
/* sexy colours and font for the header */
.headerForeground {
color: [[ColorPalette::PrimaryPale]];
}
.headerShadow, .headerShadow a {
color: [[ColorPalette::PrimaryMid]];
}
/* separate the top menu parts */
.headerForeground, .headerShadow {
padding: 1em 1em 0;
}
.headerForeground, .headerShadow {
font-family: 'Trebuchet MS', sans-serif;
font-weight:bold;
}
.headerForeground .siteSubtitle {
color: [[ColorPalette::PrimaryLight]];
}
.headerShadow .siteSubtitle {
color: [[ColorPalette::PrimaryMid]];
}
/* make shadow go and down right instead of up and left */
.headerShadow {
left: 1px;
top: 1px;
}
/* prefer monospace for editing */
.editor textarea, .editor input {
font-family: 'Consolas', monospace;
background-color:[[ColorPalette::TertiaryPale]];
}
/* sexy tiddler titles */
.title {
font-size: 250%;
color: [[ColorPalette::PrimaryLight]];
font-family: 'Trebuchet MS', sans-serif;
}
/* more subtle tiddler subtitle */
.subtitle {
padding:0px;
margin:0px;
padding-left:1em;
font-size: 90%;
color: [[ColorPalette::TertiaryMid]];
}
.subtitle .tiddlyLink {
color: [[ColorPalette::TertiaryMid]];
}
/* a little bit of extra whitespace */
.viewer {
padding-bottom:3px;
}
/* don't want any background color for headings */
h1,h2,h3,h4,h5,h6 {
background-color: transparent;
color: [[ColorPalette::Foreground]];
}
/* give tiddlers 3d style border and explicit background */
.tiddler {
background: [[ColorPalette::Background]];
border-right: 2px [[ColorPalette::TertiaryMid]] solid;
border-bottom: 2px [[ColorPalette::TertiaryMid]] solid;
margin-bottom: 1em;
padding:1em 2em 2em 1.5em;
}
/* make options slider look nicer */
#sidebarOptions .sliderPanel {
border:solid 1px [[ColorPalette::PrimaryLight]];
}
/* the borders look wrong with the body background */
#sidebar .button {
border-style: none;
}
/* this means you can put line breaks in SidebarOptions for readability */
#sidebarOptions br {
display:none;
}
/* undo the above in OptionsPanel */
#sidebarOptions .sliderPanel br {
display:inline;
}
/* horizontal main menu stuff */
#displayArea {
margin: 1em 15.7em 0em 1em; /* use the freed up space */
}
#topMenu br {
display: none;
}
#topMenu {
background: [[ColorPalette::PrimaryMid]];
color:[[ColorPalette::PrimaryPale]];
}
#topMenu {
padding:2px;
}
#topMenu .button, #topMenu .tiddlyLink, #topMenu a {
margin-left: 0.5em;
margin-right: 0.5em;
padding-left: 3px;
padding-right: 3px;
color: [[ColorPalette::PrimaryPale]];
font-size: 115%;
}
#topMenu .button:hover, #topMenu .tiddlyLink:hover {
background: [[ColorPalette::PrimaryDark]];
}
/* make 2.2 act like 2.1 with the invisible buttons */
.toolbar {
visibility:hidden;
}
.selected .toolbar {
visibility:visible;
}
/* experimental. this is a little borked in IE7 with the button
* borders but worth it I think for the extra screen realestate */
.toolbar { float:right; }
/* fix for TaggerPlugin. from sb56637. improved by FND */
.popup li .tagger a {
display:inline;
}
/* makes theme selector look a little better */
#sidebarOptions .sliderPanel .select .button {
padding:0.5em;
display:block;
}
#sidebarOptions .sliderPanel .select br {
display:none;
}
/* make it print a little cleaner */
@media print {
#topMenu {
display: none ! important;
}
/* not sure if we need all the importants */
.tiddler {
border-style: none ! important;
margin:0px ! important;
padding:0px ! important;
padding-bottom:2em ! important;
}
.tagglyTagging .button, .tagglyTagging .hidebutton {
display: none ! important;
}
.headerShadow {
visibility: hidden ! important;
}
.tagglyTagged .quickopentag, .tagged .quickopentag {
border-style: none ! important;
}
.quickopentag a.button, .miniTag {
display: none ! important;
}
}
/* get user styles specified in StyleSheet */
[[StyleSheet]]
/*}}}*/
|Name|MptwTrim|
|Description|Mptw Theme with a reduced header to increase useful space|
|ViewTemplate|MptwTheme##ViewTemplate|
|EditTemplate|MptwTheme##EditTemplate|
|StyleSheet|MptwTheme##StyleSheet|
|PageTemplate|##PageTemplate|
!PageTemplate
<!--{{{-->
<!-- horizontal MainMenu -->
<div id='topMenu' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<span refresh='content' tiddler='SiteTitle' style="padding-left:1em;font-weight:bold;"></span>:
<span refresh='content' tiddler='MainMenu'></span>
</div>
<div id='sidebar'>
<div id='sidebarOptions'>
<div refresh='content' tiddler='SideBarOptions'></div>
<div style="margin-left:0.1em;"
macro='slider chkTabSliderPanel SideBarTabs {{"tabs \u00bb"}} "Show Timeline, All, Tags, etc"'></div>
</div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
/***
|Description:|A place to put your config tweaks so they aren't overwritten when you upgrade MPTW|
See http://www.tiddlywiki.org/wiki/Configuration_Options for other options you can set. In some cases where there are clashes with other plugins it might help to rename this to zzMptwUserConfigPlugin so it gets executed last.
***/
//{{{
// example: set your preferred date format
//config.mptwDateFormat = 'MM/0DD/YY';
//config.mptwJournalFormat = 'Journal MM/0DD/YY';
// example: set the theme you want to start with
//config.options.txtTheme = 'MptwRoundTheme';
// example: switch off autosave, switch on backups and set a backup folder
//config.options.chkSaveBackups = true;
//config.options.chkAutoSave = false;
//config.options.txtBackupFolder = 'backups';
// uncomment to disable 'new means new' functionality for the new journal macro
//config.newMeansNewForJournalsToo = false;
//}}}
/***
|Name|NestedSlidersPlugin|
|Source|http://www.TiddlyTools.com/#NestedSlidersPlugin|
|Documentation|http://www.TiddlyTools.com/#NestedSlidersPluginInfo|
|Version|2.4.9|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|show content in nest-able sliding/floating panels, without creating separate tiddlers for each panel's content|
!!!!!Documentation
>see [[NestedSlidersPluginInfo]]
!!!!!Configuration
<<<
<<option chkFloatingSlidersAnimate>> allow floating sliders to animate when opening/closing
>Note: This setting can cause 'clipping' problems in some versions of InternetExplorer.
>In addition, for floating slider animation to occur you must also allow animation in general (see [[AdvancedOptions]]).
<<<
!!!!!Revisions
<<<
2008.11.15 - 2.4.9 in adjustNestedSlider(), don't make adjustments if panel is marked as 'undocked' (CSS class). In onClickNestedSlider(), SHIFT-CLICK docks panel (see [[MoveablePanelPlugin]])
|please see [[NestedSlidersPluginInfo]] for additional revision details|
2005.11.03 - 1.0.0 initial public release. Thanks to RodneyGomes, GeoffSlocock, and PaulPetterson for suggestions and experiments.
<<<
!!!!!Code
***/
//{{{
version.extensions.NestedSlidersPlugin= {major: 2, minor: 4, revision: 9, date: new Date(2008,11,15)};
// options for deferred rendering of sliders that are not initially displayed
if (config.options.chkFloatingSlidersAnimate===undefined)
config.options.chkFloatingSlidersAnimate=false; // avoid clipping problems in IE
// default styles for 'floating' class
setStylesheet(".floatingPanel { position:absolute; z-index:10; padding:0.5em; margin:0em; \
background-color:#eee; color:#000; border:1px solid #000; text-align:left; }","floatingPanelStylesheet");
// if removeCookie() function is not defined by TW core, define it here.
if (window.removeCookie===undefined) {
window.removeCookie=function(name) {
document.cookie = name+'=; expires=Thu, 01-Jan-1970 00:00:01 UTC; path=/;';
}
}
config.formatters.push( {
name: "nestedSliders",
match: "\\n?\\+{3}",
terminator: "\\s*\\={3}\\n?",
lookahead: "\\n?\\+{3}(\\+)?(\\([^\\)]*\\))?(\\!*)?(\\^(?:[^\\^\\*\\@\\[\\>]*\\^)?)?(\\*)?(\\@)?(?:\\{\\{([\\w]+[\\s\\w]*)\\{)?(\\[[^\\]]*\\])?(\\[[^\\]]*\\])?(?:\\}{3})?(\\#[^:]*\\:)?(\\>)?(\\.\\.\\.)?\\s*",
handler: function(w)
{
lookaheadRegExp = new RegExp(this.lookahead,"mg");
lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = lookaheadRegExp.exec(w.source)
if(lookaheadMatch && lookaheadMatch.index == w.matchStart)
{
var defopen=lookaheadMatch[1];
var cookiename=lookaheadMatch[2];
var header=lookaheadMatch[3];
var panelwidth=lookaheadMatch[4];
var transient=lookaheadMatch[5];
var hover=lookaheadMatch[6];
var buttonClass=lookaheadMatch[7];
var label=lookaheadMatch[8];
var openlabel=lookaheadMatch[9];
var panelID=lookaheadMatch[10];
var blockquote=lookaheadMatch[11];
var deferred=lookaheadMatch[12];
// location for rendering button and panel
var place=w.output;
// default to closed, no cookie, no accesskey, no alternate text/tip
var show="none"; var cookie=""; var key="";
var closedtext=">"; var closedtip="";
var openedtext="<"; var openedtip="";
// extra "+", default to open
if (defopen) show="block";
// cookie, use saved open/closed state
if (cookiename) {
cookie=cookiename.trim().slice(1,-1);
cookie="chkSlider"+cookie;
if (config.options[cookie]==undefined)
{ config.options[cookie] = (show=="block") }
show=config.options[cookie]?"block":"none";
}
// parse label/tooltip/accesskey: [label=X|tooltip]
if (label) {
var parts=label.trim().slice(1,-1).split("|");
closedtext=parts.shift();
if (closedtext.substr(closedtext.length-2,1)=="=")
{ key=closedtext.substr(closedtext.length-1,1); closedtext=closedtext.slice(0,-2); }
openedtext=closedtext;
if (parts.length) closedtip=openedtip=parts.join("|");
else { closedtip="show "+closedtext; openedtip="hide "+closedtext; }
}
// parse alternate label/tooltip: [label|tooltip]
if (openlabel) {
var parts=openlabel.trim().slice(1,-1).split("|");
openedtext=parts.shift();
if (parts.length) openedtip=parts.join("|");
else openedtip="hide "+openedtext;
}
var title=show=='block'?openedtext:closedtext;
var tooltip=show=='block'?openedtip:closedtip;
// create the button
if (header) { // use "Hn" header format instead of button/link
var lvl=(header.length>5)?5:header.length;
var btn = createTiddlyElement(createTiddlyElement(place,"h"+lvl,null,null,null),"a",null,buttonClass,title);
btn.onclick=onClickNestedSlider;
btn.setAttribute("href","javascript:;");
btn.setAttribute("title",tooltip);
}
else
var btn = createTiddlyButton(place,title,tooltip,onClickNestedSlider,buttonClass);
btn.innerHTML=title; // enables use of HTML entities in label
// set extra button attributes
btn.setAttribute("closedtext",closedtext);
btn.setAttribute("closedtip",closedtip);
btn.setAttribute("openedtext",openedtext);
btn.setAttribute("openedtip",openedtip);
btn.sliderCookie = cookie; // save the cookiename (if any) in the button object
btn.defOpen=defopen!=null; // save default open/closed state (boolean)
btn.keyparam=key; // save the access key letter ("" if none)
if (key.length) {
btn.setAttribute("accessKey",key); // init access key
btn.onfocus=function(){this.setAttribute("accessKey",this.keyparam);}; // **reclaim** access key on focus
}
btn.setAttribute("hover",hover?"true":"false");
btn.onmouseover=function(ev) {
// optional 'open on hover' handling
if (this.getAttribute("hover")=="true" && this.sliderPanel.style.display=='none') {
document.onclick.call(document,ev); // close transients
onClickNestedSlider(ev); // open this slider
}
// mouseover on button aligns floater position with button
if (window.adjustSliderPos) window.adjustSliderPos(this.parentNode,this,this.sliderPanel);
}
// create slider panel
var panelClass=panelwidth?"floatingPanel":"sliderPanel";
if (panelID) panelID=panelID.slice(1,-1); // trim off delimiters
var panel=createTiddlyElement(place,"div",panelID,panelClass,null);
panel.button = btn; // so the slider panel know which button it belongs to
btn.sliderPanel=panel; // so the button knows which slider panel it belongs to
panel.defaultPanelWidth=(panelwidth && panelwidth.length>2)?panelwidth.slice(1,-1):"";
panel.setAttribute("transient",transient=="*"?"true":"false");
panel.style.display = show;
panel.style.width=panel.defaultPanelWidth;
panel.onmouseover=function(event) // mouseover on panel aligns floater position with button
{ if (window.adjustSliderPos) window.adjustSliderPos(this.parentNode,this.button,this); }
// render slider (or defer until shown)
w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
if ((show=="block")||!deferred) {
// render now if panel is supposed to be shown or NOT deferred rendering
w.subWikify(blockquote?createTiddlyElement(panel,"blockquote"):panel,this.terminator);
// align floater position with button
if (window.adjustSliderPos) window.adjustSliderPos(place,btn,panel);
}
else {
var src = w.source.substr(w.nextMatch);
var endpos=findMatchingDelimiter(src,"+++","===");
panel.setAttribute("raw",src.substr(0,endpos));
panel.setAttribute("blockquote",blockquote?"true":"false");
panel.setAttribute("rendered","false");
w.nextMatch += endpos+3;
if (w.source.substr(w.nextMatch,1)=="\n") w.nextMatch++;
}
}
}
}
)
function findMatchingDelimiter(src,starttext,endtext) {
var startpos = 0;
var endpos = src.indexOf(endtext);
// check for nested delimiters
while (src.substring(startpos,endpos-1).indexOf(starttext)!=-1) {
// count number of nested 'starts'
var startcount=0;
var temp = src.substring(startpos,endpos-1);
var pos=temp.indexOf(starttext);
while (pos!=-1) { startcount++; pos=temp.indexOf(starttext,pos+starttext.length); }
// set up to check for additional 'starts' after adjusting endpos
startpos=endpos+endtext.length;
// find endpos for corresponding number of matching 'ends'
while (startcount && endpos!=-1) {
endpos = src.indexOf(endtext,endpos+endtext.length);
startcount--;
}
}
return (endpos==-1)?src.length:endpos;
}
//}}}
//{{{
window.onClickNestedSlider=function(e)
{
if (!e) var e = window.event;
var theTarget = resolveTarget(e);
while (theTarget && theTarget.sliderPanel==undefined) theTarget=theTarget.parentNode;
if (!theTarget) return false;
var theSlider = theTarget.sliderPanel;
var isOpen = theSlider.style.display!="none";
// if SHIFT-CLICK, dock panel first (see [[MoveablePanelPlugin]])
if (e.shiftKey && config.macros.moveablePanel) config.macros.moveablePanel.dock(theSlider,e);
// toggle label
theTarget.innerHTML=isOpen?theTarget.getAttribute("closedText"):theTarget.getAttribute("openedText");
// toggle tooltip
theTarget.setAttribute("title",isOpen?theTarget.getAttribute("closedTip"):theTarget.getAttribute("openedTip"));
// deferred rendering (if needed)
if (theSlider.getAttribute("rendered")=="false") {
var place=theSlider;
if (theSlider.getAttribute("blockquote")=="true")
place=createTiddlyElement(place,"blockquote");
wikify(theSlider.getAttribute("raw"),place);
theSlider.setAttribute("rendered","true");
}
// show/hide the slider
if(config.options.chkAnimate && (!hasClass(theSlider,'floatingPanel') || config.options.chkFloatingSlidersAnimate))
anim.startAnimating(new Slider(theSlider,!isOpen,e.shiftKey || e.altKey,"none"));
else
theSlider.style.display = isOpen ? "none" : "block";
// reset to default width (might have been changed via plugin code)
theSlider.style.width=theSlider.defaultPanelWidth;
// align floater panel position with target button
if (!isOpen && window.adjustSliderPos) window.adjustSliderPos(theSlider.parentNode,theTarget,theSlider);
// if showing panel, set focus to first 'focus-able' element in panel
if (theSlider.style.display!="none") {
var ctrls=theSlider.getElementsByTagName("*");
for (var c=0; c<ctrls.length; c++) {
var t=ctrls[c].tagName.toLowerCase();
if ((t=="input" && ctrls[c].type!="hidden") || t=="textarea" || t=="select")
{ try{ ctrls[c].focus(); } catch(err){;} break; }
}
}
var cookie=theTarget.sliderCookie;
if (cookie && cookie.length) {
config.options[cookie]=!isOpen;
if (config.options[cookie]!=theTarget.defOpen) window.saveOptionCookie(cookie);
else window.removeCookie(cookie); // remove cookie if slider is in default display state
}
// prevent SHIFT-CLICK from being processed by browser (opens blank window... yuck!)
// prevent clicks *within* a slider button from being processed by browser
// but allow plain click to bubble up to page background (to close transients, if any)
if (e.shiftKey || theTarget!=resolveTarget(e))
{ e.cancelBubble=true; if (e.stopPropagation) e.stopPropagation(); }
Popup.remove(); // close open popup (if any)
return false;
}
//}}}
//{{{
// click in document background closes transient panels
document.nestedSliders_savedOnClick=document.onclick;
document.onclick=function(ev) { if (!ev) var ev=window.event; var target=resolveTarget(ev);
if (document.nestedSliders_savedOnClick)
var retval=document.nestedSliders_savedOnClick.apply(this,arguments);
// if click was inside a popup... leave transient panels alone
var p=target; while (p) if (hasClass(p,"popup")) break; else p=p.parentNode;
if (p) return retval;
// if click was inside transient panel (or something contained by a transient panel), leave it alone
var p=target; while (p) {
if ((hasClass(p,"floatingPanel")||hasClass(p,"sliderPanel"))&&p.getAttribute("transient")=="true") break;
p=p.parentNode;
}
if (p) return retval;
// otherwise, find and close all transient panels...
var all=document.all?document.all:document.getElementsByTagName("DIV");
for (var i=0; i<all.length; i++) {
// if it is not a transient panel, or the click was on the button that opened this panel, don't close it.
if (all[i].getAttribute("transient")!="true" || all[i].button==target) continue;
// otherwise, if the panel is currently visible, close it by clicking it's button
if (all[i].style.display!="none") window.onClickNestedSlider({target:all[i].button})
if (!hasClass(all[i],"floatingPanel")&&!hasClass(all[i],"sliderPanel")) all[i].style.display="none";
}
return retval;
};
//}}}
//{{{
// adjust floating panel position based on button position
if (window.adjustSliderPos==undefined) window.adjustSliderPos=function(place,btn,panel) {
if (hasClass(panel,"floatingPanel") && !hasClass(panel,"undocked")) {
// see [[MoveablePanelPlugin]] for use of 'undocked'
var rightEdge=document.body.offsetWidth-1;
var panelWidth=panel.offsetWidth;
var left=0;
var top=btn.offsetHeight;
if (place.style.position=="relative" && findPosX(btn)+panelWidth>rightEdge) {
left-=findPosX(btn)+panelWidth-rightEdge; // shift panel relative to button
if (findPosX(btn)+left<0) left=-findPosX(btn); // stay within left edge
}
if (place.style.position!="relative") {
var left=findPosX(btn);
var top=findPosY(btn)+btn.offsetHeight;
var p=place; while (p && !hasClass(p,'floatingPanel')) p=p.parentNode;
if (p) { left-=findPosX(p); top-=findPosY(p); }
if (left+panelWidth>rightEdge) left=rightEdge-panelWidth;
if (left<0) left=0;
}
panel.style.left=left+"px"; panel.style.top=top+"px";
}
}
//}}}
//{{{
// TW2.1 and earlier:
// hijack Slider stop handler so overflow is visible after animation has completed
Slider.prototype.coreStop = Slider.prototype.stop;
Slider.prototype.stop = function()
{ this.coreStop.apply(this,arguments); this.element.style.overflow = "visible"; }
// TW2.2+
// hijack Morpher stop handler so sliderPanel/floatingPanel overflow is visible after animation has completed
if (version.major+.1*version.minor+.01*version.revision>=2.2) {
Morpher.prototype.coreStop = Morpher.prototype.stop;
Morpher.prototype.stop = function() {
this.coreStop.apply(this,arguments);
var e=this.element;
if (hasClass(e,"sliderPanel")||hasClass(e,"floatingPanel")) {
// adjust panel overflow and position after animation
e.style.overflow = "visible";
if (window.adjustSliderPos) window.adjustSliderPos(e.parentNode,e.button,e);
}
};
}
//}}}
/***
|Name|NestedSlidersPluginInfo|
|Source|http://www.TiddlyTools.com/#NestedSlidersPlugin|
|Documentation|http://www.TiddlyTools.com/#NestedSlidersPluginInfo|
|Version|2.4.9|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|documentation|
|Description|documentation for NestedSlidersPlugin|
This plugin adds new wiki syntax for embedding 'slider' panels directly into tiddler content.
!!!!!Usage
<<<
//{{{
++++(cookiename)!!!!!^width^*@{{class{[label=key|tooltip][altlabel|alttooltip]}}}#panelID:>...
content goes here
===
//}}}
* ''"""+++""" (or """++++""") and """==="""''<br>marks the start and end of the slider definition, respectively. When the extra {{{+}}} is used, the slider will be open when initially displayed.
* ''"""(cookiename)"""''<br>saves the slider opened/closed state, and restores this state whenever the slider is re-rendered.
* ''"""! through !!!!!"""''<br>displays the slider label using a formatted headline (Hn) style instead of a button/link style
* ''"""^width^ (or just ^)"""''<br>makes the slider 'float' on top of other content rather than shifting that content downward. 'width' must be a valid CSS value (e.g., "30em", "180px", "50%", etc.). If omitted, the default width is "auto" (i.e., fit to content)
* ''"""*"""''<br>denotes "transient display": when a click occurs elsewhere in the document, the slider/floating panel will be automatically closed. This is useful for creating 'pulldown menus' that automatically go away after they are used. //Note: using SHIFT-click on a slider label will open/close that slider without triggering the automatic closing of any transient slider panels that are currently displayed, permitting ''temporary'' display of several transient panels at once.//
* ''"""@"""''<br>denotes "open on hover": the slider/floating panel will be automatically opened as soon as the mouse moves over the slider label, without requiring a click.
* ''"""{{class{[label=key|tooltip][altlabel|alttooltip]}}}"""''<br>uses label/tooltip/accesskey. """{{class{...}}}""", """=key""", """|tooltip""" and """[altlabel|alttooltip]""" are optional. 'class' is any valid CSS class name, used to style the slider label text. 'key' must be a ''single letter only''. altlabel/alttooltip specify alternative label/tooltip for use when slider/floating panel is displayed. //Note: you can use HTML syntax within the label text to include HTML entities (e.g., {{{»}}} (») or {{{►}}} (►), or even embedded images (e.g., {{{<img src="images/eric3.gif">}}}).//
* ''"""#panelID:"""''<br>defines a unique DOM element ID that is assigned to the panel element used to display the slider content. This ID can then be used later to reposition the panel using the {{{<<DOM move id>>}}} macro (see [[DOMTweaksPlugin]]), or to access/modify the panel element through use of {{{document.getElementById(...)}}}) javascript code in a plugin or inline script.
* ''""">"""''<br>automatically adds blockquote formatting to slider content
* ''"""..."""''<br>defers rendering of closed sliders until the first time they are opened.
Notes:
*You can 'nest' sliders as deep as you like (see complex nesting example below), so that expandable 'tree-like' hierarchical displays can be created.
*Deferred rendering (...) can be used to offset processing overhead until actually needed. However, this may produce unexpected results in some cases. Use with care.
* To make slider definitions easier to read and recognize when editing a tiddler, newlines immediately following the 'start slider' or preceding the 'end slider' sequences are automatically supressed so that excess whitespace is eliminated from the output.
<<<
!!!!!Examples
<<<
simple in-line slider:
{{{
+++content===
}}}
+++content===
----
use a custom label and tooltip:
{{{
+++[label|tooltip]content===
}}}
+++[label|tooltip]content===
----
content automatically blockquoted:
{{{
+++>content===
}}}
+++>content===
----
all options (except cookie) //(default open, heading, sized floater, transient, open on hover, class, label/tooltip/key, blockquoted, deferred)//
{{{
++++!!!^30em^*@{{big{[label=Z|click or press Alt-Z to open]}}}>...
content
===
}}}
++++!!!^30em^*@{{big{[label=Z|click or press Alt-Z to open]}}}>...
content
===
----
complex nesting example:
{{{
+++[get info...=I|click for information or press Alt-I]
put some general information here,
plus a floating panel with more specific info:
+++^10em^[view details...|click for details]
put some detail here, which could in turn contain a transient panel,
perhaps with a +++^25em^*[glossary definition]explaining technical terms===
===
===
}}}
+++[get info...=I|click for information or press Alt-I]
put some general information here,
plus a floating panel with more specific info:
+++^10em^[view details...|click for details]
put some detail here, which could in turn contain a transient panel,
perhaps with a +++^25em^*[glossary definition]explaining technical terms===
===
===
----
embedded image as slider button
{{{
+++[<img src=images/eric3.gif>|click me!]>
{{big{OUCH!}}}
===
}}}
+++[<img src=images/eric3.gif>|click me!]>
{{big{OUCH!}}}
===
<<<
!!!!!Revisions
<<<
2008.11.15 2.4.9 in adjustNestedSlider(), don't make adjustments if panel is marked as 'undocked' (CSS class). In onClickNestedSlider(), SHIFT-CLICK docks panel (see [[MoveablePanelPlugin]])
2008.11.13 2.4.8 in document.onclick(), if transient panel is not a sliderPanel or floatingPanel, hide it via CSS
2008.10.05 2.4.7 in onClickNestedSlider(), added try/catch around focus() call to prevent IE error if input field being focused on is currently not visible.
2008.09.07 2.4.6 added removeCookie() function for compatibility with [[CookieManagerPlugin]]
2008.06.07 2.4.5 in 'onmouseover' handler for 'open on hover' slider buttons, use call() method when invoking document.onclick function (avoids error in IE)
2008.06.07 2.4.4 changed default for chkFloatingSlidersAnimate to FALSE to avoid clipping problem on some browsers (IE). Updated Morpher hijack (again) to adjust regular sliderPanel styles as well as floatingPanel styles.
2008.05.07 2.4.3 updated Morpher hijack to adjust floatingPanel styles after animation without affecting other animated elements (i.e. popups). Also, updated adjustSliderPos() to account for scrollwidth and use core findWindowWidth().
2008.04.02 2.4.2 in onClickNestedSlider, handle clicks on elements contained //within// slider buttons (e.g., when using HTML to display an image as a slider button).
2008.04.01 2.4.1 open on hover also triggers document.onclick to close other transient sliders
2008.04.01 2.4.0 re-introduced 'open on hover' feature using "@" symbol
2008.03.26 2.3.5 in document.onclick(), if click is in popup, don't dismiss transient panel (if any)
2008.01.08 [*.*.*] plugin size reduction: documentation moved to ...Info tiddler
2007.12.28 2.3.4 added hijack for Animator.prototype.startAnimating(). Previously, the plugin code simply set the overflow to "visible" after animation. This code tweak corrects handling of elements that were styled with overflow=hidden/auto/scroll before animation by saving the overflow style and then restoring it after animation has completed.
2007.12.17 2.3.3 use hasClass() instead of direct comparison to test for "floatingPanel" class. Allows floating panels to have additional classes assigned to them (i.e., by AnimationEffectsPlugin).
2007.11.14 2.3.2 in onClickNestedSlider(), prevent SHIFT-click events from opening a new, empty browser window by setting "cancelBubble=true" and calling "stopPropagation()". Note: SHIFT-click is still processed as a normal click (i.e., it toggles the slider panel display). Also, using SHIFT-click will prevent 'transient' sliders from being automatically closed when another slider is opened, allowing you to *temporarily* display several transient sliders at once.
2007.07.26 2.3.1 in document.onclick(), propagate return value from hijacked core click handler to consume OR bubble up click as needed. Fixes "IE click disease", whereby nearly every mouse click causes a page transition.
2007.07.20 2.3.0 added syntax for setting panel ID (#panelID:). This allows individual slider panels to be repositioned within tiddler content simply by giving them a unique ID and then moving them to the desired location using the {{{<<DOM move id>>}}} macro.
2007.07.19 2.2.0 added syntax for alttext and alttip (button label and tooltip to be displayed when panel is open)
2007.07.14 2.1.2 corrected use of 'transient' attribute in IE to prevent (non-recursive) infinite loop
2007.07.12 2.1.0 replaced use of "*" for 'open/close on rollover' (which didn't work too well). "*" now indicates 'transient' panels that are automatically closed if a click occurs somewhere else in the document. This permits use of nested sliders to create nested "pulldown menus" that automatically disappear after interaction with them has been completed. Also, in onClickNestedSlider(), use "theTarget.sliderCookie", instead of "this.sliderCookie" to correct cookie state tracking when automatically dismissing transient panels.
2007.06.10 2.0.5 add check to ensure that window.adjustSliderPanel() is defined before calling it (prevents error on shutdown when mouse event handlers are still defined)
2007.05.31 2.0.4 add handling to invoke adjustSliderPanel() for onmouseover events on slider button and panel. This allows the panel position to be re-synced when the button position shifts due to changes in unrelated content above it on the page. (thanks to Harsha for bug report)
2007.03.30 2.0.3 added chkFloatingSlidersAnimate (default to FALSE), so that slider animation can be disabled independent of the overall document animation setting (avoids strange rendering and focus problems in floating panels)
2007.03.01 2.0.2 for TW2.2+, hijack Morpher.prototype.stop so that "overflow:hidden" can be reset to "overflow:visible" after animation ends
2007.03.01 2.0.1 in hijack for Slider.prototype.stop, use apply() to pass params to core function
2006.07.28 2.0.0 added custom class syntax around label/tip/key syntax: {{{{{classname{[label=key|tip]}}}}}}
2006.07.25 1.9.3 when parsing slider, save default open/closed state in button element, then in onClickNestedSlider(), if slider state matches saved default, instead of saving cookie, delete it. Significantly reduces the 'cookie overhead' when default slider states are used.
2006.06.29 1.9.2 in onClickNestedSlider(), when setting focus to first control, skip over type="hidden"
2006.06.22 1.9.1 added panel.defaultPanelWidth to save requested panel width, even after resizing has changed the style value
2006.05.11 1.9.0 added optional '^width^' syntax for floating sliders and '=key' syntax for setting an access key on a slider label
2006.05.09 1.8.0 in onClickNestedSlider(), when showing panel, set focus to first child input/textarea/select element
2006.04.24 1.7.8 in adjustSliderPos(), if floating panel is contained inside another floating panel, subtract offset of containing panel to find correct position
2006.02.16 1.7.7 corrected deferred rendering to account for use-case where show/hide state is tracked in a cookie
2006.02.15 1.7.6 in adjustSliderPos(), ensure that floating panel is positioned completely within the browser window (i.e., does not go beyond the right edge of the browser window)
2006.02.04 1.7.5 add 'var' to unintended global variable declarations to avoid FireFox 1.5.0.1 crash bug when assigning to globals
2006.01.18 1.7.4 only define adjustSliderPos() function if it has not already been provided by another plugin. This lets other plugins 'hijack' the function even when they are loaded first.
2006.01.16 1.7.3 added adjustSliderPos(place,btn,panel,panelClass) function to permit specialized logic for placement of floating panels. While it provides improved placement for many uses of floating panels, it exhibits a relative offset positioning error when used within *nested* floating panels. Short-term workaround is to only adjust the position for 'top-level' floaters.
2006.01.16 1.7.2 added button property to slider panel elements so that slider panel can tell which button it belongs to. Also, re-activated and corrected animation handling so that nested sliders aren't clipped by hijacking Slider.prototype.stop so that "overflow:hidden" can be reset to "overflow:visible" after animation ends
2006.01.14 1.7.1 added optional "^" syntax for floating panels. Defines new CSS class, ".floatingPanel", as an alternative for standard in-line ".sliderPanel" styles.
2006.01.14 1.7.0 added optional "*" syntax for rollover handling to show/hide slider without requiring a click (Based on a suggestion by tw4efl)
2006.01.03 1.6.2 When using optional "!" heading style, instead of creating a clickable "Hn" element, create an "A" element inside the "Hn" element. (allows click-through in SlideShowPlugin, which captures nearly all click events, except for hyperlinks)
2005.12.15 1.6.1 added optional "..." syntax to invoke deferred ('lazy') rendering for initially hidden sliders
removed checkbox option for 'global' application of lazy sliders
2005.11.25 1.6.0 added optional handling for 'lazy sliders' (deferred rendering for initially hidden sliders)
2005.11.21 1.5.1 revised regular expressions: if present, a single newline //preceding// and/or //following// a slider definition will be suppressed so start/end syntax can be place on separate lines in the tiddler 'source' for improved readability. Similarly, any whitespace (newlines, tabs, spaces, etc.) trailing the 'start slider' syntax or preceding the 'end slider' syntax is also suppressed.
2005.11.20 1.5.0 added (cookiename) syntax for optional tracking and restoring of slider open/close state
2005.11.11 1.4.0 added !!!!! syntax to render slider label as a header (Hn) style instead of a button/link style
2005.11.07 1.3.0 removed alternative syntax {{{(((}}} and {{{)))}}} (so they can be used by other formatting extensions) and simplified/improved regular expressions to trim multiple excess newlines
2005.11.05 1.2.1 changed name to NestedSlidersPlugin
2005.11.04 1.2.0 added alternative character-mode syntax {{{(((}}} and {{{)))}}}
tweaked "eat newlines" logic for line-mode {{{+++}}} and {{{===}}} syntax
2005.11.03 1.1.1 fixed toggling of default tooltips ("more..." and "less...") when a non-default button label is used. code cleanup, added documentation
2005.11.03 1.1.0 changed delimiter syntax from {{{(((}}} and {{{)))}}} to {{{+++}}} and {{{===}}}. changed name to EasySlidersPlugin
2005.11.03 1.0.0 initial public release
<<<
/***
|Name:|NewHerePlugin|
|Description:|Creates the new here and new journal macros|
|Version:|3.0a|
|Date:|27-Jun-2011|
|Source:|http://mptw.tiddlyspot.com/#NewHerePlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License|http://mptw.tiddlyspot.com/#TheBSDLicense|
***/
//{{{
merge(config.macros, {
newHere: {
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
wikify("<<newTiddler "+paramString+" tag:[["+tiddler.title+"]]>>",place,null,tiddler);
}
},
newJournalHere: {
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
wikify("<<newJournal "+paramString+" tag:[["+tiddler.title+"]]>>",place,null,tiddler);
}
}
});
//}}}
/***
|Name:|NewMeansNewPlugin|
|Description:|If 'New Tiddler' already exists then create 'New Tiddler (1)' and so on|
|Version:|1.1.1a|
|Date:|27-Jun-2011|
|Source:|http://mptw.tiddlyspot.com/empty.html#NewMeansNewPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License|http://mptw.tiddlyspot.com/#TheBSDLicense|
!!Note: I think this should be in the core
***/
//{{{
// change this or set config.newMeansNewForJournalsToo it in MptwUuserConfigPlugin
if (config.newMeansNewForJournalsToo == undefined) config.newMeansNewForJournalsToo = true;
String.prototype.getNextFreeName = function() {
numberRegExp = / \(([0-9]+)\)$/;
var match = numberRegExp.exec(this);
if (match) {
var num = parseInt(match[1]) + 1;
return this.replace(numberRegExp," ("+num+")");
}
else {
return this + " (1)";
}
}
config.macros.newTiddler.checkForUnsaved = function(newName) {
var r = false;
story.forEachTiddler(function(title,element) {
if (title == newName)
r = true;
});
return r;
}
config.macros.newTiddler.getName = function(newName) {
while (store.getTiddler(newName) || config.macros.newTiddler.checkForUnsaved(newName))
newName = newName.getNextFreeName();
return newName;
}
config.macros.newTiddler.onClickNewTiddler = function()
{
var title = this.getAttribute("newTitle");
if(this.getAttribute("isJournal") == "true") {
title = new Date().formatString(title.trim());
}
// ---- these three lines should be the only difference between this and the core onClickNewTiddler
if (config.newMeansNewForJournalsToo || this.getAttribute("isJournal") != "true")
title = config.macros.newTiddler.getName(title);
var params = this.getAttribute("params");
var tags = params ? params.split("|") : [];
var focus = this.getAttribute("newFocus");
var template = this.getAttribute("newTemplate");
var customFields = this.getAttribute("customFields");
if(!customFields && !store.isShadowTiddler(title))
customFields = String.encodeHashMap(config.defaultCustomFields);
story.displayTiddler(null,title,template,false,null,null);
var tiddlerElem = story.getTiddler(title);
if(customFields)
story.addCustomFields(tiddlerElem,customFields);
var text = this.getAttribute("newText");
if(typeof text == "string")
story.getTiddlerField(title,"text").value = text.format([title]);
for(var t=0;t<tags.length;t++)
story.setTiddlerTag(title,tags[t],+1);
story.focusTiddler(title,focus);
return false;
};
//}}}
!!![[Nuclear Annihilation]]
:Call down a seemingly endless barrage of Tactical Missiles followed by a Nuclear Missile.
[img[https://bnetcmsus-a.akamaihd.net/cms/page_media/R16EA7OSPDSS1572477986488.jpg]]
![[Talents|MengskTalents]]
<<tiddler [[MengskTalent##10]]>><<tiddler [[MengskTalent##13]]>>
Laborers and Troopers are delivered directly to the Enlistment Center's Rally Points.
Engineering Bay: 100 <<tiddler Minerals>> / 100 <<tiddler Gas>> / 60 <<tiddler Time>>
/***
|<html><a name="Top"/></html>''Name:''|PartTiddlerPlugin|
|''Version:''|1.0.10 (2011-05-23)|
|''Source:''|http://tiddlywiki.abego-software.de/#PartTiddlerPlugin|
|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|
|''Licence:''|[[BSD open source license]]|
|''CoreVersion:''|2.1.3|
|''Browser:''|Firefox 1.0.4+; InternetExplorer 6.0|
!Table of Content<html><a name="TOC"/></html>
* <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Description',null, event)">Description, Syntax</a></html>
* <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Applications',null, event)">Applications</a></html>
** <html><a href="javascript:;" onclick="window.scrollAnchorVisible('LongTiddler',null, event)">Refering to Paragraphs of a Longer Tiddler</a></html>
** <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Citation',null, event)">Citation Index</a></html>
** <html><a href="javascript:;" onclick="window.scrollAnchorVisible('TableCells',null, event)">Creating "multi-line" Table Cells</a></html>
** <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Tabs',null, event)">Creating Tabs</a></html>
** <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Sliders',null, event)">Using Sliders</a></html>
* <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Revisions',null, event)">Revision History</a></html>
* <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Code',null, event)">Code</a></html>
!Description<html><a name="Description"/></html>
With the {{{<part aPartName> ... </part>}}} feature you can structure your tiddler text into separate (named) parts.
Each part can be referenced as a "normal" tiddler, using the "//tiddlerName//''/''//partName//" syntax (e.g. "About/Features"). E.g. you may create links to the parts (e.g. {{{[[Quotes/BAX95]]}}} or {{{[[Hobbies|AboutMe/Hobbies]]}}}), use it in {{{<<tiddler...>>}}} or {{{<<tabs...>>}}} macros etc.
''Syntax:''
|>|''<part'' //partName// [''hidden''] ''>'' //any tiddler content// ''</part>''|
|//partName//|The name of the part. You may reference a part tiddler with the combined tiddler name "//nameOfContainerTidder//''/''//partName//. <<br>>If you use a partName containing spaces you need to quote it (e.g. {{{"Major Overview"}}} or {{{[[Shortcut List]]}}}).|
|''hidden''|When defined the content of the part is not displayed in the container tiddler. But when the part is explicitly referenced (e.g. in a {{{<<tiddler...>>}}} macro or in a link) the part's content is displayed.|
|<html><i>any tiddler content</i></html>|<html>The content of the part.<br>A part can have any content that a "normal" tiddler may have, e.g. you may use all the formattings and macros defined.</html>|
|>|~~Syntax formatting: Keywords in ''bold'', optional parts in [...]. 'or' means that exactly one of the two alternatives must exist.~~|
<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
!Applications<html><a name="Applications"/></html>
!!Refering to Paragraphs of a Longer Tiddler<html><a name="LongTiddler"/></html>
Assume you have written a long description in a tiddler and now you want to refer to the content of a certain paragraph in that tiddler (e.g. some definition.) Just wrap the text with a ''part'' block, give it a nice name, create a "pretty link" (like {{{[[Discussion Groups|Introduction/DiscussionGroups]]}}}) and you are done.
Notice this complements the approach to first writing a lot of small tiddlers and combine these tiddlers to one larger tiddler in a second step (e.g. using the {{{<<tiddler...>>}}} macro). Using the ''part'' feature you can first write a "classic" (longer) text that can be read "from top to bottom" and later "reuse" parts of this text for some more "non-linear" reading.
<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
!!Citation Index<html><a name="Citation"/></html>
Create a tiddler "Citations" that contains your "citations".
Wrap every citation with a part and a proper name.
''Example''
{{{
<part BAX98>Baxter, Ira D. et al: //Clone Detection Using Abstract Syntax Trees.//
in //Proc. ICSM//, 1998.</part>
<part BEL02>Bellon, Stefan: //Vergleich von Techniken zur Erkennung duplizierten Quellcodes.//
Thesis, Uni Stuttgart, 2002.</part>
<part DUC99>Ducasse, St�fane et al: //A Language Independent Approach for Detecting Duplicated Code.//
in //Proc. ICSM//, 1999.</part>
}}}
You may now "cite" them just by using a pretty link like {{{[[Citations/BAX98]]}}} or even more pretty, like this {{{[[BAX98|Citations/BAX98]]}}}.
<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
!!Creating "multi-line" Table Cells<html><a name="TableCells"/></html>
You may have noticed that it is hard to create table cells with "multi-line" content. E.g. if you want to create a bullet list inside a table cell you cannot just write the bullet list
{{{
* Item 1
* Item 2
* Item 3
}}}
into a table cell (i.e. between the | ... | bars) because every bullet item must start in a new line but all cells of a table row must be in one line.
Using the ''part'' feature this problem can be solved. Just create a hidden part that contains the cells content and use a {{{<<tiddler >>}}} macro to include its content in the table's cell.
''Example''
{{{
|!Subject|!Items|
|subject1|<<tiddler ./Cell1>>|
|subject2|<<tiddler ./Cell2>>|
<part Cell1 hidden>
* Item 1
* Item 2
* Item 3
</part>
...
}}}
Notice that inside the {{{<<tiddler ...>>}}} macro you may refer to the "current tiddler" using the ".".
BTW: The same approach can be used to create bullet lists with items that contain more than one line.
<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
!!Creating Tabs<html><a name="Tabs"/></html>
The build-in {{{<<tabs ...>>}}} macro requires that you defined an additional tiddler for every tab it displays. When you want to have "nested" tabs you need to define a tiddler for the "main tab" and one for every tab it contains. I.e. the definition of a set of tabs that is visually displayed at one place is distributed across multiple tiddlers.
With the ''part'' feature you can put the complete definition in one tiddler, making it easier to keep an overview and maintain the tab sets.
''Example''
The standard tabs at the sidebar are defined by the following eight tiddlers:
* SideBarTabs
* TabAll
* TabMore
* TabMoreMissing
* TabMoreOrphans
* TabMoreShadowed
* TabTags
* TabTimeline
Instead of these eight tiddlers one could define the following SideBarTabs tiddler that uses the ''part'' feature:
{{{
<<tabs txtMainTab
Timeline Timeline SideBarTabs/Timeline
All 'All tiddlers' SideBarTabs/All
Tags 'All tags' SideBarTabs/Tags
More 'More lists' SideBarTabs/More>>
<part Timeline hidden><<timeline>></part>
<part All hidden><<list all>></part>
<part Tags hidden><<allTags>></part>
<part More hidden><<tabs txtMoreTab
Missing 'Missing tiddlers' SideBarTabs/Missing
Orphans 'Orphaned tiddlers' SideBarTabs/Orphans
Shadowed 'Shadowed tiddlers' SideBarTabs/Shadowed>></part>
<part Missing hidden><<list missing>></part>
<part Orphans hidden><<list orphans>></part>
<part Shadowed hidden><<list shadowed>></part>
}}}
Notice that you can easily "overwrite" individual parts in separate tiddlers that have the full name of the part.
E.g. if you don't like the classic timeline tab but only want to see the 100 most recent tiddlers you could create a tiddler "~SideBarTabs/Timeline" with the following content:
{{{
<<forEachTiddler
sortBy 'tiddler.modified' descending
write '(index < 100) ? "* [["+tiddler.title+"]]\n":""'>>
}}}
<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
!!Using Sliders<html><a name="Sliders"/></html>
Very similar to the build-in {{{<<tabs ...>>}}} macro (see above) the {{{<<slider ...>>}}} macro requires that you defined an additional tiddler that holds the content "to be slid". You can avoid creating this extra tiddler by using the ''part'' feature
''Example''
In a tiddler "About" we may use the slider to show some details that are documented in the tiddler's "Details" part.
{{{
...
<<slider chkAboutDetails About/Details details "Click here to see more details">>
<part Details hidden>
To give you a better overview ...
</part>
...
}}}
Notice that putting the content of the slider into the slider's tiddler also has an extra benefit: When you decide you need to edit the content of the slider you can just doubleclick the content, the tiddler opens for editing and you can directly start editing the content (in the part section). In the "old" approach you would doubleclick the tiddler, see that the slider is using tiddler X, have to look for the tiddler X and can finally open it for editing. So using the ''part'' approach results in a much short workflow.
<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
!Revision history<html><a name="Revisions"/></html>
* v1.0.10 (2011-05-23)
** Adapt to TW 2.6.2 default behaviour when existing tiddlers are opened (don't select text) and fixed Firefox 4 issue. Thanks to dave for reporting the issue.
* v1.0.9 (2007-07-14)
** Bugfix: Error when using the SideBarTabs example and switching between "More" and "Shadow". Thanks to cmari for reporting the issue.
* v1.0.8 (2007-06-16)
** Speeding up display of tiddlers containing multiple pard definitions. Thanks to Paco Rivi�re for reporting the issue.
** Support "./partName" syntax inside {{{<<tabs ...>>}}} macro
* v1.0.7 (2007-03-07)
** Bugfix: <<tiddler "./partName">> does not always render correctly after a refresh (e.g. like it happens when using the "Include" plugin). Thanks to Morris Gray for reporting the bug.
* v1.0.6 (2006-11-07)
** Bugfix: cannot edit tiddler when UploadPlugin by Bidix is installed. Thanks to Jos� Luis Gonz�lez Castro for reporting the bug.
* v1.0.5 (2006-03-02)
** Bugfix: Example with multi-line table cells does not work in IE6. Thanks to Paulo Soares for reporting the bug.
* v1.0.4 (2006-02-28)
** Bugfix: Shadow tiddlers cannot be edited (in TW 2.0.6). Thanks to Torsten Vanek for reporting the bug.
* v1.0.3 (2006-02-26)
** Adapt code to newly introduced Tiddler.prototype.isReadOnly() function (in TW 2.0.6). Thanks to Paulo Soares for reporting the problem.
* v1.0.2 (2006-02-05)
** Also allow other macros than the "tiddler" macro use the "." in the part reference (to refer to "this" tiddler)
* v1.0.1 (2006-01-27)
** Added Table of Content for plugin documentation. Thanks to RichCarrillo for suggesting.
** Bugfix: newReminder plugin does not work when PartTiddler is installed. Thanks to PauloSoares for reporting.
* v1.0.0 (2006-01-25)
** initial version
<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
!Code<html><a name="Code"/></html>
<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
***/
//{{{
//============================================================================
// PartTiddlerPlugin
// Ensure that the PartTiddler Plugin is only installed once.
//
if (!version.extensions.PartTiddlerPlugin) {
version.extensions.PartTiddlerPlugin = {
major: 1, minor: 0, revision: 10,
date: new Date(2011, 4, 23),
type: 'plugin',
source: "http://tiddlywiki.abego-software.de/#PartTiddlerPlugin"
};
if (!window.abego) window.abego = {};
if (version.major < 2) alertAndThrow("PartTiddlerPlugin requires TiddlyWiki 2.0 or newer.");
//============================================================================
// Common Helpers
// Looks for the next newline, starting at the index-th char of text.
//
// If there are only whitespaces between index and the newline
// the index behind the newline is returned,
// otherwise (or when no newline is found) index is returned.
//
var skipEmptyEndOfLine = function(text, index) {
var re = /(\n|[^\s])/g;
re.lastIndex = index;
var result = re.exec(text);
return (result && text.charAt(result.index) == '\n')
? result.index+1
: index;
}
//============================================================================
// Constants
var partEndOrStartTagRE = /(<\/part>)|(<part(?:\s+)((?:[^>])+)>)/mg;
var partEndTagREString = "<\\/part>";
var partEndTagString = "</part>";
//============================================================================
// Plugin Specific Helpers
// Parse the parameters inside a <part ...> tag and return the result.
//
// @return [may be null] {partName: ..., isHidden: ...}
//
var parseStartTagParams = function(paramText) {
var params = paramText.readMacroParams();
if (params.length == 0 || params[0].length == 0) return null;
var name = params[0];
var paramsIndex = 1;
var hidden = false;
if (paramsIndex < params.length) {
hidden = params[paramsIndex] == "hidden";
paramsIndex++;
}
return {
partName: name,
isHidden: hidden
};
}
// Returns the match to the next (end or start) part tag in the text,
// starting the search at startIndex.
//
// When no such tag is found null is returned, otherwise a "Match" is returned:
// [0]: full match
// [1]: matched "end" tag (or null when no end tag match)
// [2]: matched "start" tag (or null when no start tag match)
// [3]: content of start tag (or null if no start tag match)
//
var findNextPartEndOrStartTagMatch = function(text, startIndex) {
var re = new RegExp(partEndOrStartTagRE);
re.lastIndex = startIndex;
var match = re.exec(text);
return match;
}
//============================================================================
// Formatter
// Process the <part ...> ... </part> starting at (w.source, w.matchStart) for formatting.
//
// @return true if a complete part section (including the end tag) could be processed, false otherwise.
//
var handlePartSection = function(w) {
var tagMatch = findNextPartEndOrStartTagMatch(w.source, w.matchStart);
if (!tagMatch) return false;
if (tagMatch.index != w.matchStart || !tagMatch[2]) return false;
// Parse the start tag parameters
var arguments = parseStartTagParams(tagMatch[3]);
if (!arguments) return false;
// Continue processing
var startTagEndIndex = skipEmptyEndOfLine(w.source, tagMatch.index + tagMatch[0].length);
var endMatch = findNextPartEndOrStartTagMatch(w.source, startTagEndIndex);
if (endMatch && endMatch[1]) {
if (!arguments.isHidden) {
w.nextMatch = startTagEndIndex;
w.subWikify(w.output,partEndTagREString);
}
w.nextMatch = skipEmptyEndOfLine(w.source, endMatch.index + endMatch[0].length);
return true;
}
return false;
}
config.formatters.push( {
name: "part",
match: "<part\\s+[^>]+>",
handler: function(w) {
if (!handlePartSection(w)) {
w.outputText(w.output,w.matchStart,w.matchStart+w.matchLength);
}
}
} )
//============================================================================
// Extend "fetchTiddler" functionality to also recognize "part"s of tiddlers
// as tiddlers.
var currentParent = null; // used for the "." parent (e.g. in the "tiddler" macro)
// Return the match to the first <part ...> tag of the text that has the
// requrest partName.
//
// @return [may be null]
//
var findPartStartTagByName = function(text, partName) {
var i = 0;
while (true) {
var tagMatch = findNextPartEndOrStartTagMatch(text, i);
if (!tagMatch) return null;
if (tagMatch[2]) {
// Is start tag
// Check the name
var arguments = parseStartTagParams(tagMatch[3]);
if (arguments && arguments.partName == partName) {
return tagMatch;
}
}
i = tagMatch.index+tagMatch[0].length;
}
}
// Return the part "partName" of the given parentTiddler as a "readOnly" Tiddler
// object, using fullName as the Tiddler's title.
//
// All remaining properties of the new Tiddler (tags etc.) are inherited from
// the parentTiddler.
//
// @return [may be null]
//
var getPart = function(parentTiddler, partName, fullName) {
var text = parentTiddler.text;
var startTag = findPartStartTagByName(text, partName);
if (!startTag) return null;
var endIndexOfStartTag = skipEmptyEndOfLine(text, startTag.index+startTag[0].length);
var indexOfEndTag = text.indexOf(partEndTagString, endIndexOfStartTag);
if (indexOfEndTag >= 0) {
var partTiddlerText = text.substring(endIndexOfStartTag,indexOfEndTag);
var partTiddler = new Tiddler();
partTiddler.set(
fullName,
partTiddlerText,
parentTiddler.modifier,
parentTiddler.modified,
parentTiddler.tags,
parentTiddler.created);
partTiddler.abegoIsPartTiddler = true;
return partTiddler;
}
return null;
}
// Hijack the store.fetchTiddler to recognize the "part" addresses.
//
var hijackFetchTiddler = function() {
var oldFetchTiddler = store.fetchTiddler ;
store.fetchTiddler = function(title) {
var result = oldFetchTiddler.apply(this, arguments);
if (!result && title) {
var i = title.lastIndexOf('/');
if (i > 0) {
var parentName = title.substring(0, i);
var partName = title.substring(i+1);
var parent = (parentName == ".")
? store.resolveTiddler(currentParent)
: oldFetchTiddler.apply(this, [parentName]);
if (parent) {
return getPart(parent, partName, parent.title+"/"+partName);
}
}
}
return result;
};
};
// for debugging the plugin is not loaded through the systemConfig mechanism but via a script tag.
// At that point in the "store" is not yet defined. In that case hijackFetchTiddler through the restart function.
// Otherwise hijack now.
if (!store) {
var oldRestartFunc = restart;
window.restart = function() {
hijackFetchTiddler();
oldRestartFunc.apply(this,arguments);
};
} else
hijackFetchTiddler();
// The user must not edit a readOnly/partTiddler
//
config.commands.editTiddler.oldIsReadOnlyFunction = Tiddler.prototype.isReadOnly;
Tiddler.prototype.isReadOnly = function() {
// Tiddler.isReadOnly was introduced with TW 2.0.6.
// For older version we explicitly check the global readOnly flag
if (config.commands.editTiddler.oldIsReadOnlyFunction) {
if (config.commands.editTiddler.oldIsReadOnlyFunction.apply(this, arguments)) return true;
} else {
if (readOnly) return true;
}
return this.abegoIsPartTiddler;
}
config.commands.editTiddler.handler_PartTiddlerPlugin = config.commands.editTiddler.handler;
config.commands.editTiddler.handler = function(event,src,title)
{
var t = store.getTiddler(title);
// Edit the tiddler if it either is not a tiddler (but a shadowTiddler)
// or the tiddler is not readOnly
if(!t || !t.abegoIsPartTiddler)
{
return config.commands.editTiddler.handler_PartTiddlerPlugin(event,src,title);
}
return false;
}
// To allow the "./partName" syntax in macros we need to hijack
// the invokeMacro to define the "currentParent" while it is running.
//
var oldInvokeMacro = window.invokeMacro;
function myInvokeMacro(place,macro,params,wikifier,tiddler) {
var oldCurrentParent = currentParent;
if (tiddler) currentParent = tiddler;
try {
oldInvokeMacro.apply(this, arguments);
} finally {
currentParent = oldCurrentParent;
}
}
window.invokeMacro = myInvokeMacro;
// To correctly support the "./partName" syntax while refreshing we need to hijack
// the config.refreshers.tiddlers to define the "currentParent" while it is running.
//
(function() {
var oldTiddlerRefresher= config.refreshers.tiddler;
config.refreshers.tiddler = function(e,changeList) {
var oldCurrentParent = currentParent;
try {
currentParent = e.getAttribute("tiddler");
return oldTiddlerRefresher.apply(this,arguments);
} finally {
currentParent = oldCurrentParent;
}
};
})();
// Support "./partName" syntax inside <<tabs ...>> macro
(function() {
var extendRelativeNames = function(e, title) {
var nodes = e.getElementsByTagName("a");
for(var i=0; i<nodes.length; i++) {
var node = nodes[i];
var s = node.getAttribute("content");
if (s && s.indexOf("./") == 0)
node.setAttribute("content",title+s.substr(1));
}
};
var oldHandler = config.macros.tabs.handler;
config.macros.tabs.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
var result = oldHandler.apply(this,arguments);
if (tiddler)
extendRelativeNames(place, tiddler.title);
return result;
};
})();
// Scroll the anchor anchorName in the viewer of the given tiddler visible.
// When no tiddler is defined use the tiddler of the target given event is used.
window.scrollAnchorVisible = function(anchorName, tiddler, evt) {
var tiddlerElem = null;
if (tiddler) {
tiddlerElem = document.getElementById(story.idPrefix + tiddler);
}
if (!tiddlerElem && evt) {
var target = resolveTarget(evt);
tiddlerElem = story.findContainingTiddler(target);
}
if (!tiddlerElem) return;
var children = tiddlerElem.getElementsByTagName("a");
for (var i = 0; i < children.length; i++) {
var child = children[i];
var name = child.getAttribute("name");
if (name == anchorName) {
var y = findPosY(child);
window.scrollTo(0,y);
return;
}
}
}
} // of "install only once"
//}}}
/***
<html><sub><a href="javascript:;" onclick="scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
!Licence and Copyright
Copyright (c) abego Software ~GmbH, 2011 ([[www.abego-software.de|http://www.abego-software.de]])
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or other
materials provided with the distribution.
Neither the name of abego Software nor the names of its contributors may be
used to endorse or promote products derived from this software without specific
prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.
<html><sub><a href="javascript:;" onclick="scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
***/
/***
|''Name:''|PasswordOptionPlugin|
|''Description:''|Extends TiddlyWiki options with non encrypted password option.|
|''Version:''|1.0.2|
|''Date:''|Apr 19, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#PasswordOptionPlugin|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0 (Beta 5)|
***/
//{{{
version.extensions.PasswordOptionPlugin = {
major: 1, minor: 0, revision: 2,
date: new Date("Apr 19, 2007"),
source: 'http://tiddlywiki.bidix.info/#PasswordOptionPlugin',
author: 'BidiX (BidiX (at) bidix (dot) info',
license: '[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D]]',
coreVersion: '2.2.0 (Beta 5)'
};
config.macros.option.passwordCheckboxLabel = "Save this password on this computer";
config.macros.option.passwordInputType = "password"; // password | text
setStylesheet(".pasOptionInput {width: 11em;}\n","passwordInputTypeStyle");
merge(config.macros.option.types, {
'pas': {
elementType: "input",
valueField: "value",
eventName: "onkeyup",
className: "pasOptionInput",
typeValue: config.macros.option.passwordInputType,
create: function(place,type,opt,className,desc) {
// password field
config.macros.option.genericCreate(place,'pas',opt,className,desc);
// checkbox linked with this password "save this password on this computer"
config.macros.option.genericCreate(place,'chk','chk'+opt,className,desc);
// text savePasswordCheckboxLabel
place.appendChild(document.createTextNode(config.macros.option.passwordCheckboxLabel));
},
onChange: config.macros.option.genericOnChange
}
});
merge(config.optionHandlers['chk'], {
get: function(name) {
// is there an option linked with this chk ?
var opt = name.substr(3);
if (config.options[opt])
saveOptionCookie(opt);
return config.options[name] ? "true" : "false";
}
});
merge(config.optionHandlers, {
'pas': {
get: function(name) {
if (config.options["chk"+name]) {
return encodeCookie(config.options[name].toString());
} else {
return "";
}
},
set: function(name,value) {config.options[name] = decodeCookie(value);}
}
});
// need to reload options to load passwordOptions
loadOptionsCookie();
/*
if (!config.options['pasPassword'])
config.options['pasPassword'] = '';
merge(config.optionsDesc,{
pasPassword: "Test password"
});
*/
//}}}
STARCRAFT II 4.11.0 PATCH NOTES
BLIZZARD ENTERTAINMENT|NOVEMBER 26, 2019
https://starcraft2.com/en-us/news/23227811
!GENERAL
New Co-op Commander and Announcer: Arcturus Mengsk
Control the battle with an iron fist as Arcturus Mengsk, the newest Co-Op Commander for StarCraft II.
Feed an endless stream of cheap troopers into the meat grinder, softening your enemies for your Royal Guard to go in for the kill.
Learn more in our blog.
!
A new Winter Announcer is now available.
16 Nation Wars 2019 team Portraits were added into the Nation Wars 2019 Complete Bundle available for purchase through Matcherino website.
MMR is now revealed on the loading screen for Master and Grandmaster players in 1v1 ladder games.
Account Management link has been added to the log in screen.
Queue up with DeepMind feature is going to be shut down with this patch.
Balance test tab is going to be disabled.
CO-OP MISSIONS
Brutal+ difficulties have been added to Co-op. These create random mutation challenges of increasing levels of difficulty. The Retry Brutal+ setting allows players to attempt a failed challenge on the same map against the same enemy unit composition. Brutal+1 can be queued with any level 15 commander through matchmaking. Brutal+2 through Brutal+6, and the Try Again setting, can only be played with a premade group.
Co-op players on Hard difficulty will now play at Faster game speed in order to better match with Brutal players.
The Ultralisk’s Frenzied ability no longer blocks mind control effects in Co-op.
Ultralisks may now walk over Zerglings, Banelings, Locusts, and Broodlings in Co-op.
VERSUS
Balance Update
Terran
Battlecruiser
Tactical Jump now stuns and puts the Battlecruiser into a 1 second vulnerability phase before it teleports. In this state, the Battlecruiser can be damaged, but Tactical Jump may not be canceled.
Yamato Cannon will no longer cancel itself if a target enters a transport or becomes cloaked/burrowed. Instead, the Yamato Cannon will miss, and the ability will go on cooldown.
Fixed an issue that if a Battlecruiser used shift to queue several commands which included Tactical Jump, it would be immune to Abduct or Interference Matrix as if it was using Tactical Jump during that time.
Fixed an issue where the Raven’s Interference Matrix and the Viper’s Abduct were causing the Battlecruiser’s Tactical Jump to go on cooldown.
Fixed an issue that displayed the opponent’s Battlecruiser’s locations on the minimap after using Tactical Jump.
Hellion/Hellbat
Infernal Pre-Igniter research cost decreased from 150/150 to 100/100.
Liberator
Advanced Ballistics upgrade moved from the Starport Tech Lab to the Fusion Core.
Advanced Ballistics upgrade now increases the range of Liberators in Defender Mode by 3, down from 4.
Medivac
Moved the Rapid Re-Ignition System upgrade from the Starport Tech Lab to the Fusion Core.
In addition to reducing the Medivac's Ignite Afterburners cooldown by 5 seconds, this upgrade will also increase the Medivac's base movement speed from 3.5 to 4.13. However, this upgrade will not affect Medivac’s movement speed during the Ignite Afterburners effect.
M.U.L.E.
Duration remains at 64 seconds.
Developer Comment: Since there are some situations where the mule duration decrease could return less minerals than before, we want to revert the mule's duration to their original 64 second value.
M.U.L.E.’s now always attempt to spawn on the side of minerals closest to a town hall.
Raven
Interference Matrix energy cost increased from 50 energy to 75 energy.
Interference Matrix duration increased from 8 seconds to 11 seconds.
Raven movement speed increased from 3.85 to 4.13.
Fixed an issue where splash damage will not properly apply to units affected by Anti-Armor missile.
Thor
High Impact Payload damage decreased from 40 (+15 vs Massive) to 25 (+10 vs Massive).
High Impact Payload weapon cooldown decreased from 1.7 to 0.9.
Zerg
Brood Lord
Broodling leash range decreased from 12 to 9.
Creep
Active Creep Tumors may no longer be canceled.
Infestor
Removed the Infested Terran ability.
New Ability: Microbial Shroud
Creates a shroud that obscures ground units below, reducing the damage they take from air units by 50%. Lasts 11 seconds. Energy cost: 100.
Cast range: 9.
Radius: 3.
New upgrade found on the Infestation Pit: Evolve Microbial Shroud
Requirement: Hive.
Research cost: 150/150.
Research duration: 79 seconds.
Updated visual effects and sounds for Microbial Shroud
Neural Parasite range decreased from 9 to 8.
Neural Parasite can no longer target Heroic units.
Lurker
Lurker Den build time decreased from 86 seconds to 57 seconds.
Lurker range decreased from 9 to 8.
New Upgrade found on the Lurker Den: Seismic Spines
Increases the Lurker’s range from 8 to 10.
Requirement: Hive.
Research cost: 150/150.
Research duration: 57 seconds.
Increased research duration of Adaptive Talons from 54 seconds to 57 seconds.
Lurkers affected by Blinding Cloud will now only fire to melee range.
Nydus Network
Nydus Worm cost increased from 50/50 to 75/75.
Summon Nydus Worm ability cooldown increased from 0 to 14.
Nydus Network and Nydus Worm initial unload delay increased from 0.18 to 0.36.
Nydus Network and Nydus Worm load period increased from 0.09 to 0.18.
Nydus Network and Nydus Worm unload period increased from 0.18 to 0.36.
Overlord
Pneumatized Carapace research cost increased from 75/75 to 100/100.
Protoss
Adept
Resonating Glaives reworked. Instead of increasing attack speed of the Adept by 45%, it will increase the attack speed of the Adept by 60% for 6 seconds after a completed Psionic Transfer.
Mothership
Time Warp now affects air units in addition to ground units and buildings.
Time Warp delay reduces from 3.57 seconds to 1.79 seconds.
Gains the Heroic Tag. Neural Parasite can no longer target Heroic units.
Fixed an issue where beam-type weapons didn’t get slowed in the Mothership’s Time Warp.
Observer
Observer movement speed decreased from 3.01 to 2.63.
Gravitic Boosters upgrade now increases movement speed by 1.31, down from 1.51.
Oracle, Sentry, Void Ray
Fixed an issue where beam attacks could deal more damage than intended.
Tempest
Kinetic Overload (anti-air) range decreased from 15 to 14.
Health increased from 150 to 200.
Shields decreased from 125 to 100.
Void Ray
New upgrade found on the Fleet Beacon: Flux Vanes
Increases the Void Ray’s movement speed from 3.5 to 4.65.
Increases the Void Ray’s acceleration from 2.8 to 3.76.
After the upgrade, the Prismatic Alignment ability will still reduce the Void Ray’s movement speed to 2.625.
Research cost: 100/100.
Research duration: 57 seconds.
Fixed an issue after getting the Flux Vanes upgrade where the Void Ray’s acceleration didn’t get reduced while using Prismatic Alignment.
Zealot
The Charge upgrade no longer provides Zealots with +8 damage on impact. Instead, it increases Zealot movement speed from 3.15 to 4.72, up from 4.13.
Maps
Introducing a new map mechanic:
Acceleration Zone Generators
Increases movement speed of ground and air units within the generated field by 35%.
Changed the color of Inhibitor Zones and Time Warp bubbles from green to red. Acceleration Zone Generators will be green.
Inhibitor Zone Generator minimap icons updated from green to red. Acceleration Zone Generator minimap icons will be green.
The center of Inhibitor and Acceleration Zone Generators are now pathable. The art was updated to reflect this.
Concord LE
Lighting status updated.
Eternal Empire LE
Fixed an issue where players could not build on certain gas geysers.
Fixed and issue where units could clip into rock doodads and become hidden.
Nightshade LE
Adjusted some mineral and gas locations at the natural, third, and fourth bases.
Updated some doodads at certain locations.
Updated the map so that units and structures are brighter and easier to see.
Winter’s Gate LE & Turbo Cruise ’84 LE
The center of the Inhibitor Zone Generators were changed to be pathable. Maps were updated to maintain the original pathing around the Inhibitor Zone Generators.
World of Sleepers LE
Changed the Rich Vespene Geysers to normal Vespene Geysers.
Zen LE
Changed the pathing near the Reaper paths so that Reapers can path properly.
Changed the location of the reduced mineral field and updated the pathing on the map to allow Terran players to wall off the natural base with 1 Command Center and 2 Supply Depots.
Fixed the heights of certain rooftops on doodad structures.
Updated grass and rock textures in the middle of the map.
BUG FIXES
Campaign
Legacy of the Void
Kerrigan’s Queens no longer attempt to place creep tumors incorrectly during the first epilogue mission.
Nova Covert Ops
Hunter-Seeker Missiles from Ravens with Special Ordinance equipped now deal splash damage.
Co-op Missions
General
Missions will now properly pick a map or commander victory line at random.
Amon’s Brood Queens should no longer autocast Ensnare on structures.
Commanders
Han & Horner
Fixed several of Han’s buildings to display her Junker adjutant.
Karax
Chrono Beam can no longer be cast on Kerrigan's resource pickups.
Kerrigan
Omega Worms can no longer prevent defeat for Kerrigan’s ally.
Raptor strain Zerglings should no longer occasionally launch themselves from Nydus Worms at great speed.
Stetmann
Fixed an issue where Jumping Mecha Baneling could overkill units.
The game performance should be much improved while large numbers of Stetellites exist on the map.
Mecha Drone hotkeys can now be set.
Mecha Banelings now count towards Zagara’s Baneling & Scourge statistic.
Gary now obeys the laws of air units.
Tychus
Tychus players can no longer gain access to additional outlaws earlier than intended.
Vorazun
Void Thrashers now properly spawn when Vorazun uses Time Stop before or as they are spawning.
Fixed an issue that caused some heroic units to not benefit from Vorazun’s Time Stop Haste mastery.
Zagara
Damage dealt by Mecha Banelings now properly count towards Zagara's Baneling & Scourge score.
Zeratul
The Artifact will move itself if its spawn location becomes unpathable.
Zeratul now properly unloads when dropped on top of large units.
Fixed an issue that caused Void Templars to fail to do damage while blinking.
Xel’Naga Watchers are now correctly affected by sight limiting mutators regardless of Artifacts collected.
Mission
Malwarfare
Fixed an issue that could cause a Suppression Tower’s minimap icon to persist indefinitely.
Fixed an issue that could cause air units to path poorly near the players’ main base.
Minor Evacuation
The Eradicator’s Rail Gun can no longer hit targets behind it.
Mist Opportunities
Harvesting Bots should no longer occasionally wander off.
Fixed an issue that could cause the bonus objectives to become invisible.
Oblivion Express
Damage is no longer sometimes ignored when attacking multiple train cars.
Scythe of Amon
New units spawned from Void Rifts are now properly affected by Polarity mutator.
Larva and Eggs will no longer die when a nearby Hatchery, Lair, or Hive is destroyed.
Temple of the Past
Fixed an issue that could cause the bonus objectives to become invisible.
Void Launch
Leviathans, Motherships, or Lokis now properly spawn in the final shuttle wave.
Mutators
Bonus AI terminals no longer become hostile to players with the Polarity mutator selected.
Amon's Dehaka no longer transforms while the Transmutation mutator is active.
Void Rift minimap icons should no longer appear very small on Low settings.
Purifier Beams should now respect the same areas that other mutators avoid.
The Concussive Attacks mutator no longer affects Frenzied targets.
Collection
The Visual indicator for the cooldown of the Ihan-Rii Disruptor's Purifier Nova ability now appears, and the cooldown animation now appears as intended.
The correct upgrade animation now appears when selecting an upgrade from the Cybernetics Core with the Forged skin applied.
User Interface
Portrait borders on the versus loading screen should now display your league on the race you are playing as instead of your highest league across all races.
Fixed a few issues where Console skins could appear as unintended in game and replays.
The multiple burrow icons in the help menu for Zerglings no longer appear in game.
The Custom lobby has been updated to prevent the screenshot button from overlapping map details text.
STARCRAFT II 4.11.2 PATCH NOTES
BLIZZARD ENTERTAINMENT|DECEMBER 6, 2019
https://starcraft2.com/en-us/news/23239991
BUG FIXES
Co-op Mission
General
Fixed an issue where Commander Mastery and Ascension levels are not gaining experience.
Commanders
!Mengsk
Fixed various tooltips and icons for the Mengsk commander.
Added missing lift off and landing sound effects from Mengsk’s structures.
The Orbital Drop Pods upgrade now affects Dominion Troopers.
Fixed an issue where Forced Conscription could be used to overshoot the intended maximum supply cap.
Contaminated Strike now deals “Spell” damage instead of “Splash” damage.
Contaminated Strike is no longer reduced by armor.
Fixed an issue where Imperials Witnesses were using the Analyze Weakness ability.
Imperial Witnesses in Patriot Mode now gain armor with Dominion armor upgrades.
The Emperor’s Shadow’s EMP Blast will no longer stun Map Bosses or Heroic units.
The Emperor’s Shadow’s EMP Blast will now correctly fully drain energy instead of only 100 energy.
Fixed an issue where the Sky Fury’s Rank 2 and 3 abilities were switched.
Fixed an issue where the Sky Fury’s Tactical Realignment button would not display its cooldown as intended.
Fixed an issue where Earthsplitter Ordnance was unlocked earlier than intended.
Level 2 and 3 Dominion weapon and armor upgrades will now obey hotkeys set in the hotkey menu.
Changed Neosteel Fortified Armor’s default hotkey to fix a conflict on the Engineering Bay.
!Versus
Zerg
Infestor
Updated the unit tooltip to account for Microbial Shroud.
Maps
Eternal Empire LE
Removed some “disallow creep” areas behind the 3rd bases.
Rotated rocks at the starting ramps to help make the wall-off areas clearer.
Fixed an issue where certain doodads didn’t accept creep on low graphics quality settings.
Heavy Artillery LE
Fixed an issue where sometimes players could not wall off the starting ramps due to their teammates starting creep spread.
Nightshade LE
Updated mineral locations at a base to help clarify the base placement location.
Fixed the map preview images to display properly.
Fixed an issue that allowed workers to get stuck after building on the Vespene Geyser at the natural base location.
Fixed the location of a tournament logo.
Simulacrum LE
Fixed an issue where certain doodads were positioned at the wrong height.
Removed a few map markers on the map that weren’t being used.
Zen LE
Fixed an issue where Reapers couldn’t cliff jump properly without left-clicking on the edge of a cliff.
Fixed an issue where Reapers weren’t taking the shortest path possible near the Reaper paths.
Adjusted the minerals at certain bases so that the closer minerals patches have more minerals than the farther mineral patches.
Removed a few map markers on the map that weren’t being used.
STARCRAFT II 4.11.3 PATCH NOTES
BLIZZARD ENTERTAINMENT|DECEMBER 17, 2019
https://starcraft2.com/en-us/news/23230078
!GENERAL
Added 4 new Console Skin rewards for registering a copy of Warcraft III: Reforged Spoils of War Edition. All of these Console Skins can be used for any race in multiplayer games.
Alliance
Horde
Scourge
Sentinels
Added 8 Portraits based on the War Chest: BlizzCon 2019 comics for players who purchased any of the War Chest: BlizzCon 2019 bundles.
Added a WCS 2019 Champion Portrait for players who purchased any of the War Chest: BlizzCon 2019 bundles.
!CO-OP MISSIONS
!General
!Brutal+
Lowered the difficulty of Brutal+1 through Brutal+5.
Brutal+1 through Brutal+4 is now capped at 3 mutators.
All Brutal+ missions are now much more heavily weighted towards having fewer mutators.
Commanders
!Mengsk
Base Imperial Mandate generation increased from 17 over 240 seconds to 40 every 240 seconds.
Imperial Support now increases Imperial Mandate generation by 1 point every 240 seconds, up from 120 seconds.
Royal Guards now generate twice the amount of Imperial Support across the board. This means they increase Imperial Mandate generation by the same amount as before.
Imperial Witnesses now gain increased vision and detection radius in Patriot Mode, matching its Indoctrinate range.
The Blackhammer’s Overwatch mode base range increased from 5 to 7.
The Blackhammer’s Overwatch mode bonus range increased from 7 to 9.
Tactical Missile build time from the Royal Academy decreased from 180 seconds to 90 seconds.
Tactical Missiles (both from Nuclear Annihilation and launched by Emperor's Shadows) damage reduced from 150(+200 vs Structures) to 150(+100 vs Structures).
The Nuclear Missile launched by Nuclear Annihilation damage reduced from 500(+500 vs Structures) to 500(+300 vs Structures).
Starting Imperial Mandate decreased from 2 Imperial Mandate per level to 1 Imperial Mandate per level. Maximum benefit decreased from 60 Imperial Mandate to 30 Imperial Mandate.
!Raynor & Amon
Yamato Cannon casting time decreased from 3 seconds to 1.5 seconds.
!Stetmann
Gary's E-Gorb, Stetellite Overcharge, and Semi-stable Mass Transportation abilities have their cooldown decreased by 25%. Super Gary no longer recharges his abilities more quickly relative to Gary.
The Mecha Infestor's UMI-C Charging Protocol's slop range increased from 5 to 23.
Mecha Roach health decreased from 110HP to 75HP.
Mecha Roach Egg health decreased from 110HP to 75HP.
Mecha Ravager health decreased from 120HP to 80HP.
Mecha Ravager Egg health decreased from 120HP to 80HP.
Stetmato Cannon casting time decreased from 3 seconds to 1.5 seconds.
Stetmato Cannon cooldown decreased from 30 seconds to 0 seconds.
The Mecha Battlecarrier Lord's max Mecha Locusceptor count increased from 4 to 6.
Build Mecha Locusceptor Egonergy cost decreased from 75 to 50.
Maximum Egonergy Pool Mastery increased from 1% per point to 2% per point. Maximum benefit increased from 30% to 60%.
!Tychus
Blaze's weapon range increased from 0.5 to 2.5.
Blaze's splash width increased from 1.6 to 2.
Blaze's splash length increased from 2.5 to 3.
Kev “Rattlesnake” West’s Moebius Agggression Blend upgrade now provides 15% additional attack speed, down from 20%.
Lt. Nikara's Restorative Burst renamed to Reinvigorate Burst. It now provides affected units with 25% increased damage.
Lt. Nikara's XM-77 Matrix Generator damage absorbed increased from 200 to 400.
Vega's Dominate ability base duration increased from 150 seconds to 240 seconds.
Vega's Moebius Psionic Motivator Gear now increases attack speed by 75%, up from 50%.
Vega's Type-88 Persuader Gear now increases Dominate's duration by 200%, up from 100%.
Medivac Pickup now cloaks units for 10 seconds, up from 5.
Medivac Pickup no longer instantly heals friendly units. Instead, it restores health over 10 seconds. If the unit takes damage during this period, both the cloaking and healing effect of Medivac Pickup will be removed.
Odin cooldown Mastery increased from 1 second per point to 2 seconds per point. Maximum benefit increased from 60 seconds to 120 seconds.
!Zeratul
Zeratul's Purity of Will trait will now grants 10 Shadow Cleave damage, 50 Shields, and 1 additional charge of Blink per Artifact found instead of 25 Shadow Cleave damage, 100 Shields, and 2 additional charges of Blink at three artifacts found.
All Legion costs increased from 500 minerals to 800 minerals.
Telbrus energy regeneration increased from 0.563 to 3.
Telbrus' Psionic Storm radius increased from 2 to 2.3.
Telbrus' Psionic Storm now recharges the shields of friendly units in addition to its current functionality.
Telbrus' Psionic Storm will now only autocast if it finds 3 valid enemies, up from 1.
Telbrus Legion number of Zealots summoned increased from 6/8/10/10 to 10/13/16/16.
Serdath energy regeneration increased from 1.125 to 3.
Zeratul's Serdath and Dark Archon Mind Control range increased from 7 to 10.
Zeratul's Serdath and Dark Archon Maelstorm range decreased from 10 to 9.
Tesseract Monolith initial charges reduced to 1.
Stasis Beam cooldown decreased from 180 to 90.
The Avatar of Form's Psionic Storm will now only autocast if it finds 3 valid enemies, up from 1.
The Avatar of Form's Psionic Blast charge time decreased from 3 seconds to 1.5 seconds.
The Avatar of Form's Summon Charged Crystals ability cooldown decreased from 30 seconds to 25 seconds.
Avatar of Essence's Evolution Aura damage reduction bonus decreased from 15% per level to 10% per level.
Update tooltip for Evolution Aura to reflect that provides a damage reduction benefit.
Tesseract Cannon cost increased from 250/0 to 400/0.
Tesseract Cannon and Tesseract Monolith's Shade Projection ability cooldown increased from 60 seconds to 120 seconds.
Tesseract Matrix now decreases Shade Projection's cooldown by 25%, down by 50%.
The Xel'Naga Ambusher's Vengeance of the Void is no longer capped on a cooldown.
The Xel'Naga Ambusher's Vengeance of the Void now deals 50% of the Ambusher's weapon damage, down from 200%.
The Xel'Naga Shieldguard's Reflection Shield cooldown increased from 60 seconds to 180 seconds.
The Xel'Naga Annihilator's level 2 Artifact ability now deals 25% of its anti-air damage as splash, down from 50%.
Avatar Cooldown Mastery increased from 2 second per point to 4 seconds per point. Maximum benefit increased from 60 seconds to 120 seconds.
Support Cooldown Mastery changed from -1 second per point to -1% per point. Maximum benefit changed from -30 seconds to -30%.
!VERSUS BALANCE CHANGES
!Adept
Resonating Glaives upgrade effects reverted. The Resonating Glaives upgrade will now increase the attack speed of Adepts by 45%.
!Infestor
Microbial Shroud radius increased from 3 to 3.5.
Microbial Shroud energy cost reduced from 100 to 75.
Removed the Hive research requirement from Microbial Shroud.
!BUG FIXES
!Co-op Missions
!General
Trains on Oblivion Express and Part & Parcel no longer completely destroy themselves when they exit the map.
!Commanders
!Mengsk
Fixed a bug where Aim-Assist Embrasure was free.
Removed a button from the Imperial Intercessor that implied it was a Detector.
The Terrible Damage mastery now interacts correctly with Nuclear Annihilation.
!Stetmann
Fixed a bug where the Deconstructive Roach-nites ability was disabled.
!Versus
Removed Infested Terrans from the help and hotkey menus.
Fixed an issue where certain upgrades were displaying incorrect names in the Observer overlays.
Fixed an issue where the Neural Parasite upgrade was replacing the Microbial Shroud upgrade displayed in the observer screen.
Updated the Fusion core description to include the Liberator and Medivac units.
Updated the Ghost Academy description to include Enhanced Shockwaves.
Fixed an issue where the Fleet Beacon didn’t mention the new upgrade for Void Rays.
Fixed an issue where Inhibitor and Acceleration Zone Generators didn’t lie flat on ramps.
Reduced the size of the center platforms for the Inhibitor and Acceleration Zone Generators.
Reduced the heights of the Inhibitor and Acceleration Zones visual effects to help improve visibility.
!Maps
!Heavy Artillery LE
Fixed an issue where the map overview image was rotated improperly.
!Simulacrum LE
Fixed an issue where a ground doodad was not flush with the terrain.
!World of Sleepers LE
Updated the lobby screenshots to account for recent changes.
!Zen LE
Fixed an issue where units could see through line of sight blockers at certain locations.
User Interface
Adjusted the position of the control group panel to center itself more on the unit selection UI for users with 16x10 or wider aspect ratios.
Adjusted the position of the APM meter in the Forged and Classic Protoss Console Skins to accommodate the new control group positioning.
Adjusted the colors in the Forged Console Skin to make it easier to understand your highlighted subgroup.
!Pirokinetic Immolation (Small Damage)
Immolates a target Biological enemy for <d ref="Behavior,GhostMengskIrradiate,Duration"/> seconds, dealing <d ref="Effect,GhostMengskIrradiateSmallDamage,Amount"/> damage per second to themselves and nearby Biological enemies.
<CAbilEffectTarget id="GhostMengskIrradiateSmallDamage">
<EditorCategories value="AbilityorEffectType:Units,Race:Terran"/>
<Effect index="0" value="GhostMengskIrradiateLM"/>
<Flags index="AllowMovement" value="1"/>
<Flags index="AutoCast" value="1"/>
<Cost>
<Vital index="Energy" value="75"/>
<Charge Link="Abil/Irradiate"/>
<Cooldown Link="Abil/Irradiate" TimeUse="5"/>
</Cost>
<TargetFilters value="Biological,Visible;Player,Ally,Neutral,Structure,Missile,Item,Stasis,Dead,Hidden,Invulnerable"/>
<Range value="10"/>
<Arc value="360"/>
<AutoCastFilters value="Biological,Visible;Player,Ally,Neutral,Structure,Missile,Destructible,Item,Stasis,Dead,Hidden,Invulnerable"/>
<AutoCastRange value="9"/>
<AutoCastValidatorArray value="NotHaveGhostMengskIrradiate"/>
<AutoCastValidatorArray value="NotHaveGhostMengskIrradiatePreMarker"/>
<AutoCastValidatorArray value="GhostMengskIrradiateMinimum3EnemyTargets"/>
<CancelableArray index="Channel" value="1"/>
<UninterruptibleArray index="Channel" value="1"/>
<AINotifyEffect value=""/>
<CmdButtonArray index="Execute" DefaultButtonFace="GhostMengskIrradiate" Requirements="UseMengskVeterancyGhostMengskLTLevel3"/>
<CmdButtonArray index="Cancel" DefaultButtonFace="Cancel"/>
</CAbilEffectTarget>
!Pirokinetic Immolation (Big Damage)
Immolates a target Biological enemy for <d ref="Behavior,GhostMengskIrradiate,Duration"/> seconds, dealing <d ref="Effect,GhostMengskIrradiateBigDamage,Amount"/> damage per second to themselves and nearby Biological enemies.
<CAbilEffectTarget id="GhostMengskIrradiateBigDamage">
<EditorCategories value="AbilityorEffectType:Units,Race:Terran"/>
<Effect index="0" value="GhostMengskIrradiateLM"/>
<Flags index="AllowMovement" value="1"/>
<Flags index="AutoCast" value="1"/>
<Cost>
<Vital index="Energy" value="75"/>
<Charge Link="Abil/Irradiate"/>
<Cooldown Link="Abil/Irradiate" TimeUse="5"/>
</Cost>
<InterruptCost>
<Charge Link="Abil/GhostMengskIrradiateSmallDamage"/>
<Cooldown Link="Abil/GhostMengskIrradiateSmallDamage"/>
</InterruptCost>
<TargetFilters value="Biological,Visible;Player,Ally,Neutral,Structure,Missile,Item,Stasis,Dead,Hidden,Invulnerable"/>
<Range value="10"/>
<Arc value="360"/>
<AutoCastFilters value="Biological,Visible;Player,Ally,Neutral,Structure,Missile,Destructible,Item,Stasis,Dead,Hidden,Invulnerable"/>
<AutoCastRange value="9"/>
<AutoCastValidatorArray value="NotHaveGhostMengskIrradiate"/>
<AutoCastValidatorArray value="NotHaveGhostMengskIrradiatePreMarker"/>
<AutoCastValidatorArray value="GhostMengskIrradiateMinimum3EnemyTargets"/>
<Marker Link="Abil/GhostMengskIrradiateSmallDamage"/>
<CancelableArray index="Channel" value="1"/>
<UninterruptibleArray index="Channel" value="1"/>
<AINotifyEffect value=""/>
<CmdButtonArray index="Execute" DefaultButtonFace="GhostMengskIrradiateBigDamage" Requirements="ShowMengskVeterancyGhostMengskGELevel3"/>
<CmdButtonArray index="Cancel" DefaultButtonFace="Cancel"/>
</CAbilEffectTarget>
!Raynor
[img[https://vignette.wikia.nocookie.net/starcraft/images/2/2a/RaynorMarineBattlecruiser_SC2-LotV_Art1.jpg/revision/latest/scale-to-width-down/200?cb=20180419043049][https://starcraft.fandom.com/wiki/Jim_Raynor_(Co-op_Missions)]]
*Recommended for players of all skill levels
*Calldown and control an elite battlecruiser, the Hyperion
*Command an infantry army with strategic support units
*Deploy units anywhere on the battlefield via drop pods
!RaynorMasteries
Masteries
*Power Set 1
**Research Resource Cost: -2% / -60%
**Speed Increases for Drop-Pod units: +2% / +60%
*Power Set 2
**Hyperion Cooldown: -4 sec / -120 sec (down to a minimum of 240 sec)
**Banshee Airstrike Cooldown: -4 sec / -120 sec (down to a minimum of 120 sec; neither of these affect the initial cooldown at the start of the mission)
*Power Set 3
**Medics Heal Additional Target: +3% / +90%
**Mech Attack Speed: +1% / +30%
!RaynorPrestige0Name
[[Renegade Commander|https://i.imgur.com/ysNM3ze.png]]
!RaynorPrestige0Posts
[img[https://vignette.wikia.nocookie.net/starcraft/images/2/2a/RaynorMarineBattlecruiser_SC2-LotV_Art1.jpg/revision/latest/window-crop/width/40/x-offset/0/y-offset/127/window-width/3000/window-height/2250?cb=20180419043049][https://starcraft2coop.com/commanders/raynor]] [img[https://tl.net/staff/Chimaron/Guides/Raynor/Raynor_LinkMini6.jpg][https://tl.net/forum/single-player/526722-co-op-commander-guide-raynor]]
!RaynorPrestige0Videos
([[1|https://www.youtube.com/watch?v=Kqn76UVjgic]])
!RaynorPrestige0Advantage
*Anti-air counter-measures
*Powerful calldowns
*Defensive ground ability
*Enhanced mineral income due to MULE use
*Spider Mines are powerful on offense and defense
*Medics can heal mechanical units, giving utility for both allies
!RaynorPrestige0Disadvantage
*Weaker early game that relies on ally and calldowns
*Very reliant on calldowns and proper timing
*Suffer from area of effect damage
*Requires good micro, macro, and hotkey use to utilize well
!RaynorPrestige1Name
Backwater Marshal
!RaynorPrestige1Posts
([[1|https://us.forums.blizzard.com/en/sc2/t/raynor-infantry-hp-prestige-is-op/13715]])
!RaynorPrestige1Videos
!RaynorPrestige1Advantage
*Biological combat units gain 100% increased life.
!RaynorPrestige1Disadvantage
*MULEs are unavailable.+++An orbital command summons one MULE via drop pod (cost 50 energy, duration 64 seconds). If the ability is targeted on a mineral patch the MULE will begin mining automatically, extracting 45 minerals per trip (SCVs extract 5 minerals per trip). The ability may be used only on areas uncovered by the fog of war.===
!RaynorPrestige2Name
Rough Rider
!RaynorPrestige2Advantage
*Afterburners additionally increases attack speed by 100%. Cooldown reduced by 50%.+++from 60s to 30s===
!RaynorPrestige2Disadvantage
*Units no longer cost less.+++ Normally Factory and Starport Mechanical units would cost 20% less vespene gas.===
*Afterburners movement speed bonus reduced to 50%.+++ Normally Afterburners doubles a unit's movement speed for 8s.===
!RaynorPrestige3Name
Rebel Raider
!RaynorPrestige3Advantage
Tech requirements for the Armory and Orbital Command have been removed (patch 5.0.3).
*The Starport no longer has tech requirements or a gas cost and its units cost 30% less gas. +++^@
|[img[https://vignette.wikia.nocookie.net/starcraft/images/2/21/Starport_SC2_Icon1.jpg/revision/latest?cb=20160107024816]]|Starport|100<<tiddler Gas>>>0<<tiddler Gas>>|
|[img[https://vignette.wikia.nocookie.net/starcraft/images/2/24/1._Viking_Fighter_Default.jpg/revision/latest/scale-to-width-down/100?cb=20200527034317]]|Viking|60<<tiddler Gas>>>42<<tiddler Gas>>|
|[img[https://vignette.wikia.nocookie.net/starcraft/images/7/71/1._Banshee_Default.jpg/revision/latest/scale-to-width-down/100?cb=20200527032129]]|Banshee|80<<tiddler Gas>>>56<<tiddler Gas>>|
|[img[https://vignette.wikia.nocookie.net/starcraft/images/2/28/1._Battlecruiser_Default.jpg/revision/latest/scale-to-width-down/100?cb=20200529020429]]|Battlecruiser|240<<tiddler Gas>>>168<<tiddler Gas>>|
===
*Vikings, Banshees and Battlecruisers increase top bar cooldown rates by 1% per supply used (100 supply worth of units basically halve the cooldown, with 200 supply it is down to one third).
!RaynorPrestige3Disadvantage
*Combat units cost 50% more minerals.+++^@
|[img[https://vignette.wikia.nocookie.net/starcraft/images/7/7e/1._Marine_Default.jpg/revision/latest/scale-to-width-down/100?cb=20200527033110]]|Marine|50<<tiddler Minerals>>>75<<tiddler Minerals>>|
|[img[https://vignette.wikia.nocookie.net/starcraft/images/9/95/Firebat_WoL.jpg/revision/latest/scale-to-width-down/100?cb=20200614024942]]|Firebat|100<<tiddler Minerals>>>150<<tiddler Minerals>>|
|[img[https://vignette.wikia.nocookie.net/starcraft/images/9/9e/Medic_WoL.jpg/revision/latest/scale-to-width-down/100?cb=20200614025003]]|Medic|75<<tiddler Minerals>>>113<<tiddler Minerals>>|
|[img[https://vignette.wikia.nocookie.net/starcraft/images/c/cc/1._Marauder_Default.jpg/revision/latest/scale-to-width-down/100?cb=20200614021446]]|Marauder|100<<tiddler Minerals>>>150<<tiddler Minerals>>|
|[img[https://vignette.wikia.nocookie.net/starcraft/images/d/da/Vulture_WoL.jpg/revision/latest/scale-to-width-down/100?cb=20200614025031]]|Vulture|75<<tiddler Minerals>>>113<<tiddler Minerals>>|
|[img[https://vignette.wikia.nocookie.net/starcraft/images/3/3e/1._Siege_Tank_-_Tank_Mode_Default.jpg/revision/latest/scale-to-width-down/100?cb=20200527033941]]|Siege Tank|150<<tiddler Minerals>>>225<<tiddler Minerals>>|
|[img[https://vignette.wikia.nocookie.net/starcraft/images/2/24/1._Viking_Fighter_Default.jpg/revision/latest/scale-to-width-down/100?cb=20200527034317]]|Viking|150<<tiddler Minerals>>>225<<tiddler Minerals>>|
|[img[https://vignette.wikia.nocookie.net/starcraft/images/7/71/1._Banshee_Default.jpg/revision/latest/scale-to-width-down/100?cb=20200527032129]]|Banshee|150<<tiddler Minerals>>>225<<tiddler Minerals>>|
|[img[https://vignette.wikia.nocookie.net/starcraft/images/2/28/1._Battlecruiser_Default.jpg/revision/latest/scale-to-width-down/100?cb=20200529020429]]|Battlecruiser|400<<tiddler Minerals>>>600<<tiddler Minerals>>|
===
!Kerrigan
[img[https://vignette.wikia.nocookie.net/starcraft/images/0/0b/KerriganHydralisk_SC2-LotV_Art1.jpg/revision/latest/scale-to-width-down/200?cb=20171122074244][https://starcraft.fandom.com/wiki/Sarah_Kerrigan_(Co-op_Missions)]]
*Recommended for players of all skill levels
*Control Kerrigan on the mission with aggressive abilities
*Lead a powerful army of the toughest Zerg units
*Use the Omega Network to besiege your foes from multiple directions
!KerriganMasteries
Masteries
*Power Set 1
**Kerrigan's Energy Regeneration: +1.5% / +45%
**Kerrigan's Attack Damage: +1 / +30
*Power Set 2
**Reduced Combat Unit Vespene Gas Cost: -1% / -30%
**Immobilization Wave Increased Damage: +3.33% / +100%
*Power Set 3
**Expeditious Evolutions: -2% / -60%
**Primary Ability Damage and Attack Speed: +1% / +30%
!KerriganPrestige0Name
[[Queen of Blades|https://i.imgur.com/9eymQFs.png]]
!KerriganPrestige0Posts
[img[https://vignette.wikia.nocookie.net/starcraft/images/0/0b/KerriganHydralisk_SC2-LotV_Art1.jpg/revision/latest/window-crop/width/40/x-offset/0/y-offset/118/window-width/3000/window-height/2250?cb=20171122074244][https://starcraft2coop.com/commanders/kerrigan]] [img[https://tl.net/staff/Chimaron/Guides/Kerrigan/Kerrigan_LinkMini.jpg][https://tl.net/forum/single-player/527054-co-op-commander-guide-kerrigan]]
!KerriganPrestige0Videos
([[1|https://www.youtube.com/watch?v=gvrsOyqzilI]])
!KerriganPrestige0Advantage
*Early offensive push
*Powerful assault hero
*Powerful ultimate ability
*Provides resources to ally
*Omega worms provide creep, mobility, & detection
!KerriganPrestige0Disadvantage
*Weak anti-air counters
*Slow ramp up time
*Hard to rebuild army
*Gas starved
!KerriganPrestige1Name
Malevolent Matriarch
!KerriganPrestige1Advantage
Malignant Creep effectiveness increased by 100%.+++Normally would be "Friendly ground units gain 30% attack speed and regenerate 1 hit point per second while on creep. Creep tumors spread creep faster and farther."===
Grants Queens full movement speed off creep.
Queens may place Creep Tumors off of creep.
Creep Tumor vision increased.
!KerriganPrestige1Disadvantage
Nydus and Omega Networks are unavailable.
!KerriganPrestige2Name
Folly of Man
!KerriganPrestige2Advantage
Kerrigan expends stacks of Fury while using Leaping Strike or Psionic Shift, striking nearby enemies for 50 damage and stunning them for 3 seconds.
!KerriganPrestige2Disadvantage
Kerrigan's Carapace generation reduced by 50%.+++ Normally Kerrigan has 30% permanant life steal, which can temporary grant her bonus life as she deals damage, to a maximum of +200 HP.=== Kerrigan's ability damage reduced by 50%.
!KerriganPrestige3Name
Desolate Queen
!KerriganPrestige3Posts
([[1|https://www.reddit.com/r/starcraft2coop/comments/hwc5y9/desolate_queen_prestige_for_kerrigan_is_awesome/]],[[2|https://www.reddit.com/r/starcraft2coop/comments/hzjghp/assimilation_aura_preventing_units_from_spawning/]],[[3|https://www.reddit.com/r/starcraft2coop/comments/i0lkq3/desolate_queen_got_silentnerfed/]])
!KerriganPrestige3Videos
!KerriganPrestige3Advantage
Assimilation Aura resource drops increased by 100%.+++from 10% to 20% the original cost=== Kerrigan gains Kinetic Blast and Crushing Grip.
!KerriganPrestige3Disadvantage
Leaping Strike and Psionic Shift are unavailable
!Artanis
[img[https://vignette.wikia.nocookie.net/starcraft/images/0/00/ArtanisZealot_SC2-LotV_Art1.jpg/revision/latest/scale-to-width-down/200?cb=20171122020426][https://starcraft.fandom.com/wiki/Artanis_(Co-op_Missions)]]
*Recommended for players of all skill levels
*Strike from high orbit with the Spear of Adun using devastating abilities
*Command Aiur units and warp your army instantly into battle
*Patch 5.0.3: Artanis now starts the game with a Power Field deployed.
!ArtanisMasteries
Masteries
*Power Set 1
**Shield Overcharge Duration and Damage Absorption: +3% / +90%
**Guardian Shell health and shield heal: +0.5% / +15%
*Power Set 2
**Energy Regeneration and Ability Cooldown reduction: +1.5% / +45%
**Speed Increase for Warped units: +2% / +60%
*Power Set 3
**Chrono Boost efficiency: +1% / +30%
**Spear of Adun starting and maximum energy: +3 / +90
!ArtanisPrestige0Name
[[Hierarch of the Daelaam|https://i.imgur.com/LjDWqcp.png]]
!ArtanisPrestige0Posts
[img[https://vignette.wikia.nocookie.net/starcraft/images/0/00/ArtanisZealot_SC2-LotV_Art1.jpg/revision/latest/window-crop/width/40/x-offset/0/y-offset/105/window-width/3000/window-height/2250?cb=20171122020426][https://starcraft2coop.com/commanders/artanis]] [img[https://tl.net/staff/Chimaron/Guides/Artanis/Artanis_LinkMini.jpg][https://tl.net/forum/single-player/527245-co-op-commander-guide-artanis]]
([[1|https://www.reddit.com/r/starcraft2coop/comments/hxkfbx/lets_talk_about_artanis_prestige_talents/]])
!ArtanisPrestige0Videos
!ArtanisPrestige0Advantage
*Power: Guardian Shell
*Potent crowd control
*Warp in units anywhere
*Reavers do good area damage
*Tempests do good single target damage
*Easy to use
!ArtanisPrestige0Disadvantage
*Low damage per second army
*Lack of mobility
*Most ground units are fairly bulky and can impede allies
*Weaker calldowns
!ArtanisPrestige1Name
Valorous Inspirator
!ArtanisPrestige1Posts
+++^*@ <<tiddler CommanderPrestigeArtanisCombatAbilities>> ===
([[1|https://www.reddit.com/r/starcraft2coop/comments/i0gnrs/prestige_specifics/]],[[2|https://www.reddit.com/r/starcraft2coop/comments/i0h5fv/does_artanis_valorous_prestige_perk_affect_reavers/]])
!ArtanisPrestige1Videos
!ArtanisPrestige1Advantage
Increase the effectiveness of all active combat unit abilities by 100%. +++^*@ <<tiddler CommanderPrestigeArtanisCombatAbilities>> ===
!ArtanisPrestige1Disadvantage
Combat units cost 30% more.
!ArtanisPrestige2Name
Nexus Legate
!ArtanisPrestige2Posts
!ArtanisPrestige2Videos
!ArtanisPrestige2Advantage
Upon use, Project Power Field warps out any of your combat units standing in an existing Power Field projection into the new location. Cooldown removed. (Trigger Speed Increase for Warped units: +2% / +60% every time)
!ArtanisPrestige2Disadvantage
Project Power Field costs 25 energy.
!ArtanisPrestige3Name
Arkship Commandant
!ArtanisPrestige3Posts
!ArtanisPrestige3Videos
!ArtanisPrestige3Advantage
Orbital Strikes warp in an Unbound Fanatic that throws off damaging energy and lasts 15 seconds. Shield Overcharge is now targeted, has its cooldown reduced by 50%, and costs 25 energy.
!ArtanisPrestige3Disadvantage
Orbital Strike costs 50 energy. Guardian Shell is disabled.
!Swann
[img[https://vignette.wikia.nocookie.net/starcraft/images/c/c7/SwannThorDrakkenDrill_SC2-LotV_Art1.jpg/revision/latest/scale-to-width-down/200?cb=20171120132309][https://starcraft.fandom.com/wiki/Rory_Swann_(Co-op_Missions)]]
*Recommended for experienced players
*Control a giant Drakken laser drill with destructive energy abilities
*Build an army of vehicles, spaceships, and turrets
!SwannMasteries
Masteries
*Power Set 1
**Concentrated Beam Width and Damage: +2% / +60% (up to a maximum of 640 damage)
**Combat Drop Duration and Health: +2% / +60% (up to a maximum of 96 sec, and 640 health)
*Power Set 2
**Immortality Protocol Cost and Cooldown Duration: -2% / -60%
**Structure Health: +2% / +60%
*Power Set 3
**Vespene Drone Cost: -3% / -90% (down to a minimum of 10 <<tiddler Minerals>>)
**Laser Drill Build Time, Upgrade Time, and Upgrade Cost : -1.5% / -45%
!SwannPrestige0Name
[[Chief Engineer|https://i.imgur.com/Q9iQxyR.png]]
!SwannPrestige0Posts
[img[https://vignette.wikia.nocookie.net/starcraft/images/c/c7/SwannThorDrakkenDrill_SC2-LotV_Art1.jpg/revision/latest/window-crop/width/40/x-offset/0/y-offset/120/window-width/3323/window-height/2492?cb=20171120132309][https://starcraft2coop.com/commanders/swann]] [img[https://tl.net/staff/Chimaron/Guides/Swann/Swann_LinkMini.jpg][https://tl.net/forum/single-player/527476-co-op-commander-guide-swann]]
!SwannPrestige0Videos
!SwannPrestige0Advantage
*Late game dominance
*Strong static defense
*Enhanced vespene income
*Hercules give High mobility
*Siege Tanks durable and do heavy damage
!SwannPrestige0Disadvantage
*Slow ramp-up time
*Hard to rebuild army
*Low laser base damage
!SwannPrestige1Name
Heavy Weapons Specialist
!SwannPrestige1Advantage
[img[https://vignette.wikia.nocookie.net/starcraft/images/e/e1/SC2_Swann_AC_-_LaserDrill.png/revision/latest/scale-to-width-down/30?cb=20151011210343]] The Laser Drill deals splash damage and slows (2/3/5 spell damage (ignore armor) every 0.1 seconds in a 1.5 area for 100% damage, -70% movement speed to main target and splash; for comparison, it has the collision size of an uprooted Primal Warden).
Laser Drill lock-on time reduced by 70% (patch 5.0.3).
!SwannPrestige1Disadvantage
The Laser Drill's abilities are unavailable.+++ [img[https://vignette.wikia.nocookie.net/starcraft/images/5/5f/ConcentratedBeam_SC2_Icon1.jpg/revision/latest/scale-to-width-down/30?cb=20151123002520]] Concentrated Beam deals 400 damage to enemy units and structures in a line across the entire map (mastery: Increases the width of the Concentrated beam by +2% per Mastery point and increases the ability damage by +8 per Mastery point, up to a maximum +60% width and 640 damage); cooldown 180s.
[img[https://vignette.wikia.nocookie.net/starcraft/images/b/b5/PulseCannon_SC2_Icon1.jpg/revision/latest/scale-to-width-down/32?cb=20151123003304]] Pulse Cannon deals 600 damage to enemy units and structures in target area after a small delay, cooldown 300s.===
!SwannPrestige2Name
Grease Monkey
!SwannPrestige2Posts
!SwannPrestige2Videos
([[1|https://youtu.be/p66Ph-KI1tA]])
!SwannPrestige2Advantage
Turret upgrades are 100% more effective.+++Normally:
[img[https://vignette.wikia.nocookie.net/starcraft/images/0/02/SC2TerranHi-Sec.png/revision/latest/scale-to-width-down/32?cb=20100610184950]] Hi-Sec Auto Tracking: all turrets gain +1 attack range.
[img[https://vignette.wikia.nocookie.net/starcraft/images/e/e1/AutoLoaders_SC2_Icon.jpg/revision/latest/scale-to-width-down/32?cb=20151122231814]] KMC Auto-Loaders: increases the attack speed of all turrets by 25%.
[img[https://vignette.wikia.nocookie.net/starcraft/images/6/69/BuildingArmor_SC2_Game1.png/revision/latest/scale-to-width-down/32?cb=20100610181301]] Structure Armor: all structures gain +2 armor.
[img[https://vignette.wikia.nocookie.net/starcraft/images/9/91/FireSupression_SC2_Icon.jpg/revision/latest/scale-to-width-down/32?cb=20151122231751]] Fire Supression Systems: all buildings will initiate auto-repairs when below 50% health (+15 hp/s), repairing them back to 50% health. [This upgrade looks the same even for the prestige [[*|https://www.reddit.com/r/starcraft2coop/comments/i0a736/does_swanns_grease_monkey_affect_fire_suppression/]]]===
!SwannPrestige2Disadvantage
Combat units cost 50% more vespene gas.
!SwannPrestige3Name
Payload Director
!SwannPrestige3Advantage
Hercules have twice the cargo capacity and unload units instantly.
Tactical Jump cooldown reduced by 50%.
Science Vessels gain the Hyperjump ability.
!SwannPrestige3Disadvantage
Top bar cooldowns increased by 50%
!Zagara
[img[https://vignette.wikia.nocookie.net/starcraft/images/6/6b/ZagaraBaneling_SC2-LotV_Art1.jpg/revision/latest/scale-to-width-down/200?cb=20171122121727][https://starcraft.fandom.com/wiki/Zagara_(Co-op_Missions)]]
*Recommended for experienced players
*Control Zagara on the mission with spawning abilities
*Breed a relentless swarm of Zerg to tear apart your enemies
!ZagaraMasteries
Masteries
*Power Set 1 (Zagara’s Life and Energy Regeneration Mastery now applies to Queens since patch 5.0.3)
**Zagara and Queen Life and Energy Regeneration: +1% / +30%
**Zagara's Attack Damage: +1 / +30
*Power Set 2
**Zergling Evasion: +1.5% / +45%
**Intensified Frenzy: +1.5% / +45%
*Power Set 3
**Baneling Damage: +1 / +30
**Roach Damage and Life: +2% / +60% (up to 26 Damage and 232 Life on Roach and 80 damage on drop-pod)
!ZagaraPrestige0Name
[[Swarm Broodmother|https://i.imgur.com/hY1Qzv4.png]]
!ZagaraPrestige0Posts
[img[https://vignette.wikia.nocookie.net/starcraft/images/6/6b/ZagaraBaneling_SC2-LotV_Art1.jpg/revision/latest/window-crop/width/40/x-offset/0/y-offset/120/window-width/3600/window-height/2700?cb=20171122121727][https://starcraft2coop.com/commanders/zagara]] [img[https://tl.net/staff/Chimaron/Guides/Zagara/Zagara_LinkMini.jpg][https://tl.net/forum/single-player/527675-co-op-commander-guide-zagara]]
!ZagaraPrestige0Videos
!ZagaraPrestige0Advantage
*Very high burst damage
*Early game strength
*Rapid expansion
*Easy To rebuild army
*Infinitely spawning banelings
!ZagaraPrestige0Disadvantage
*Prolonged engagements
*Poor sustained damage
*Weaker Late Game
*Bio susceptible to AoE
*Overly-specialized units
!ZagaraPrestige1Name
Scourge Queen
!ZagaraPrestige1Posts
([[1|https://www.reddit.com/r/starcraft2coop/comments/i0fa8e/fyi_if_you_are_prestiging_zagara_scourge_queen/]])
!ZagaraPrestige1Videos
([[1|https://www.youtube.com/watch?time_continue=122&v=3xyH_VVDNNk&feature=emb_logo]])
!ZagaraPrestige1Advantage
Max supply increased by 50.+++Normally Zagara has 100 max supply, with Drones costing 1/2 each (spawn two per egg), Zergling 1/2 each (spawn 3 per egg), Queen 1, Baneling 1/2, Aberration 3, Scourge 1/2 each (spawn 2 per egg), Corruptor 2.=== Zerglings and Scourge spawn one extra unit per egg.+++4 Zerglings and 3 Scourges=== Baneling Nests will spawn an additional 4 free Banelings and Scourge Nests will spawn 4 free Scourge (every 30 seconds, if free supplies are available).
!ZagaraPrestige1Disadvantage
Zagara is unavailable.
!ZagaraPrestige2Name
Mother of Constructs
!ZagaraPrestige2Posts
!ZagaraPrestige2Videos
!ZagaraPrestige2Advantage
Aberrations and Corruptors cost 25% less, gain 50% increased health, and possess greatly increased health regeneration.
!ZagaraPrestige2Disadvantage
No free Banelings.
!ZagaraPrestige3Name
Apex Predator
!ZagaraPrestige3Posts
([[1|https://www.reddit.com/r/starcraft2coop/comments/hy8y0g/apex_predator_zagara_strats_for_long_maps/]])
!ZagaraPrestige3Videos
!ZagaraPrestige3Advantage
Zagara gain reduced ability cooldowns, increased health and energy regeneration, and access to the Deep Tunnel ability.
!ZagaraPrestige3Disadvantage
Mass Frenzy only affects Zagara and her summoned units. Combat units cost 25% more.
!Vorazun
[img[https://vignette.wikia.nocookie.net/starcraft/images/7/7c/VorazunDarkTemplar_SC2-LotV_Art1.jpg/revision/latest/scale-to-width-down/200?cb=20171120132655][https://starcraft.fandom.com/wiki/Vorazun_(Co-op_Missions)]]
*Recommended for experienced players
*Manipulate the battlefield from the Spear of Adun with stealthy abilities
*Command an army of cloaked and high damage Nerazim units
!VorazunMasteries
Masteries
*Power Set 1
**Dark Pylon Range: +2% / +60%
**Black Hole Duration: +2% / +60%
*Power Set 2
**Shadow Guard Duration: +2 sec / +60 sec
**Time Stop Unit Speed Increase: +1% / +30%
*Power Set 3
**Chrono Boost efficiency: +1% / +30%
**Spear of Adun starting and maximum energy: +3 / +90
!VorazunPrestige0Name
[[Matriarch of the Nerazim|https://i.imgur.com/9LGhJxm.png]]
!VorazunPrestige0Posts
[img[https://vignette.wikia.nocookie.net/starcraft/images/7/7c/VorazunDarkTemplar_SC2-LotV_Art1.jpg/revision/latest/window-crop/width/40/x-offset/0/y-offset/120/window-width/3323/window-height/2492?cb=20171120132655][https://starcraft2coop.com/commanders/vorazun]] [img[https://tl.net/staff/Chimaron/Guides/Vorazun/Vorazun_LinkMini.jpg][https://tl.net/forum/single-player/527892-co-op-commander-guide-vorazun]]
!VorazunPrestige0Videos
!VorazunPrestige0Advantage
*Late game dominance
*Crowd control specialist
*High burst damage
*Dark templars powerful vs ground
*Powerful calldowns
!VorazunPrestige0Disadvantage
*Early game relies on calldowns
*Hard to rebuild army
*Poor mineral dump
*Short ranged units
*Situational anti-air
!VorazunPrestige1Name
Spirit of Respite
!VorazunPrestige1Advantage
Emergency Recall recalls cloaked units to the closest Nexus or Dark Pylon instead of the primary structure and heals life and shields to full. Deploy Dark Pylon cooldown and cost reduced by 50%.
!VorazunPrestige1Disadvantage
Dark Pylons lose recall.
!VorazunPrestige2Name
Withering Siphon
!VorazunPrestige2Advantage
Enemy units affected by Void Stasis, Confusion, Stasis Ward, Disruption Web, or Darkcoil lose 20 life per second. This effect cannot kill.
!VorazunPrestige2Disadvantage
Combat units deal 25% reduced damage.
Stasis Ward duration reduced by 75%.
Enables all of Voraun’s crowd control effects to apply to Heroic units.
!VorazunPrestige3Name
Keeper of Shadows
!VorazunPrestige3Advantage
Time Stop becomes targeted. All Shadow Guard who have died are resurrected at the target location.
!VorazunPrestige3Disadvantage
Shadow Guard duration reduced by 40%.
!Karax
[img[https://vignette.wikia.nocookie.net/starcraft/images/a/a4/Karax_SC2-LotV_Art1.png/revision/latest/scale-to-width-down/200?cb=20171122104336][https://starcraft.fandom.com/wiki/Karax_(Co-op_Missions)]]
*Recommended for experienced players
*Upgrade the Spear of Adun to dominate the battlefield from high orbit
*Command an army of expensive but powerful Purifier robotic units
!KaraxMasteries
Masteries
*Power Set 1
**Combat Unit Life and Shield: +1% / +30%
**Structure Health and Shield: +2% / +60%
*Power Set 2
**Reconstruction Beam Regen Speed: +3% / +90%
**Chrono Overload Energy Regen: +3 / +90
*Power Set 3
**Chrono Boost efficiency: +1% / +30%
**Spear of Adun starting and maximum energy: +3 / +90
!KaraxPrestige0Name
[[Khalai Phase Smith|https://i.imgur.com/KHv2fxO.png]]
!KaraxPrestige0Posts
[img[https://vignette.wikia.nocookie.net/starcraft/images/a/a4/Karax_SC2-LotV_Art1.png/revision/latest/window-crop/width/40/x-offset/0/y-offset/34/window-width/1024/window-height/768?cb=20171122104336][https://starcraft2coop.com/commanders/karax]] [img[https://tl.net/staff/Chimaron/Guides/Karax/Karax_LinkMini.jpg][https://tl.net/forum/single-player/528459-co-op-commander-guide-karax]] [[1|https://www.reddit.com/r/starcraft2coop/comments/i2t0vi/some_thoughts_on_leveling_karax/]]
([[1|https://www.reddit.com/r/starcraft2coop/comments/hwupap/architect_of_war_demonstration_clip/]])
!KaraxPrestige0Videos
!KaraxPrestige0Advantage
*Omnipresent calldowns
*Strong static defense
*Late game dominance
*Vast support abilities
!KaraxPrestige0Disadvantage
*Hard to push on his own
*Resource starved
*Slow ramp-up time
*High unit cost
!KaraxPrestige1Name
Architect of War
!KaraxPrestige1Posts
([[1|https://www.reddit.com/r/starcraft2coop/comments/i0gtz8/questions_regarding_architect_of_war_karax_hes_op/]],[[2|https://www.reddit.com/r/starcraft2coop/comments/i0hxob/karaxs_architect_of_war_is_hilarious/]])
!KaraxPrestige1Videos
!KaraxPrestige1Advantage
Repair beam is 100% more effective and can target twice as many structures. Unity barrier affects defensive structures and its cooldown is reduced by 75%. Chrono Boost, Chrono Wave and Chrono Field affect defensive structures, increasing their rate of attack.
!KaraxPrestige1Disadvantage
Repair Beam may only target structures. Unity Barrier no longer affects units.
!KaraxPrestige2Name
Templar Apparent
!KaraxPrestige2Posts
!KaraxPrestige2Videos
([[1|https://www.youtube.com/watch?v=s0fsDUBdns0]])
!KaraxPrestige2Advantage
Combat unit cost reduced by 40%.
!KaraxPrestige2Disadvantage
Photon Cannons and Khaydarin Monoliths are unavailable.
!KaraxPrestige3Name
Solarite Celestial
!KaraxPrestige3Posts
!KaraxPrestige3Videos
!KaraxPrestige3Advantage
Orbital Strike and Solar Lance energy cost reduced by 40%. Solar Lance and Purifier Beam cooldowns reduced by 50%.
!KaraxPrestige3Disadvantage
Chrono Boost, Chrono Wave and Chrono Field are unavailable.
!Abathur
[img[https://vignette.wikia.nocookie.net/starcraft/images/9/9f/Abathur_SC2-LotV_Art1.png/revision/latest/scale-to-width-down/200?cb=20171122132726][https://starcraft.fandom.com/wiki/Abathur_(Co-op_Missions)]]
*Recommended for players of all skill levels
*Evolve your army by collecting Biomass from fallen enemies
*Morph powerful Brutalisk and Leviathan units
!AbathurMasteries
Masteries
*Power Set 1
**Toxic Nest Damage: +2% / +60%
**Mend Healing Duration: +10% / +300%
*Power Set 2
**Symbiote Ability Improvement: +3.33% / +100%
**Enemy Drops Double Biomass Chance: +1.5% / +45%
*Power Set 3
**Toxic Nest Maximum Charges and Cooldown: +1 / +30 charges, -1% / -30% cooldown
**Structure Morph and Evolution Rate: -2% / -60%
!AbathurPrestige0Name
[[Evolution Master|https://i.imgur.com/cEl1B8W.png]]
!AbathurPrestige0Posts
[img[https://vignette.wikia.nocookie.net/starcraft/images/9/9f/Abathur_SC2-LotV_Art1.png/revision/latest/window-crop/width/40/x-offset/0/y-offset/34/window-width/1024/window-height/768?cb=20171122132726][https://starcraft2coop.com/commanders/abathur]] [img[https://tl.net/staff/Chimaron/Guides/Abathur/Abathur_LinkMini.jpg][https://tl.net/forum/single-player/528771-co-op-commander-guide-abathur]]
[[1|https://www.reddit.com/r/starcraft2coop/comments/i2853z/abathur_prestige_thoughts_and_suggestions/]]
!AbathurPrestige0Videos
!AbathurPrestige0Advantage
*Pushing ability
*Durability of ultimates
*Calldown global presence
*High unit flexibility
*Late game dominance
*Vipers incapacitates
!AbathurPrestige0Disadvantage
*Dependence on Biomass
*Slow economic expansion
*Hard to rebuild army
*Lack of tactical mobility
!AbathurPrestige1Name
Essence Hoarder
!AbathurPrestige1Posts
!AbathurPrestige1Videos
!AbathurPrestige1Advantage
Combat units can hold an additional 25 Biomass and have an additional 50% chance to drop their Biomass upon death.
!AbathurPrestige1Disadvantage
Ultimate Evolutions are unavailable.
!AbathurPrestige2Name
Tunneling Horror
!AbathurPrestige2Posts
!AbathurPrestige2Videos
!AbathurPrestige2Advantage
Locusts have 50% increased attack range, movement speed, and duration. The Deep Tunnel upgrade no longer requires Hive, no longer requires vision, and can be used by Roaches and Ravagers.
!AbathurPrestige2Disadvantage
Combat units cost 25% more vespene gas.
!AbathurPrestige3Name
The Limitless
!AbathurPrestige3Posts
([[1|https://www.reddit.com/r/starcraft2coop/comments/hy4qdf/caution_infinite_ultimates_prestige_may_actually/]])
!AbathurPrestige3Videos
([[1|https://www.youtube.com/watch?v=SdfOXFqUWOo]])
!AbathurPrestige3Advantage
The number of Ultimate Evolutions is no longer limited to 3.
!AbathurPrestige3Disadvantage
Ultimate Evolution requires 200 Biomass (at the moment it is bugged, you still get the ultimate at 100 biomass). Biomass is less powerful (half than before) .+++Should be noted that getting Ultimates slower will also slow your biomass collection, added to the fact that you need twice biomass and that biomass on units is weaker, compared to standard Abathur you will be weaker for a long time.===
!Alarak
[img[https://vignette.wikia.nocookie.net/starcraft/images/d/df/Alarak_SC2-LotV_Art3.png/revision/latest/scale-to-width-down/200?cb=20171122110442][https://starcraft.fandom.com/wiki/Alarak_(Co-op_Missions)]]
*Recommended for experienced players
*Control Alarak directly on the battlefield, using his devastating abilities to change the tide of battle
*Alarak can use the lifeforce of both friend and foe to sustain his essence and increase his power
*Command an army of loyal and fanatical Tal'darim units
!AlarakMasteries
Masteries
*Power Set 1
**Alarak Attack Damage: +1 / +30
**Combat Units Attack Speed: +0.5% / +15%
*Power Set 2
**Empower Me duration: +1 sec / +30 sec (up to a maximum of 50 sec)
**Death Fleet cooldown: -4 sec / -120 sec (down to a minimum of 240 sec)
***(Does not affect the initial cooldown at the start of the mission)
*Power Set 3
**Structure Overcharge Shield and Attack Speed: +2% / +60%
**Chrono Boost Efficiency: +1% / +30%
!AlarakPrestige0Name
[[Highlord of the Tal'Darim|https://i.imgur.com/xLOnnCZ.png]]
!AlarakPrestige0Posts
[img[https://vignette.wikia.nocookie.net/starcraft/images/d/df/Alarak_SC2-LotV_Art3.png/revision/latest/window-crop/width/40/x-offset/0/y-offset/34/window-width/1024/window-height/768?cb=20171122110442][https://starcraft2coop.com/commanders/alarak]] [img[https://tl.net/staff/Chimaron/Guides/Alarak/Alarak_LinkMini.jpg][https://tl.net/forum/single-player/529065-co-op-commander-guide-alarak]]
([[1|https://www.reddit.com/r/starcraft2coop/comments/hxsmtv/about_alaraks_prestige_options/]],[[2|https://imgur.com/a/DwUocTS#QOUi8qS|]],[[3|https://www.reddit.com/r/starcraft2coop/comments/i1ybno/alarak_supplicants_bugged_when_using_artificer_of/g011p1i/]])
!AlarakPrestige0Videos
!AlarakPrestige0Advantage
*Early offensive
*Powerful hero
*Late game dominance
*Ascendants are powerful spellcasters
*Strong anti-armor artillery
!AlarakPrestige0Disadvantage
*Ascendants hard to remass
*Lack of mobility
*Low DPS
!AlarakPrestige1Name
Artificer of Souls
!AlarakPrestige1Posts
([[1|https://www.reddit.com/r/starcraft2coop/comments/hxps3u/quick_clips_alarak_artificer_of_souls/]],[[2|https://www.reddit.com/r/starcraft2coop/comments/i0iglb/alarak_artificer_of_souls_prestige_guide/]])
!AlarakPrestige1Videos
!AlarakPrestige1Advantage
When a supplicant dies, it increases the damage and attack speed of one of Alarak's nearby non-heroic mechanical combat units. [[[patch 5.0.2|https://starcraft2.com/en-us/news/23495670]] Canceling Supplicant warp ins no longer grants the bonuses provided by the Artificer of Souls prestige.]
!AlarakPrestige1Disadvantage
Deadly Charge and Destruction Wave damage reduced by 50%.
!AlarakPrestige2Name
Tyrant Ascendant
!AlarakPrestige2Posts
!AlarakPrestige2Videos
!AlarakPrestige2Advantage
Empower Me cooldown reduced by 50%.
!AlarakPrestige2Disadvantage
The Death Fleet is unavailable.
!AlarakPrestige3Name
Shadow of Death
!AlarakPrestige3Posts
v5.0.3 ([[1|https://www.reddit.com/r/starcraft2coop/comments/ifzz3f/the_death_fleet_has_arrived/]])
!AlarakPrestige3Videos
!AlarakPrestige3Advantage
This Prestige has been reworked (patch 5.0.3 of 2020/08/24).
The Mothership and its Destroyers no longer receive reduced stats from this Prestige.
Summon Death Fleet initial cooldown removed.
You may now warp-in permanent Destroyers from the Mothership at a cost of 125/75.
!AlarakPrestige3Disadvantage
Summon Death Fleet now costs 400/400.
Summon Death Fleet no longer comes with free Destroyers.
!Nova
[img[https://vignette.wikia.nocookie.net/starcraft/images/4/49/NovaGhostGriffin_SC2-LotV_Art1.png/revision/latest/scale-to-width-down/200?cb=20171122132318][https://starcraft.fandom.com/wiki/Nova_Terra_(Co-op_Missions)]]
*Recommended for experienced players
*Control Nova and her army of elite units
*Use advanced tech to sustain and support your forces
!NovaMasteries
Masteries
*Power Set 1
**Nuke and Holo Decoy Cooldown: -3 sec / -90 sec
**Griffin Airstrike cost: -10 minerals / -300 minerals (down to a minimum of 700 <<tiddler Minerals>>)
*Power Set 2
**Nova Primary Ability Improvement: +1.67% / +50% (applies to the damage dealt of Snipe, Penetrating Blast, and Sabotage Drone, as well as the shielding of Blink)
**Unit Attack Speed: +0.5% / +15%
*Power Set 3
**Nova Energy Regeneration: +1% / +30%
**Combat Unit Life Regeneration: +0.2 / +6 life/every second (after being out of combat for 10 seconds)
!NovaPrestige0Name
[[Dominion Ghost|https://i.imgur.com/ph5da06.png]]
!NovaPrestige0Posts
[img[https://vignette.wikia.nocookie.net/starcraft/images/4/49/NovaGhostGriffin_SC2-LotV_Art1.png/revision/latest/window-crop/width/40/x-offset/0/y-offset/34/window-width/1024/window-height/768?cb=20171122132318][https://starcraft2coop.com/commanders/nova]] [img[https://tl.net/staff/Chimaron/Guides/Nova/Nova_Linksmall.jpg][https://tl.net/forum/single-player/529937-co-op-commander-guide-nova]] ([[1|https://us.forums.blizzard.com/en/sc2/t/novas-prestige-kits-are-memegarbagegod-mode/13704]])
!NovaPrestige0Videos
!NovaPrestige0Advantage
*Early offensive
*Late game dominance
*Powerful and flexible hero unit
*High burst damage potential and durable units
!NovaPrestige0Disadvantage
*Requires heavy micro
*Hard to rebuild army
*Gas starved
!NovaPrestige1Name
Soldier of Fortune
!NovaPrestige1Advantage
Reworked (patch 5.0.3) such that it now reduces unit charge times on the first production structure (Barracks, Factory, or Starport) an Elite unit is built from instead of the Barracks. The other two production structures will have their charge times increased.
The Factory and Starport no longer have tech requirements.
!NovaPrestige1Disadvantage
Two production structures will have their charge times increased.
!NovaPrestige2Name
Tactical Dispatcher
!NovaPrestige3Posts
([[1|https://www.reddit.com/r/starcraft2coop/comments/hx10zu/novas_third_talent_is_actually_pretty_interesting/]],[[2|https://www.reddit.com/r/starcraft2coop/comments/hxipw4/nova_infiltration_specialist/]])
!NovaPrestige3Videos
([[1|https://youtu.be/b93F1tafuFQ]],[[2|https://youtu.be/k_6shgjR28Y]])
!NovaPrestige2Advantage
Tactical Airlift cooldown reduced by 75%.
!NovaPrestige2Disadvantage
Now increases the cooldown of Griffin Airstrike by 300% (from 30s to 2 minutes, basically swapped cooldown with Tactical Airlift) instead of disabling the ability (patch 5.0.3).
!NovaPrestige3Name
Infiltration Specialist
!NovaPrestige3Advantage
Nova gains a permanent Super Cloak. Her abilities have a 50% increased radius and a 50% reduced cooldown.
!NovaPrestige3Disadvantage
Nova cannot switch to her Combat Suit and loses Super Cloak for 4 seconds upon attacking or using Snipe.
!Stukov
[img[https://vignette.wikia.nocookie.net/starcraft/images/3/3d/AlexeiStukov_SC2-LotV_Art2.jpg/revision/latest/scale-to-width-down/200?cb=20161211074618][https://starcraft.fandom.com/wiki/Alexei_Stukov_(Co-op_Missions)]]
*Recommended for experienced players
*Overwhelm the enemy with hordes of infested forces
*Command a twisted army with the strengths of both Terran and Zerg
!StukovMasteries
Masteries
*Power Set 1
**Volatile Infested Spawn Chance: +0.5% / +15%
**Infested Structure Cooldown: -1.5 sec / -45 sec
***Rank 30 reduces charge cooldown from 90s to 45s.
*Power Set 2
**Aleksander Cooldown: -3 sec / -90 sec (down to a minimum of 270 sec)
**Apocalisk Cooldown: -3 sec / -90 sec (down to a minimum of 210 sec)
***(Neither of these affect the initial cooldown at the start of the mission.)
*Power Set 3
**Infested Infantry Duration: +1 sec / +30 sec (up to a maximum of 120 sec)
**Mech Attack Speed: +1% / +30%
!StukovPrestige0Name
[[Infested Admiral|https://i.imgur.com/Kmx8bSV.png]]
!StukovPrestige0Posts
[img[https://vignette.wikia.nocookie.net/starcraft/images/3/3d/AlexeiStukov_SC2-LotV_Art2.jpg/revision/latest/window-crop/width/40/x-offset/72/y-offset/0/window-width/360/window-height/269?cb=20161211074618][https://starcraft2coop.com/commanders/stukov]] [img[https://tl.net/staff/Chimaron/Guides/Stukov/Stukov_Linksmall.jpg][https://tl.net/forum/single-player/531320-co-op-commander-guide-stukov]]
([[1|https://www.reddit.com/r/starcraft2coop/comments/hx2ar8/stukov_prestige_talents/]],[[2|https://www.reddit.com/r/starcraft2coop/comments/i3q3a4/stukovs_p1_would_volatile_infested_rounds_be/g0ddcqo/]])
!StukovPrestige0Posts
!StukovPrestige0Videos
!StukovPrestige0Advantage
*Easy to rebuild army
*Late game dominance
*Bunkers are a powerful defensive tool
*Powerful calldowns on moderate cooldowns
!StukovPrestige0Disadvantage
*Slow ramp-up time
*Slow expansion
*Lack of mobility
*Susceptible to AOE
!StukovPrestige1Name
Frightful Fleshwelder
!StukovPrestige1Posts
!StukovPrestige1Videos
!StukovPrestige1Advantage
Factory and Starport no longer have tech requirements. Mechanical combat units cost 30% less.
Now additionally increases the rate at which Infested Siege Tanks generate ammo by 200% with the Automated Mitosis upgrade (patch 5.0.3).
!StukovPrestige1Disadvantage
The Infested Colonist Compound does not spawn and cannot be built.
!StukovPrestige2Name
Plague Warden
!StukovPrestige2Posts
([[1|https://www.reddit.com/r/starcraft2coop/comments/hxcgwn/quick_clips_stukov_plague_warden/]])
!StukovPrestige2Videos
!StukovPrestige2Advantage
Banshees can load up to 16 Infested infantry and can launch their cargo at a ground target.+++ [[*|https://www.reddit.com/r/starcraft2coop/comments/hxcgwn/quick_clips_stukov_plague_warden/fz57yfe/]] First off, the issue with Plague Warden currently is that the ability button doesn't show up to launch infested with Banshees for whatever reason, BUT, the ability is there so you can use the hotkey to use it. The default hot key is "E". Hope that helps other with using it.
Anyway, when you use it, it will rapid fire (takes less than a second for all 16) all infested stored in the banshee launching them about a distance of 8 or 9. They deal a small amount of impact damage (0.25-0.5 or so radius, 20 (?) damage) upon landing and immediately start attacking like normal.
As far as usefulness goes it has a few good features:
The infested will surround their target(s) making it act as a pseudo rooting CC effect on ground units. In the first clip, I surround an attackwave, keeping them stuck in place for a calldown nuking.
The burst damage from all the infested landing and attacking is substantial enough to be a threat. Especially when combine with volatile mastery, letting you store up a bunch of volatiles to nuke something down instantly. You can see in the second part of the clip where I half kill a Hybrid Behemoth with 1 volley from 3 Banshees.
The infested can be launched over terrain at hazardous splash damage units and often reduce or invalidate the threat of them. In the first clip posted, you can see how it helped close in on the Reavers to clean them up with few loses.
It basically allows the banshee to take over the role of Stukov's Queens in a limited capacity of a sort. Filling the same role for the most part with different strengths and weaknesses:
They'll deal far less burst damage than queens (with the exception of if you take the time to store up 16 volatiles) and their "CC" effect is a soft CC that only works on ground instead of a hard CC that works on air and ground (fungal). They also completely lack the symbiote ability queens have so no free vision, but Overseers exist so not a big deal.
But on the flip side, Banshees are cloaked, have 240 HP, and can burrow heal for 20 HPS. They are significantly tankier than queens are. They have longer range as well on their attacks and abilities. In addition, they have a regular ground attack. A crappy one, but Queens don't have any. This makes them much more useful on maps like trains and such with ground based objectives. And lastly, since they don't use energy, you can use far fewer banshee's overall for roughly the same effect, as you just need to refill them again which is fairly simple.
Considering how low impact the disadvantage is (the 30% timed life is nothing), this is a fairly good prestige talent. It basically makes the banshee an optional replacement for the Queen for Stukov, so if you prefer traditional Stukov play where you can go infested, mechs, or any mix you want safely (i.e. not Diamondback only mode or Horde mode) this is a fairly nice alternative. Not OP, but a neutral power level playstyle swap. Pretty solid talent... if they fix the UI for it.
===
Infested Banshees gain a Load All button.
Infested Banshee pickup ranged increased.
!StukovPrestige2Disadvantage
Infested Civilians have 30% reduced timed life.
!StukovPrestige3Name
Lord of the Horde
!StukovPrestige3Posts
([[1|https://www.reddit.com/r/starcraft2coop/comments/i3k976/a_quick_analysis_of_lord_of_the_horde_and_is_it/]],[[2|https://www.reddit.com/r/starcraft2coop/comments/i73vhd/stukov_p3_when_is_it_actually_useful/g0zwa4g/]])
!StukovPrestige3Videos
!StukovPrestige3Advantage
Infested Bunkers spawn Infested Troopers 200% faster.
!StukovPrestige3Disadvantage
Infested Bunkers no longer have cargo capacity.
!Fenix
[img[https://vignette.wikia.nocookie.net/starcraft/images/4/45/Talandar_SC2-LotV_Art1.png/revision/latest/scale-to-width-down/200?cb=20171122105536][https://starcraft.fandom.com/wiki/Fenix_(Co-op_Missions)]]
*Recommended for experienced players
*Control Fenix as he leads a powerful robotic Purifier army
*Fenix can transfer between three mighty forms to adapt to any situation
*Powerful protoss heroes can transfer their consciousness into standard units to bolster your army's strength
!FenixMasteries
Masteries
*Power Set 1
**Fenix Suit Attack Speed: +2% / +60%
**Fenix Suit Offline Energy Regeneration: +0.75% / +22.5%
*Power Set 2
**Champion A.I. Attack Speed: +1% / +30%
**Champion A.I. Life and Shields: +2% / +60%
*Power Set 3
**Chrono Boost Efficiency: +1% / +30%
**Increase Starting Supply: +2 / +60
!FenixPrestige0Name
[[Purifier Executor|https://i.imgur.com/NpjCWNx.png]]
!FenixPrestige0Posts
[img[https://vignette.wikia.nocookie.net/starcraft/images/4/45/Talandar_SC2-LotV_Art1.png/revision/latest/window-crop/width/40/x-offset/0/y-offset/40/window-width/1024/window-height/768?cb=20171122105536][https://starcraft2coop.com/commanders/fenix]] [img[https://tl.net/staff/Chimaron/Guides/Fenix/Fenix_Linksmall.jpg][https://tl.net/forum/single-player/532185-co-op-commander-guide-fenix]]
([[1|https://www.reddit.com/r/starcraft2coop/comments/hwulis/lets_talk_about_fenix_prestige_talents/]],[[2|https://www.reddit.com/r/starcraft2coop/comments/hwyiwb/fenix_prestige_talents_feedback/]])
!FenixPrestige0Videos
!FenixPrestige0Advantage
*Endgame firepower is immense
*Arbiter allows for teleportation and quick deployment
*20% cost discount to all forces
*50% mineral discount to structure
*nullified structure gas costs & tech requirement
!FenixPrestige0Disadvantage
*Significant macro
*No offensive call downs when things go wrong
*Forces are somewhat fragile without the use of the Conservator's Protective Field.
!FenixPrestige1Name
Akhundelar
!FenixPrestige1Advantage
All Armor Suit damage increased by 100%. Ability cooldowns reduced by 50%. Life, shield, and energy regeneration increased by 100% while in storage.
!FenixPrestige1Disadvantage
All Armor Suit calldown cooldowns increased by 700% [from 15s to 120s]. Each suit can only be sustained for 20 seconds at a time.
!FenixPrestige2Name
Network Administrator
!FenixPrestige2Posts
([[1|https://www.reddit.com/r/starcraft2coop/comments/hyb4kw/tactical_web_data_table/fzbpd1m/]],[[2|https://www.reddit.com/r/starcraft2coop/comments/hyb4kw/tactical_web_data_table/fzdggo1/]])
!FenixPrestige2Videos
([[1|https://youtu.be/Fu-iOYe-sCM]])
!FenixPrestige2Advantage
Tactical Data Web effectiveness increased by 200% (that means that the bonus per shell and the max bonus is tripled).+++For example Taldarin (Immortal) normally gets +10% Gravimetric Overload per shell, up to +50%; Network Administrator get +30% per shell up to +150%.=== All Combat unit costs reduced by 50%.+++Units cost half, so you can train double of the form the same price. This mean faster champions and faster tactical web data, which is also buffed. Cheaper units also means cheaper avenging protocol.===+++<<tiddler TacticalDataWeb>>===
!FenixPrestige2Disadvantage
All non-heroic combat unit damage reduced by 50% and vitals reduced by 50%.+++Maxed army power and toughness halved. Excluding workers and champions it is 80 supply worth of units. Not a problem on shorter maps (<15') but more noticeable on longer ones. The damage is halved at the end, so armor do not have a stronger effect.===
!FenixPrestige3Name
Unconquered Spirit
!FenixPrestige3Advantage
Avenging Protocol effectiveness increased by 100%. Champion A.I.s that die refund 75% of their base unit cost.
!FenixPrestige3Disadvantage
Champion A.I.s do not gain additional life or shields and have reduced attack range.
!Dehaka
[img[https://vignette.wikia.nocookie.net/starcraft/images/4/4c/Dehaka_SC2-LotV_Art1.png/revision/latest/scale-to-width-down/200?cb=20171122134924][https://starcraft.fandom.com/wiki/Dehaka_(Co-op_Missions)]]
*Recommended for experienced players
*Control Dehaka on the mission and collect Essence to grow stronger
*Command a ferocious pack of Primal Zerg units
!DehakaMasteries
Masteries
*Power Set 1
**Devour Healing Increase: +1% / +30%
***Rank 30 increases heal from 5% to 6.5% for nonbiological and 25% to 32.5% for biological.
**Devour Buff Duration: +3% / +90%
***Rank 30 increases duration from 15s to 28.5s.
*Power Set 2
**Greater Primal Wurm Cooldown: -2% / -60%
***Rank 30 reduces charge cooldown from 120s to 48s.
**Pack Leaders Active Duration: +1% / +30%
***Rank 30 increases duration from 60s to 78s.
*Power Set 3
**Gene Mutation Chance: +1% / +30%
***Rank 30 increase mutation chance from 20% to 50%.
**Dehaka Attack Speed: +1% / +30%
!DehakaPrestige0Name
[[Primal Pack Leader|https://i.imgur.com/BFKjv0i.png]]
!DehakaPrestige0Posts
[img[https://vignette.wikia.nocookie.net/starcraft/images/4/4c/Dehaka_SC2-LotV_Art1.png/revision/latest/window-crop/width/40/x-offset/0/y-offset/40/window-width/1024/window-height/768?cb=20171122134924][https://starcraft2coop.com/commanders/dehaka]] [img[https://tl.net/staff/Chimaron/Guides/Dehaka/Dehaka_Linksmall.jpg][https://tl.net/forum/single-player/532473-co-op-commander-guide-dehaka]]
!DehakaPrestige0Videos
!DehakaPrestige0Advantage
*Early offensive
*Dehaka can solo armies
*Powerful and flexible unit choices
*Many calldowns on low cooldowns
*Deep tunnel provides high mobility
*Mutalisks very powerful vs air units
!DehakaPrestige0Disadvantage
*Not very powerful static defense
*Army more fragile
*Heavily gas reliant
!DehakaPrestige1Name
Devouring One
!DehakaPrestige1Posts
([[1|https://www.reddit.com/r/starcraft2coop/comments/hyebjt/quick_clips_dehaka_devouring_one/]])
!DehakaPrestige1Videos
!DehakaPrestige1Advantage
Devour applies its benefits to all nearby friendly units.
!DehakaPrestige1Disadvantage
Dehaka has 0 base armor, loses the Scorching Breath ability, and has his max level reduced by 4.
!DehakaPrestige2Name
Primal Contender
!DehakaPrestige2Posts
!DehakaPrestige2Videos
!DehakaPrestige2Advantage
Pack Leaders and their entourage deal 50% more damage and have 100% increased life. Pack leaders can consume Essence for Dehaka.
!DehakaPrestige2Disadvantage
Dehaka exits the map while a Pack Leader is active. Only one Pack Leader may be active at a time.
!DehakaPrestige3Name
Broodbrother
!DehakaPrestige3Posts
!DehakaPrestige3Videos
!DehakaPrestige3Advantage
Dehaka spawns a clone.
!DehakaPrestige3Disadvantage
If either Dehaka or the clone dies, the other dies as well.
Each one collect essence on his own.
!Han&Horner
[img[https://vignette.wikia.nocookie.net/starcraft/images/f/f1/MiraHanMattHorner_Coop_Game1.JPG/revision/latest/scale-to-width-down/200?cb=20171105010513][https://starcraft.fandom.com/wiki/Mira_Han_and_Matt_Horner_(Co-op_Missions)]]
*Recommended for experienced players
*Combine ruthless mercenary groups with the precision of the Dominion fleet
*Draw from two vastly different play styles that complement each other perfectly:
**Elite durable warships with powerful attacks can deploy from anywhere on the map
**Cheap expendable front-line assault units with massive on-death collateral damage; collect resources from friendly units as they are killed
!Han&HornerMasteries
Masteries
*Power Set 1
**Strike Fighter Area of Effect Radius: +1% - +30%
**Stronger Death Chance: +1.5% - +45%
*Power Set 2
**Significant Others Bonuses: +0.5% - +15% (up to a maximum of 0.65% bonus attack speed or health)
**Double Salvage Chance: +2% - +60%
*Power Set 3
**Air Fleet Travel Distance: +2% - +60%
**Mag Mines charges, Cooldown and Arming Time: -1% - +30%
!Han&HornerPrestige0Name
[[Mercenary Leader and Dominion Admiral|https://i.imgur.com/uKk4KNm.png]]
!Han&HornerPrestige0Posts
[img[https://vignette.wikia.nocookie.net/starcraft/images/f/f1/MiraHanMattHorner_Coop_Game1.JPG/revision/latest/window-crop/width/40/x-offset/83/y-offset/0/window-width/424/window-height/317?cb=20171105010513][https://starcraft2coop.com/commanders/horner]] [img[https://tl.net/staff/Chimaron/Guides/HanHorner/HanHorner_LinkMini.jpg][https://tl.net/forum/single-player/533395-co-op-commander-guide-han-and-horner]]
!Han&HornerPrestige0Videos
!Han&HornerPrestige0Advantage
*Exceptional Firepower
*On-Site Reinforcements
*Expendable Units
*Strike fighters provide vision & snipe key targets
!Han&HornerPrestige0Disadvantage
*Slow ramp-up time
*Lacks Survivability
*Limited Production
*Very High Cooldowns
*Poor Early-Game Presence
!Han&HornerPrestige1Name
Chaotic Power Couple
!Han&HornerPrestige1Posts
!Han&HornerPrestige1Videos
!Han&HornerPrestige1Advantage
Mag Mines arm and fire 80% faster. Mira's units' on-death effects are 100% more effective.
!Han&HornerPrestige1Disadvantage
Horner's units cost 30% more.
!Han&HornerPrestige2Name
Wing Commanders
!Han&HornerPrestige2Posts
!Han&HornerPrestige2Videos
!Han&HornerPrestige2Advantage
Horner's units' vespene gas cost reduced by 20%, and charge cooldowns reduced by 50%.
!Han&HornerPrestige2Disadvantage
Galleons are capped at 2.
!Han&HornerPrestige3Name
Galactic Gunrunners
!Han&HornerPrestige3Posts
([[1|https://www.reddit.com/r/starcraft2coop/comments/hxszi5/quick_clips_han_horner_galactic_gunrunners/]])
!Han&HornerPrestige3Videos
!Han&HornerPrestige3Advantage
Bombing Platforms are no longer capped.
!Han&HornerPrestige3Disadvantage
Bombing Platforms cost 100% more.
!Tychus
[img[https://vignette.wikia.nocookie.net/starcraft/images/1/13/TychusArt_Coop_Game1.JPG/revision/latest/scale-to-width-down/200?cb=20180821000107][https://starcraft.fandom.com/wiki/Tychus_Findlay_(Co-op_Missions)]]
*Recommended for experienced players
*Recruit a band of legendary Outlaws.
*Purchase gear to upgrade their abilities.
!TychusMasteries
Masteries
*Power Set 1
**Tychus Attack Speed: +1% / +30%
**Tychus Shredder Grenade Cooldown: -1% / -30% (down to a minimum of 14 sec)
*Power Set 2
**Tri-Outlaw Research Improvement: +0.5% / +15%
**Outlaw Availability: -3 sec / -90 sec (down to a minimum of 150 sec)
*Power Set 3
**Medivac Pickup Cooldown: -1.5 sec / -45 sec (down to a minimum of 75 sec)
**Odin Cooldown: -4 sec / -120 sec (down to a minimum of 240 sec)
!TychusPrestige0Name
[[Legendary Outlaw|https://i.imgur.com/fJbU2Eg.png]]
!TychusPrestige0Posts
[img[https://vignette.wikia.nocookie.net/starcraft/images/1/13/TychusArt_Coop_Game1.JPG/revision/latest/window-crop/width/40/x-offset/0/y-offset/0/window-width/760/window-height/570?cb=20180821000107][https://starcraft2coop.com/commanders/tychus]] [img[https://tl.net/staff/Chimaron/Guides/Tychus/Commander_Tychus_Small.jpg][https://tl.net/forum/starcraft-2/545601-co-op-commander-guide-tychus]]
([[1|https://www.reddit.com/r/starcraft2coop/comments/hxiyl1/can_someone_comment_on_all_of_tychuss_prestige/]],[[2|https://www.reddit.com/r/starcraft2coop/comments/i0ncgh/fellow_tychus_mains_what_used_to_be_your/]],[[3|https://www.reddit.com/r/starcraft2coop/comments/i2mtxj/the_tychus_lone_wolf_experience/]])
!TychusPrestige0Videos
!TychusPrestige0Advantage
*Early game firepower
*Late game dominance
*Easy to use
*Proper unit choices enable Tychus to counter virtually any enemy
*All hero units have powerful abilities
*Medivacs enable rapid deployment
!TychusPrestige0Disadvantage
*Very costly upgrades
*Vulnerable to burst damage and crowd control
*Small army can only safely hit one target at a time
*Requires heavy micro
*High potential to overextend
*Weak static defenses
!TychusPrestige1Name
Technical Recruiter
!TychusPrestige1Posts
!TychusPrestige1Videos
!TychusPrestige1Advantage
Outlaws' active ability cooldowns reduced by 35%.
!TychusPrestige1Disadvantage
Outlaw cost and time between Outlaw recruitment increased by 50%.
!TychusPrestige2Name
Lone Wolf
!TychusPrestige2Posts
([[1|https://www.reddit.com/r/starcraft2coop/comments/i0ghsa/im_pretty_sure_that_after_this_tychus_will_be/]])
!TychusPrestige2Videos
!TychusPrestige2Advantage
Outlaws deal more damage (30% per Outlaw recruited, including Tychus) and take 50% less damage when beyond the vision range of all other Outlaws.
Sirius’ Warhound Turrets and Vega’s Dominated units now benefit from their creator’s buffs (patch 5.0.3).
!TychusPrestige2Disadvantage
Ultimate Gear is unavailable. Gear costs 25% more.
!TychusPrestige3Name
Dutiful Dogwalker
!TychusPrestige3Posts
!TychusPrestige3Videos
([[1|https://youtu.be/4Uz3q03g7Mc]])
!TychusPrestige3Advantage
The Odin no longer requires Tychus as its pilot, its duration is increased by 100%, and its cooldown is reduced by 40%.
!TychusPrestige3Disadvantage
Barrage and Big Red Button are unavailable.
!Zeratul
[img[https://vignette.wikia.nocookie.net/starcraft/images/6/64/Zeratul_Co-op_Preview1.jpg/revision/latest/scale-to-width-down/200?cb=20181106223838][https://starcraft.fandom.com/wiki/Zeratul_(Co-op_Missions)]]
*Power up your army and abilities with xel'naga artifacts
*Control an elite xel'naga-enhanced protoss army
*Build out your top bar with artifact fragments
*Summon ultimate xel'naga constructs (Avatar of Form and Avatar of Essence)
!ZeratulMasteries
Masteries
*Power Set 1
**Zeratul Attack Speed: +1.5% / +45%
**Combat Units Attack Speed: +0.5% / +15%
*Power Set 2
**Artifact Fragment Spawn Rate: -2 sec / -60 sec (down to a minimum of 120 sec)
**Support Calldown Cooldown Reduction: -1% / -30%
*Power Set 3
**Legendary Legion Cost: -1% / -30% (down to a minimum of 560 <<tiddler Minerals>>)
**Avatar Cooldown: -4 sec / -120 sec
!ZeratulPrestige0Name
[[Dark Prelate|https://i.imgur.com/2dwozcM.png]]
!ZeratulPrestige0Posts
[img[https://vignette.wikia.nocookie.net/starcraft/images/6/64/Zeratul_Co-op_Preview1.jpg/revision/latest/window-crop/width/40/x-offset/0/y-offset/20/window-width/764/window-height/573?cb=20181106223838][https://starcraft2coop.com/commanders/zeratul]] [img[https://tl.net/staff/Chimaron/Guides/Zeratul/Commander_Zeratul_Small.jpg][https://tl.net/forum/starcraft-2/551722-co-op-commander-guide-zeratul]]
!ZeratulPrestige0Videos
!ZeratulPrestige0Advantage
*Early game
*Late game
*Upgrades are dependent on a hero ability and cost no resources
*Powerful and flexible call downs
*Static defenses can be used for offensive purposes via special abilities
*Weaknesses
!ZeratulPrestige0Disadvantage
*Gas starved
*Army is expensive
*Dependent on Void Arrays for transit
*Requires significant micro
*Low DPS
!ZeratulPrestige1Name
Anakh Su'n
!ZeratulPrestige1Advantage
Zeratul can deploy the Void Seeker, granting all friendly units in a target area Super Cloak [cannot be targeted even by detector units, but can still takes ongoing or area damage] for 15 seconds. [basically you can attack with impunity from a small area for 15 seconds every two minutes]
!ZeratulPrestige1Disadvantage
The Void Seeker can no longer transport Zeratul.
!ZeratulPrestige2Name
Knowledge Seeker
!ZeratulPrestige2Posts
([[1|https://www.reddit.com/r/starcraft2coop/comments/hzvshg/the_tooltips_are_a_lie_zeratul_can_only_collect_a/]] [[*|https://i.imgur.com/6TSgAwe.jpg]])
!ZeratulPrestige2Videos
!ZeratulPrestige2Advantage
Zeratul can collect and unlimited number of Artifact Fragments.+++Purity of Will (level 15 talent): Zeratul will gain additional shields (+50), increased Shadow Cleave damage (+10), and additional charges of Blink (+1) with each Artifact Fragment he finds.<br>Each fragment will add 100 shields to the hero unit (Telbrus, Zoraya, Serdath). Additionally, for Telbrus and Serdath, each fragment will add 100 energy to those heroic units.<br>Artifact fragments also affect how many units are spawned from the Legion.It also increases the weapons and armor upgrades level of your units each time.===
!ZeratulPrestige2Disadvantage
Zeratul's combat units cost 25% more.
!ZeratulPrestige3Name
Herald of the Void
!ZeratulPrestige3Posts
([[1|https://www.reddit.com/r/starcraft2coop/comments/hxlyry/quick_clips_zeratul_herald_of_the_void/]],[[2|https://www.reddit.com/r/starcraft2coop/comments/hxruzr/just_playing_around_with_the_new_prestige/]],[[2|https://www.reddit.com/r/starcraft2coop/comments/iqsrcr/harold_zeratul/]])
!ZeratulPrestige3Videos
!ZeratulPrestige3Advantage
Each collected Artifact Fragment reduces the cooldown of Zeratul's Shadow Cleave by 5 seconds. Shadow Cleave spawns a tornado that damages and slows enemy units. +++<html><blockquote class="reddit-card" data-card-created="1595683863"><a href="https://www.reddit.com/r/starcraft2coop/comments/hxlyry/quick_clips_zeratul_herald_of_the_void/">Quick Clips: Zeratul Herald of the Void</a> from <a href="http://www.reddit.com/r/starcraft2coop">r/starcraft2coop</a></blockquote>
<script async src="//embed.redditmedia.com/widgets/platform.js" charset="UTF-8"></script></html>===
!ZeratulPrestige3Disadvantage
Zeratul can only collect up to two Artifact Fragments.
!Stetmann
[img[https://vignette.wikia.nocookie.net/starcraft/images/5/55/Stetmann_Coop_Art1.png/revision/latest/scale-to-width-down/200?cb=20190522202303][https://starcraft.fandom.com/wiki/Egon_Stetmann_(Co-op_Missions)]]
*Recommended for experienced players
*Deploy Stetellites across the map to expand your influence.
*Control Stetmann's Mecha Zerg, which are augmented with Terran and Protoss inspired enhancements.
!StetmannMasteries
Masteries
*Power Set 1
**Upgrade Resource Cost: -2% / -60%
***(Only affected on attack and armor upgrades)
**Gary Ability Cooldown: +1% / +30%
*Power Set 2
**Stetzone Bonuses: +2% / +60%
**Maximum Egonergy Pool: +2% / 60%
*Power Set 3
**Deploy Stetellite Cooldown: -0.16 sec / -5 sec
**Structure Morph Rate: -2% / -60%
!StetmannMastery
Power Set 1
Upgrade Resource Cost: -2% / -60% (Only affected on attack and armor upgrades)
Gary Ability Cooldown: +1% / +30%
Power Set 2
Stetzone Bonuses: +2% / +60%
Maximum Egonergy Pool: +2% / 60%
Power Set 3
Deploy Stetellite Cooldown: -0.16 sec / -5 sec
Structure Morph Rate: -2% / -60%
!StetmannPrestige0Name
[[Hero Genius (Henius)|https://i.imgur.com/12Xv0vJ.png]]
!StetmannPrestige0Posts
[img[https://vignette.wikia.nocookie.net/starcraft/images/5/55/Stetmann_Coop_Art1.png/revision/latest/window-crop/width/40/x-offset/0/y-offset/20/window-width/685/window-height/514?cb=20190522202303][https://starcraft2coop.com/commanders/stetmann]]
!StetmannPrestige0Videos
!StetmannPrestige0Advantage
*Hero support
*Stetzone abilities benefit allies, allowing healing, energy regeneration, or a speed boost
*Army can be rebuilt via Gary
*Late-game dominance
!StetmannPrestige0Disadvantage
*Slow early game
*Egonergy mechanics take practice to master
*All units are weak when out of Egoenergy
*Stetzone reliance
*No powerful calldowns
!StetmannPrestige1Name
Signal Savant
!StettmannPrestige1Posts
!StettmannPrestige1Videos
!StetmannPrestige1Advantage
Stetellites are invulnerable once they are online. Stetellites generate a 50% larger Stetzone.
!StetmannPrestige1Disadvantage
Super Gary is unavailable.
!StetmannPrestige2Name
Best Buddy
!StettmannPrestige2Posts
!StettmannPrestige2Videos
!StetmannPrestige2Advantage
Gary's health and damage is increased by 100%.
!StetmannPrestige2Disadvantage
Gary's movement speed is reduced by 90% outside of Stetzones.
!StetmannPrestige3Name
Oil Baron
!StettmannPrestige3Posts
[[1|https://www.reddit.com/r/starcraft2coop/comments/i20syf/quick_clips_oil_baron_stetmann/]],[[2|https://www.reddit.com/r/starcraft2coop/comments/i4syxv/stetmann_oil_baron_prestige_guide/]]
!StettmannPrestige3Videos
!StetmannPrestige3Advantage
Combat units gain a stack of +++^25em^*@[The Best Oil]<<tiddler BestOil>>=== when they kill an enemy unit.
Mecha Locusceptors now benefit from The Best Oil (patch 5.0.3).
!StetmannPrestige3Disadvantage
Combat units cost 40% more minerals. Mecha Infestors are unavailable.
!Mengsk
[img[https://vignette.wikia.nocookie.net/starcraft/images/e/eb/MengskCoop_Game_LotV1.JPG/revision/latest/scale-to-width-down/200?cb=20191104145704][https://starcraft.fandom.com/wiki/Arcturus_Mengsk_(Co-op_Missions)]]
*Recommended for experienced players
*Conscript a large disposable army of Dominion Troopers.
*Control and level up the Royal Guard, your personal elite fighting force
*Imperial Mandate grants access to even more powerful and controversial abilities
!MengskMasteries
Masteries
*Power Set 1
**Laborer and Trooper Imperial Support: +1% / +30%
**Royal Guard Support: +1% / +30%
*Power Set 2
**Terrible Damage (Calldown Damage, not affecting Forced Conscription): +1% / +30%
**Royal Guard Cost: : -0.67% / -20%
*Power Set 3
**Starting Imperial Mandate: : +1 / +30
**Royal Guard Experience Gain Rate: +0.5% / +15%
!MengskPrestige0Name
[[Emperor of the Dominion|https://i.imgur.com/VVmfByq.png]]
!MengskPrestige0Posts
[img[https://vignette.wikia.nocookie.net/starcraft/images/e/eb/MengskCoop_Game_LotV1.JPG/revision/latest/window-crop/width/40/x-offset/0/y-offset/20/window-width/698/window-height/524?cb=20191104145704][https://starcraft2coop.com/commanders/mengsk]] ([[1|https://www.reddit.com/r/starcraft2coop/comments/hwqdee/a_terrible_guide_to_mengsks_prestige_talents/]])
!MengskPrestige0Videos
!MengskPrestige0Advantage
*Early game economic supremacy
*Troopers are inexpensive but upgradable for immense utility
*Royal Guard provide large amounts of utility to both players
*Supply Bunkers provide supply and defense
*Incredibly powerful static defenses
*Regular calldowns provide expendable troops and wave clear
*Artillery allows him to clear some map objectives without a fight
!MengskPrestige0Disadvantage
*Extremely gas starved
*Royal Guard is difficult to rebuild
*Vulnerable to Crowd Control and Area-of-Effect damage
*Low pushing ability without the use of call-downs or artillery.
*Commander requires both macro and micro to utilize properly
!MengskPrestige1Name
Toxic Tyrant
!MengskPrestige1Posts
([[1|https://www.reddit.com/r/starcraft2coop/comments/hw84br/commanders_prestige_talents_sc2_patch_50_ptr/fyy71rh/]])
!MengskPrestige1Videos
!MengskPrestige1Advantage
Contaminated Strike's fear lasts 200% longer, its damage-over-time effect additionally increases damage received by 25%, its cost is reduced by 20%, and its cooldown is reduced by 66%. Troopers provide Imperial Support while operating Earthsplitter Ordnance.
!MengskPrestige1Disadvantage
Nuclear Annihilation is unavailable.
!MengskPrestige2Name
Principal Proletariat
!MengskPrestige2Posts
!MengskPrestige2Videos
!MengskPrestige2Advantage
Royal Guard vespene gas costs reduced by 25% and XP gain increased by 100%.
!MengskPrestige2Disadvantage
Royal Guard mineral costs increased by 100% and supply cost increased by 50%.
!MengskPrestige3Name
Merchant of Death
!MengskPrestige3Posts
([[1|https://www.reddit.com/r/starcraft2coop/comments/hwuqvw/suicide_troopers_aim_is_amazing/]],[[2|https://www.reddit.com/r/starcraft2coop/comments/hwzrpe/quick_clips_merchant_of_death_trooper_only/]],[[3|https://www.reddit.com/r/starcraft2coop/comments/i0sfmv/merchant_of_death_mengsk/fzsadxy/]],[[4|https://www.reddit.com/r/starcraft2coop/comments/i2l5a0/so_mengsk_p3/g05hn8h/]],[[5|https://www.reddit.com/r/starcraft2coop/comments/i5zpxd/proof_of_concept_merchant_of_death_mengsk_bunker/]])
!MengskPrestige3Videos
!MengskPrestige3Advantage
Equipped Troopers activate a self-destruct mechanism in their weapons upon death. Trooper weapons cost 40 minerals and 20 vespene gas.
!MengskPrestige3Disadvantage
Troopers no longer drop weapons. Imperial Intercessors are unavailable.
!Resources
TiddlyWiki Classic for the Layout
https://classic.tiddlywiki.com/
Tiddlyspot for hosting
http://tiddlyspot.com/
StarCraft Fandom Wiki for the images and Guides
https://starcraft.fandom.com/wiki/Category:Co-op_Commanders
TeamLiquid https://tl.net/
and
https://starcraft2coop.com/
for the guides.
https://www.reddit.com/user/TheTerribleness/
for many reddit posts (linked in the table)
u/MonkeyBombG for the list
https://www.reddit.com/r/starcraft2coop/comments/hw85i0/complete_list_of_prestige_talents_taken_from_the/
How do you play the Public Test Realm?
https://www.reddit.com/r/starcraft2coop/comments/hwt1ap/how_do_you_play_the_ptr/
>Go to your Blizzard launcher, and change the region to Public Test Realm. It will copy your existing game, then download what changed.
<<tiddler Subsourian>>
<<tiddler CtG>>
Patch 5.0 PTR Prestige System
Image gallery on imgur
https://imgur.com/a/qqxqSYI
PATCH NOTES
Patch 5.0 https://starcraft2.com/en-us/news/23482838
Patch 5.0.2 https://starcraft2.com/en-us/news/23495670
[[STARCRAFT II 5.0.3 PATCH NOTES|https://starcraft2.com/en-us/news/23492556]] - BLIZZARD ENTERTAINMENT|AUGUST 24, 2020
+++
CO-OP MISSIONS
Maps
Part and Parcel
The mission timer now starts with 90 additional seconds.
Scythe of Amon
The Warp Prism for the bonus objective will now announce its planned path 20 seconds before moving.
Alarak
Shadow of Death Prestige
This Prestige has been reworked.
The Mothership and its Destroyers no longer receive reduced stats from this Prestige.
Summon Death Fleet initial cooldown removed.
Summon Death Fleet now costs 400/400.
Summon Death Fleet no longer comes with free Destroyers.
You may now warp-in permanent Destroyers from the Mothership at a cost of 125/75.
Artanis
Artanis now starts the game with a Power Field deployed.
Nexus Legate Prestige
Project Power Field’s energy cost increased from 10 to 25.
Dehaka
Broodbrother Prestige
Dehaka and Zweihaka’s maximum life are no longer reduced.
Zweihaka’s life bar is now a different color from Dehaka’s.
Fenix
Talis’ Ricochet Glaive ability cooldown decreased from 10 seconds to 5 seconds.
Unwavering Vindicator Prestige
Renamed to Unconquered Spirit to more accurately suit the commander’s lore.
Kerrigan
Malevolent Matriarch
Now grants Queens full movement speed off creep.
Queens may place Creep Tumors off of creep.
Creep Tumor vision increased.
Mengsk
Toxic Tyrant Prestige
Contaminated Strike’s bonus damage decreased from 100% to 25%.
Nova
Soldier of Fortune Prestige
Reworked such that it now reduces unit charge times on the first production structure (Barracks, Factory, or Starport) an Elite unit is built from instead of the Barracks. The other two production structures will have their charge times increased.
The Factory and Starport no longer have tech requirements.
Tactical Dispatcher Prestige
Now increases the cooldown of Griffin Airstrike by 300% instead of disabling the ability.
Raynor
Backwater Sheriff Prestige
Renamed to Backwater Marshal to more accurately suit the commander’s lore.
Rebel Raider Prestige
Tech requirements for the Armory and Orbital Command have been removed.
Stukov
Frightful Fleshwelder Prestige
Now additionally increases the rate at which Infested Siege Tanks generate ammo by 200% with the Automated Mitosis upgrade.
Plague Warden Prestige
Infested Banshees gain a Load All button.
Infested Banshee pickup ranged increased.
Stetmann
Oil Baron Prestige
Mecha Locusceptors now benefit from The Best Oil.
Swann
Heavy Weapons Specialist Prestige
Laser Drill splash damage increased from 50% to 100% of base.
Laser Drill movement speed reduction increased from 50% to 70%.
Laser Drill lock-on time reduced by 70%.
Payload Director Prestige
Science Vessels gain the Hyperjump ability.
Top bar cooldowns are now increased by 50%, down from 100%.
Tychus
Lone Wolf Prestige
Outlaw bonus damage changed from a flat 75% to 30% per Outlaw recruited (including Tychus).
Sirius’ Warhound Turrets and Vega’s Dominated units now benefit from their creator’s buffs.
Vorazun
Withering Siphon Prestige
Combat unit damage reduction decreased from 50% to 25%.
Enables all of Voraun’s crowd control effects to apply to Heroic units.
Zagara
Zagara’s Life and Energy Regeneration Mastery now applies to Queens.
Mastery order has been adjusted:
Set 1: Zagara Damage vs. Zagara and Queen Life and Energy Regeneration
Set 2: Zergling Evasion vs Intensified Frenzy
Set 3: Baneling damage vs Roach Drop damage
CO-OP MISSIONS BUG FIXES
General
Donny Vermillion no longer speaks using text-to-speech on The Vermillion Problem.
The Boom Bots mutator no longer interacts with the Transmutation mutator.
Abathur
The Limitless Prestige
Abathur’s Ultimate Evolutions are no longer able to evolve with 100 Biomass with this Prestige.
Alarak
Alarak will no longer occasionally fail to prioritize sacrificing Supplicants.
Reliquary of Souls Prestige
Deployed War Prisms can now benefit from Reliquary of Souls.
Tyrant Ascendant Prestige
Alarak no longer announces his Death Fleet is off cooldown with this Prestige active.
Artanis
Valorous Inspirator Prestige
Artanis’ Cooldown Reduction Mastery now works additively with this Prestige instead of multiplicatively.
Dehaka
Adjusted the tooltip for the Gene Mutation Chance mastery to indicate that the bonuses are now additive instead of multiplicative.
Broodbrother Prestige
Zweihaka now correctly obeys Dehaka’s Den’s rally.
Han & Horner
Han & Horner’s Prestiges now fully names the commander instead of just “Horner”.
Wing Commander Prestige
This Prestige no longer erroneously reduces Horner’s Starport’s unit mineral costs.
Karax
Changed the numerical text emanating from the Solar Forge to reflect recent balance changes.
Architect of War Prestige
Fixed an issue where Unity Barrier did not proc while benefitting structures.
Karax’s Chrono Boost Mastery now correctly increases attack speed benefits for structures.
Kerrigan
Fixed an issue where Immobilization Wave’s animation would not play.
Fixed an issue where Assimilation Aura would always state that it benefits from the Desolate Queen prestige.
Folly of Man Prestige
Folly of Man may no longer hit units in Bunkers.
Fixed an issue where the visual for the ability persists after Kerrigan dies.
Nova
Fixed an issue where Nova uttered two lines when spawning for the first time.
Raynor
Backwater Marshal Prestige
Infantry Armor upgrades now correctly increase Infantry health by 10% when researched.
Rough Rider Prestige
Now mentions the 10 additional life cost on Ignite Afterburners.
Swann
Heavy Weapons Specialist Prestige
Swann’s Laser Drill may no longer hit units in Bunkers.
Stetmann
The Deconstructive Nanites ability has been restored to the Mecha Infestor’s command card.
Tychus
Technical Recruiter Prestige
The Grenade Cooldown Mastery now interacts additively with this prestige instead of multiplicatively.
This Prestige now correctly reduces Nux’s Ultrasonic Pulse cooldown.
Dutiful Dogwalker Prestige
The Odin no longer uses the same minimap icon as Tychus while this Prestige is active.
Vorazun
Keeper of Shadows Prestige
With this Prestige active, Time Stop now correctly benefits from Vorazun’s level 14 Chronomancy talent.
Withering Siphon Prestige
Time Stop no longer prevents enemies from taking damage from this Prestige’s effects.
Zagara
Mother of Constructs Prestige
This Prestige now correctly upgrades the stats of burrowed Aberrations.
===
!TableOfContents
|>|>|>|>|>|>| Commanders<html><a name="ToC" /></html> |
|Terran|[[##Raynor]]|[[##Swann]]|[[##Nova]]|[[##Han&Horner]]|[[##Tychus]]|[[##Mengsk]]|
|Zerg|[[##Kerrigan]]|[[##Zagara]]|[[##Abathur]]|[[##Stukov]]|[[##Dehaka]]|[[##Stetmann]]|
|Protoss|[[##Artanis]]|[[##Vorazun]]|[[##Karax]]|[[##Alarak]]|[[##Fenix]]|[[##Zeratul]]|
<<tiddler Subsourian>>
<<tiddler CtG>>
|<<tiddler [[PrestData##Raynor]]>>|!lvl|!Prestige Talents|!Posts|!Videos|>|!Raynor|
|~|0|<<tiddler [[PrestData##RaynorPrestige0Name]]>>|<<tiddler [[PrestData##RaynorPrestige0Posts]]>>|<<tiddler [[PrestData##RaynorPrestige0Videos]]>>|Advantage|<<tiddler [[PrestData##RaynorPrestige0Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##RaynorPrestige0Disadvantage]]>>|
|~|1|<<tiddler [[PrestData##RaynorPrestige1Name]]>>|<<tiddler [[PrestData##RaynorPrestige1Posts]]>>|<<tiddler [[PrestData##RaynorPrestige1Videos]]>>|Advantage|<<tiddler [[PrestData##RaynorPrestige1Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##RaynorPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##RaynorPrestige2Name]]>>|<<tiddler [[PrestData##RaynorPrestige2Posts]]>>|<<tiddler [[PrestData##RaynorPrestige2Videos]]>>|Advantage|<<tiddler [[PrestData##RaynorPrestige2Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##RaynorPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##RaynorPrestige3Name]]>>|<<tiddler [[PrestData##RaynorPrestige3Posts]]>>|<<tiddler [[PrestData##RaynorPrestige3Videos]]>>|Advantage|<<tiddler [[PrestData##RaynorPrestige3Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##RaynorPrestige3Disadvantage]]>>|
|>|>|>|>|>|>||
|<<tiddler [[PrestData##Kerrigan]]>>|!lvl|!Prestige Talents|!Posts|!Videos|>|!Kerrigan|
|~|0|<<tiddler [[PrestData##KerriganPrestige0Name]]>>|<<tiddler [[PrestData##KerriganPrestige0Posts]]>>|<<tiddler [[PrestData##KerriganPrestige0Videos]]>>|Advantage|<<tiddler [[PrestData##KerriganPrestige0]]>>|
|~|~|~|~|~|Disadvantage|~|
|~|1|<<tiddler [[PrestData##KerriganPrestige1Name]]>>|<<tiddler [[PrestData##KerriganPrestige1Posts]]>>|<<tiddler [[PrestData##KerriganPrestige1Videos]]>>|Advantage|<<tiddler [[PrestData##KerriganPrestige1Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##KerriganPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##KerriganPrestige2Name]]>>|<<tiddler [[PrestData##KerriganPrestige2Posts]]>>|<<tiddler [[PrestData##KerriganPrestige2Videos]]>>|Advantage|<<tiddler [[PrestData##KerriganPrestige2Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##KerriganPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##KerriganPrestige3Name]]>>|<<tiddler [[PrestData##KerriganPrestige3Posts]]>>|<<tiddler [[PrestData##KerriganPrestige3Videos]]>>|Advantage|<<tiddler [[PrestData##KerriganPrestige3Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##KerriganPrestige3Disadvantage]]>>|
|>|>|>|>|>|>||
|<<tiddler [[PrestData##Artanis]]>>|!lvl|!Prestige Talents|!Posts|!Videos|>|!Artanis|
|~|0|<<tiddler [[PrestData##ArtanisPrestige0Name]]>>|<<tiddler [[PrestData##ArtanisPrestige0Posts]]>>|<<tiddler [[PrestData##ArtanisPrestige0Videos]]>>|Advantage|<<tiddler [[PrestData##ArtanisPrestige0]]>>|
|~|~|~|~|~|Disadvantage|~|
|~|1|<<tiddler [[PrestData##ArtanisPrestige1Name]]>>|<<tiddler [[PrestData##ArtanisPrestige1Posts]]>>|<<tiddler [[PrestData##ArtanisPrestige1Videos]]>>|Advantage|<<tiddler [[PrestData##ArtanisPrestige1Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##ArtanisPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##ArtanisPrestige2Name]]>>|<<tiddler [[PrestData##ArtanisPrestige2Posts]]>>|<<tiddler [[PrestData##ArtanisPrestige2Videos]]>>|Advantage|<<tiddler [[PrestData##ArtanisPrestige2Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##ArtanisPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##ArtanisPrestige3Name]]>>|<<tiddler [[PrestData##ArtanisPrestige3Posts]]>>|<<tiddler [[PrestData##ArtanisPrestige3Videos]]>>|Advantage|<<tiddler [[PrestData##ArtanisPrestige3Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##ArtanisPrestige3Disadvantage]]>>|
|>|>|>|>|>|>||
|<<tiddler [[PrestData##Swann]]>>|!lvl|!Prestige Talents|!Posts|!Videos|>|!Swann|
|~|0|<<tiddler [[PrestData##SwannPrestige0Name]]>>|<<tiddler [[PrestData##SwannPrestige0Posts]]>>|<<tiddler [[PrestData##SwannPrestige0Videos]]>>|Advantage|<<tiddler [[PrestData##SwannPrestige0]]>>|
|~|~|~|~|~|Disadvantage|~|
|~|1|<<tiddler [[PrestData##SwannPrestige1Name]]>>|<<tiddler [[PrestData##SwannPrestige1Posts]]>>|<<tiddler [[PrestData##SwannPrestige1Videos]]>>|Advantage|<<tiddler [[PrestData##SwannPrestige1Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##SwannPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##SwannPrestige2Name]]>>|<<tiddler [[PrestData##SwannPrestige2Posts]]>>|<<tiddler [[PrestData##SwannPrestige2Videos]]>>|Advantage|<<tiddler [[PrestData##SwannPrestige2Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##SwannPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##SwannPrestige3Name]]>>|<<tiddler [[PrestData##SwannPrestige3Posts]]>>|<<tiddler [[PrestData##SwannPrestige3Videos]]>>|Advantage|<<tiddler [[PrestData##SwannPrestige3Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##SwannPrestige3Disadvantage]]>>|
|>|>|>|>|>|>||
|<<tiddler [[PrestData##Zagara]]>>|!lvl|!Prestige Talents|!Posts|!Videos|>|!Zagara|
|~|0|<<tiddler [[PrestData##ZagaraPrestige0Name]]>>|<<tiddler [[PrestData##ZagaraPrestige0Posts]]>>|<<tiddler [[PrestData##ZagaraPrestige0Videos]]>>|Advantage|<<tiddler [[PrestData##ZagaraPrestige0]]>>|
|~|~|~|~|~|Disadvantage|~|
|~|1|<<tiddler [[PrestData##ZagaraPrestige1Name]]>>|<<tiddler [[PrestData##ZagaraPrestige1Posts]]>>|<<tiddler [[PrestData##ZagaraPrestige1Videos]]>>|Advantage|<<tiddler [[PrestData##ZagaraPrestige1Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##ZagaraPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##ZagaraPrestige2Name]]>>|<<tiddler [[PrestData##ZagaraPrestige2Posts]]>>|<<tiddler [[PrestData##ZagaraPrestige2Videos]]>>|Advantage|<<tiddler [[PrestData##ZagaraPrestige2Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##ZagaraPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##ZagaraPrestige3Name]]>>|<<tiddler [[PrestData##ZagaraPrestige3Posts]]>>|<<tiddler [[PrestData##ZagaraPrestige3Videos]]>>|Advantage|<<tiddler [[PrestData##ZagaraPrestige3Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##ZagaraPrestige3Disadvantage]]>>|
|>|>|>|>|>|>||
|<<tiddler [[PrestData##Vorazun]]>>|!lvl|!Prestige Talents|!Posts|!Videos|>|!Vorazun|
|~|0|<<tiddler [[PrestData##VorazunPrestige0Name]]>>|<<tiddler [[PrestData##VorazunPrestige0Posts]]>>|<<tiddler [[PrestData##VorazunPrestige0Videos]]>>|Advantage|<<tiddler [[PrestData##VorazunPrestige0]]>>|
|~|~|~|~|~|Disadvantage|~|
|~|1|<<tiddler [[PrestData##VorazunPrestige1Name]]>>|<<tiddler [[PrestData##VorazunPrestige1Posts]]>>|<<tiddler [[PrestData##VorazunPrestige1Videos]]>>|Advantage|<<tiddler [[PrestData##VorazunPrestige1Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##VorazunPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##VorazunPrestige2Name]]>>|<<tiddler [[PrestData##VorazunPrestige2Posts]]>>|<<tiddler [[PrestData##VorazunPrestige2Videos]]>>|Advantage|<<tiddler [[PrestData##VorazunPrestige2Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##VorazunPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##VorazunPrestige3Name]]>>|<<tiddler [[PrestData##VorazunPrestige3Posts]]>>|<<tiddler [[PrestData##VorazunPrestige3Videos]]>>|Advantage|<<tiddler [[PrestData##VorazunPrestige3Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##VorazunPrestige3Disadvantage]]>>|
|>|>|>|>|>|>||
|<<tiddler [[PrestData##Karax]]>>|!lvl|!Prestige Talents|!Posts|!Videos|>|!Karax|
|~|0|<<tiddler [[PrestData##KaraxPrestige0Name]]>>|<<tiddler [[PrestData##KaraxPrestige0Posts]]>>|<<tiddler [[PrestData##KaraxPrestige0Videos]]>>|Advantage|<<tiddler [[PrestData##KaraxPrestige0]]>>|
|~|~|~|~|~|Disadvantage|~|
|~|1|<<tiddler [[PrestData##KaraxPrestige1Name]]>>|<<tiddler [[PrestData##KaraxPrestige1Posts]]>>|<<tiddler [[PrestData##KaraxPrestige1Videos]]>>|Advantage|<<tiddler [[PrestData##KaraxPrestige1Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##KaraxPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##KaraxPrestige2Name]]>>|<<tiddler [[PrestData##KaraxPrestige2Posts]]>>|<<tiddler [[PrestData##KaraxPrestige2Videos]]>>|Advantage|<<tiddler [[PrestData##KaraxPrestige2Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##KaraxPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##KaraxPrestige3Name]]>>|<<tiddler [[PrestData##KaraxPrestige3Posts]]>>|<<tiddler [[PrestData##KaraxPrestige3Videos]]>>|Advantage|<<tiddler [[PrestData##KaraxPrestige3Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##KaraxPrestige3Disadvantage]]>>|
|>|>|>|>|>|>||
|<<tiddler [[PrestData##Abathur]]>>|!lvl|!Prestige Talents|!Posts|!Videos|>|!Abathur|
|~|0|<<tiddler [[PrestData##AbathurPrestige0Name]]>>|<<tiddler [[PrestData##AbathurPrestige0Posts]]>>|<<tiddler [[PrestData##AbathurPrestige0Videos]]>>|Advantage|<<tiddler [[PrestData##AbathurPrestige0]]>>|
|~|~|~|~|~|Disadvantage|~|
|~|1|<<tiddler [[PrestData##AbathurPrestige1Name]]>>|<<tiddler [[PrestData##AbathurPrestige1Posts]]>>|<<tiddler [[PrestData##AbathurPrestige1Videos]]>>|Advantage|<<tiddler [[PrestData##AbathurPrestige1Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##AbathurPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##AbathurPrestige2Name]]>>|<<tiddler [[PrestData##AbathurPrestige2Posts]]>>|<<tiddler [[PrestData##AbathurPrestige2Videos]]>>|Advantage|<<tiddler [[PrestData##AbathurPrestige2Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##AbathurPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##AbathurPrestige3Name]]>>|<<tiddler [[PrestData##AbathurPrestige3Posts]]>>|<<tiddler [[PrestData##AbathurPrestige3Videos]]>>|Advantage|<<tiddler [[PrestData##AbathurPrestige3Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##AbathurPrestige3Disadvantage]]>>|
|>|>|>|>|>|>||
|<<tiddler [[PrestData##Alarak]]>>|!lvl|!Prestige Talents|!Posts|!Videos|>|!Alarak|
|~|0|<<tiddler [[PrestData##AlarakPrestige0Name]]>>|<<tiddler [[PrestData##AlarakPrestige0Posts]]>>|<<tiddler [[PrestData##AlarakPrestige0Videos]]>>|Advantage|<<tiddler [[PrestData##AlarakPrestige0]]>>|
|~|~|~|~|~|Disadvantage|~|
|~|1|<<tiddler [[PrestData##AlarakPrestige1Name]]>>|<<tiddler [[PrestData##AlarakPrestige1Posts]]>>|<<tiddler [[PrestData##AlarakPrestige1Videos]]>>|Advantage|<<tiddler [[PrestData##AlarakPrestige1Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##AlarakPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##AlarakPrestige2Name]]>>|<<tiddler [[PrestData##AlarakPrestige2Posts]]>>|<<tiddler [[PrestData##AlarakPrestige2Videos]]>>|Advantage|<<tiddler [[PrestData##AlarakPrestige2Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##AlarakPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##AlarakPrestige3Name]]>>|<<tiddler [[PrestData##AlarakPrestige3Posts]]>>|<<tiddler [[PrestData##AlarakPrestige3Videos]]>>|Advantage|<<tiddler [[PrestData##AlarakPrestige3Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##AlarakPrestige3Disadvantage]]>>|
|>|>|>|>|>|>||
|<<tiddler [[PrestData##Nova]]>>|!lvl|!Prestige Talents|!Posts|!Videos|>|!Nova|
|~|0|<<tiddler [[PrestData##NovaPrestige0Name]]>>|<<tiddler [[PrestData##NovaPrestige0Posts]]>>|<<tiddler [[PrestData##NovaPrestige0Videos]]>>|Advantage|<<tiddler [[PrestData##NovaPrestige0]]>>|
|~|~|~|~|~|Disadvantage|~|
|~|1|<<tiddler [[PrestData##NovaPrestige1Name]]>>|<<tiddler [[PrestData##NovaPrestige1Posts]]>>|<<tiddler [[PrestData##NovaPrestige1Videos]]>>|Advantage|<<tiddler [[PrestData##NovaPrestige1Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##NovaPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##NovaPrestige2Name]]>>|<<tiddler [[PrestData##NovaPrestige2Posts]]>>|<<tiddler [[PrestData##NovaPrestige2Videos]]>>|Advantage|<<tiddler [[PrestData##NovaPrestige2Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##NovaPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##NovaPrestige3Name]]>>|<<tiddler [[PrestData##NovaPrestige3Posts]]>>|<<tiddler [[PrestData##NovaPrestige3Videos]]>>|Advantage|<<tiddler [[PrestData##NovaPrestige3Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##NovaPrestige3Disadvantage]]>>|
|>|>|>|>|>|>||
|<<tiddler [[PrestData##Stukov]]>>|!lvl|!Prestige Talents|!Posts|!Videos|>|!Stukov|
|~|0|<<tiddler [[PrestData##StukovPrestige0Name]]>>|<<tiddler [[PrestData##StukovPrestige0Posts]]>>|<<tiddler [[PrestData##StukovPrestige0Videos]]>>|Advantage|<<tiddler [[PrestData##StukovPrestige0]]>>|
|~|~|~|~|~|Disadvantage|~|
|~|1|<<tiddler [[PrestData##StukovPrestige1Name]]>>|<<tiddler [[PrestData##StukovPrestige1Posts]]>>|<<tiddler [[PrestData##StukovPrestige1Videos]]>>|Advantage|<<tiddler [[PrestData##StukovPrestige1Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##StukovPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##StukovPrestige2Name]]>>|<<tiddler [[PrestData##StukovPrestige2Posts]]>>|<<tiddler [[PrestData##StukovPrestige2Videos]]>>|Advantage|<<tiddler [[PrestData##StukovPrestige2Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##StukovPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##StukovPrestige3Name]]>>|<<tiddler [[PrestData##StukovPrestige3Posts]]>>|<<tiddler [[PrestData##StukovPrestige3Videos]]>>|Advantage|<<tiddler [[PrestData##StukovPrestige3Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##StukovPrestige3Disadvantage]]>>|
|>|>|>|>|>|>||
|<<tiddler [[PrestData##Fenix]]>>|!lvl|!Prestige Talents|!Posts|!Videos|>|!Fenix|
|~|0|<<tiddler [[PrestData##FenixPrestige0Name]]>>|<<tiddler [[PrestData##FenixPrestige0Posts]]>>|<<tiddler [[PrestData##FenixPrestige0Videos]]>>|Advantage|<<tiddler [[PrestData##FenixPrestige0]]>>|
|~|~|~|~|~|Disadvantage|~|
|~|1|<<tiddler [[PrestData##FenixPrestige1Name]]>>|<<tiddler [[PrestData##FenixPrestige1Posts]]>>|<<tiddler [[PrestData##FenixPrestige1Videos]]>>|Advantage|<<tiddler [[PrestData##FenixPrestige1Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##FenixPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##FenixPrestige2Name]]>>|<<tiddler [[PrestData##FenixPrestige2Posts]]>>|<<tiddler [[PrestData##FenixPrestige2Videos]]>>|Advantage|<<tiddler [[PrestData##FenixPrestige2Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##FenixPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##FenixPrestige3Name]]>>|<<tiddler [[PrestData##FenixPrestige3Posts]]>>|<<tiddler [[PrestData##FenixPrestige3Videos]]>>|Advantage|<<tiddler [[PrestData##FenixPrestige3Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##FenixPrestige3Disadvantage]]>>|
|>|>|>|>|>|>||
|<<tiddler [[PrestData##Dehaka]]>>|!lvl|!Prestige Talents|!Posts|!Videos|>|!Dehaka|
|~|0|<<tiddler [[PrestData##DehakaPrestige0Name]]>>|<<tiddler [[PrestData##DehakaPrestige0Posts]]>>|<<tiddler [[PrestData##DehakaPrestige0Videos]]>>|Advantage|<<tiddler [[PrestData##DehakaPrestige0]]>>|
|~|~|~|~|~|Disadvantage|~|
|~|1|<<tiddler [[PrestData##DehakaPrestige1Name]]>>|<<tiddler [[PrestData##DehakaPrestige1Posts]]>>|<<tiddler [[PrestData##DehakaPrestige1Videos]]>>|Advantage|<<tiddler [[PrestData##DehakaPrestige1Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##DehakaPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##DehakaPrestige2Name]]>>|<<tiddler [[PrestData##DehakaPrestige2Posts]]>>|<<tiddler [[PrestData##DehakaPrestige2Videos]]>>|Advantage|<<tiddler [[PrestData##DehakaPrestige2Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##DehakaPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##DehakaPrestige3Name]]>>|<<tiddler [[PrestData##DehakaPrestige3Posts]]>>|<<tiddler [[PrestData##DehakaPrestige3Videos]]>>|Advantage|<<tiddler [[PrestData##DehakaPrestige3Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##DehakaPrestige3Disadvantage]]>>|
|>|>|>|>|>|>||
|<<tiddler [[PrestData##Han&Horner]]>>|!lvl|!Prestige Talents|!Posts|!Videos|>|!Han&Horner|
|~|0|<<tiddler [[PrestData##Han&HornerPrestige0Name]]>>|<<tiddler [[PrestData##Han&HornerPrestige0Posts]]>>|<<tiddler [[PrestData##Han&HornerPrestige0Videos]]>>|Advantage|<<tiddler [[PrestData##Han&HornerPrestige0]]>>|
|~|~|~|~|~|Disadvantage|~|
|~|1|<<tiddler [[PrestData##Han&HornerPrestige1Name]]>>|<<tiddler [[PrestData##Han&HornerPrestige1Posts]]>>|<<tiddler [[PrestData##Han&HornerPrestige1Videos]]>>|Advantage|<<tiddler [[PrestData##Han&HornerPrestige1Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##Han&HornerPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##Han&HornerPrestige2Name]]>>|<<tiddler [[PrestData##Han&HornerPrestige2Posts]]>>|<<tiddler [[PrestData##Han&HornerPrestige2Videos]]>>|Advantage|<<tiddler [[PrestData##Han&HornerPrestige2Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##Han&HornerPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##Han&HornerPrestige3Name]]>>|<<tiddler [[PrestData##Han&HornerPrestige3Posts]]>>|<<tiddler [[PrestData##Han&HornerPrestige3Videos]]>>|Advantage|<<tiddler [[PrestData##Han&HornerPrestige3Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##Han&HornerPrestige3Disadvantage]]>>|
|>|>|>|>|>|>||
|<<tiddler [[PrestData##Tychus]]>>|!lvl|!Prestige Talents|!Posts|!Videos|>|!Tychus|
|~|0|<<tiddler [[PrestData##TychusPrestige0Name]]>>|<<tiddler [[PrestData##TychusPrestige0Posts]]>>|<<tiddler [[PrestData##TychusPrestige0Videos]]>>|Advantage|<<tiddler [[PrestData##TychusPrestige0]]>>|
|~|~|~|~|~|Disadvantage|~|
|~|1|<<tiddler [[PrestData##TychusPrestige1Name]]>>|<<tiddler [[PrestData##TychusPrestige1Posts]]>>|<<tiddler [[PrestData##TychusPrestige1Videos]]>>|Advantage|<<tiddler [[PrestData##TychusPrestige1Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##TychusPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##TychusPrestige2Name]]>>|<<tiddler [[PrestData##TychusPrestige2Posts]]>>|<<tiddler [[PrestData##TychusPrestige2Videos]]>>|Advantage|<<tiddler [[PrestData##TychusPrestige2Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##TychusPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##TychusPrestige3Name]]>>|<<tiddler [[PrestData##TychusPrestige3Posts]]>>|<<tiddler [[PrestData##TychusPrestige3Videos]]>>|Advantage|<<tiddler [[PrestData##TychusPrestige3Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##TychusPrestige3Disadvantage]]>>|
|>|>|>|>|>|>||
|<<tiddler [[PrestData##Zeratul]]>>|!lvl|!Prestige Talents|!Posts|!Videos|>|!Zeratul|
|~|0|<<tiddler [[PrestData##ZeratulPrestige0Name]]>>|<<tiddler [[PrestData##ZeratulPrestige0Posts]]>>|<<tiddler [[PrestData##ZeratulPrestige0Videos]]>>|Advantage|<<tiddler [[PrestData##ZeratulPrestige0]]>>|
|~|~|~|~|~|Disadvantage|~|
|~|1|<<tiddler [[PrestData##ZeratulPrestige1Name]]>>|<<tiddler [[PrestData##ZeratulPrestige1Posts]]>>|<<tiddler [[PrestData##ZeratulPrestige1Videos]]>>|Advantage|<<tiddler [[PrestData##ZeratulPrestige1Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##ZeratulPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##ZeratulPrestige2Name]]>>|<<tiddler [[PrestData##ZeratulPrestige2Posts]]>>|<<tiddler [[PrestData##ZeratulPrestige2Videos]]>>|Advantage|<<tiddler [[PrestData##ZeratulPrestige2Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##ZeratulPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##ZeratulPrestige3Name]]>>|<<tiddler [[PrestData##ZeratulPrestige3Posts]]>>|<<tiddler [[PrestData##ZeratulPrestige3Videos]]>>|Advantage|<<tiddler [[PrestData##ZeratulPrestige3Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##ZeratulPrestige3Disadvantage]]>>|
|>|>|>|>|>|>||
|<<tiddler [[PrestData##Stetmann]]>>|!lvl|!Prestige Talents|!Posts|!Videos|>|!Stetmann|
|~|0|<<tiddler [[PrestData##StetmannPrestige0Name]]>>|<<tiddler [[PrestData##StetmannPrestige0Posts]]>>|<<tiddler [[PrestData##StetmannPrestige0Videos]]>>|Advantage|<<tiddler [[PrestData##StetmannPrestige0]]>>|
|~|~|~|~|~|Disadvantage|~|
|~|1|<<tiddler [[PrestData##StetmannPrestige1Name]]>>|<<tiddler [[PrestData##StetmannPrestige1Posts]]>>|<<tiddler [[PrestData##StetmannPrestige1Videos]]>>|Advantage|<<tiddler [[PrestData##StetmannPrestige1Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##StetmannPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##StetmannPrestige2Name]]>>|<<tiddler [[PrestData##StetmannPrestige2Posts]]>>|<<tiddler [[PrestData##StetmannPrestige2Videos]]>>|Advantage|<<tiddler [[PrestData##StetmannPrestige2Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##StetmannPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##StetmannPrestige3Name]]>>|<<tiddler [[PrestData##StetmannPrestige3Posts]]>>|<<tiddler [[PrestData##StetmannPrestige3Videos]]>>|Advantage|<<tiddler [[PrestData##StetmannPrestige3Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##StetmannPrestige3Disadvantage]]>>|
|>|>|>|>|>|>||
|<<tiddler [[PrestData##Mengsk]]>>|!lvl|!Prestige Talents|!Posts|!Videos|>|!Mengsk|
|~|0|<<tiddler [[PrestData##MengskPrestige0Name]]>>|<<tiddler [[PrestData##MengskPrestige0Posts]]>>|<<tiddler [[PrestData##MengskPrestige0Videos]]>>|Advantage|<<tiddler [[PrestData##MengskPrestige0]]>>|
|~|~|~|~|~|Disadvantage|~|
|~|1|<<tiddler [[PrestData##MengskPrestige1Name]]>>|<<tiddler [[PrestData##MengskPrestige1Posts]]>>|<<tiddler [[PrestData##MengskPrestige1Videos]]>>|Advantage|<<tiddler [[PrestData##MengskPrestige1Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##MengskPrestige1Disadvantage]]>>|
|~|2|<<tiddler [[PrestData##MengskPrestige2Name]]>>|<<tiddler [[PrestData##MengskPrestige2Posts]]>>|<<tiddler [[PrestData##MengskPrestige2Videos]]>>|Advantage|<<tiddler [[PrestData##MengskPrestige2Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##MengskPrestige2Disadvantage]]>>|
|~|3|<<tiddler [[PrestData##MengskPrestige3Name]]>>|<<tiddler [[PrestData##MengskPrestige3Posts]]>>|<<tiddler [[PrestData##MengskPrestige3Videos]]>>|Advantage|<<tiddler [[PrestData##MengskPrestige3Advantage]]>>|
|~|~|~|~|~|Disadvantage|<<tiddler [[PrestData##MengskPrestige3Disadvantage]]>>|
|>|>|>|>|>|>||
|>|>|>|||>|!Resources|
|>|>|>|||>|<<tiddler [[PrestData##Resources]]>>|
/***
|Name:|PrettyDatesPlugin|
|Description:|Provides a new date format ('pppp') that displays times such as '2 days ago'|
|Version:|1.0a|
|Date:|27-Jun-2011|
|Source:|http://mptw.tiddlyspot.com/#PrettyDatesPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!!Notes
* If you want to you can rename this plugin. :) Some suggestions: LastUpdatedPlugin, RelativeDatesPlugin, SmartDatesPlugin, SexyDatesPlugin.
* Inspired by http://ejohn.org/files/pretty.js
***/
//{{{
Date.prototype.prettyDate = function() {
var diff = (((new Date()).getTime() - this.getTime()) / 1000);
var day_diff = Math.floor(diff / 86400);
if (isNaN(day_diff)) return "";
else if (diff < 0) return "in the future";
else if (diff < 60) return "just now";
else if (diff < 120) return "1 minute ago";
else if (diff < 3600) return Math.floor(diff/60) + " minutes ago";
else if (diff < 7200) return "1 hour ago";
else if (diff < 86400) return Math.floor(diff/3600) + " hours ago";
else if (day_diff == 1) return "Yesterday";
else if (day_diff < 7) return day_diff + " days ago";
else if (day_diff < 14) return "a week ago";
else if (day_diff < 31) return Math.ceil(day_diff/7) + " weeks ago";
else if (day_diff < 62) return "a month ago";
else if (day_diff < 365) return "about " + Math.ceil(day_diff/31) + " months ago";
else if (day_diff < 730) return "a year ago";
else return Math.ceil(day_diff/365) + " years ago";
}
Date.prototype.formatString_orig_mptw = Date.prototype.formatString;
Date.prototype.formatString = function(template) {
return this.formatString_orig_mptw(template).replace(/pppp/,this.prettyDate());
}
// for MPTW. otherwise edit your ViewTemplate as required.
// config.mptwDateFormat = 'pppp (DD/MM/YY)';
config.mptwDateFormat = 'pppp';
//}}}
!![[Pride of Augustgrad]]
Powerful Royal Guard warship. Can use Yamato Cannon and Tactical Jump.
Can attack ground and air units.
[img[https://bnetcmsus-a.akamaihd.net/cms/page_media/S3O6JV36E2BU1572391215745.png]]
Can attack ground and air units.
[img[https://vignette.wikia.nocookie.net/starcraft/images/6/66/YamatoCannon_SC2_Icon1.jpg/revision/latest/scale-to-width-down/30?cb=20150723095713]] Yamato Cannon
[img[https://vignette.wikia.nocookie.net/starcraft/images/1/1b/JumpHyperion_SC2_Icon1.jpg/revision/latest/scale-to-width-down/30?cb=20151219073637]] Tactical Jump
| !Level | !Talent |
|12 - New Unit: Pride of Augustgrad|Powerful Royal Guard warship. Can use Yamato Cannon and Tactical Jump. Built from the Starport.|
|14 - Advanced Royal Guard Upgrade Cache|Unlocks the following upgrades:<br>-Pride of Augustgrad grant +1 attack range to nearby friendly ranged ground units. (Researched at the Fusion Core).|
|15 - Promotion Granted|Royal Guard units can now attain Veterancy: Rank 3, gaining the following abilities:<br>-Allows the Prode of Augustgrad's Yamato Cannon to fire three times in rapid succession.|
Immolates a target biological enemy for 20 seconds, dealing 20 damage per second to themselves and nearby biological enemies.
At Rank 2, this ability dealing 30 damage per second to themselves and nearby biological enemies.
At Rank 3, this ability deals 50 damage to nearby enemies upon the target's death.
<<tiddler Costa with:"75" "9" "20" "5">>
/***
|Name:|QuickOpenTagPlugin|
|Description:|Changes tag links to make it easier to open tags as tiddlers|
|Version:|3.0.1a|
|Date:|27-Jun-2011|
|Source:|http://mptw.tiddlyspot.com/#QuickOpenTagPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
***/
//{{{
config.quickOpenTag = {
dropdownChar: (document.all ? "\u25bc" : "\u25be"), // the little one doesn't work in IE?
createTagButton: function(place,tag,excludeTiddler) {
// little hack so we can do this: <<tag PrettyTagName|RealTagName>>
var splitTag = tag.split("|");
var pretty = tag;
if (splitTag.length == 2) {
tag = splitTag[1];
pretty = splitTag[0];
}
var sp = createTiddlyElement(place,"span",null,"quickopentag");
createTiddlyText(createTiddlyLink(sp,tag,false),pretty);
var theTag = createTiddlyButton(sp,config.quickOpenTag.dropdownChar,
config.views.wikified.tag.tooltip.format([tag]),onClickTag);
theTag.setAttribute("tag",tag);
if (excludeTiddler)
theTag.setAttribute("tiddler",excludeTiddler);
return(theTag);
},
miniTagHandler: function(place,macroName,params,wikifier,paramString,tiddler) {
var tagged = store.getTaggedTiddlers(tiddler.title);
if (tagged.length > 0) {
var theTag = createTiddlyButton(place,config.quickOpenTag.dropdownChar,
config.views.wikified.tag.tooltip.format([tiddler.title]),onClickTag);
theTag.setAttribute("tag",tiddler.title);
theTag.className = "miniTag";
}
},
allTagsHandler: function(place,macroName,params) {
var tags = store.getTags(params[0]);
var filter = params[1]; // new feature
var ul = createTiddlyElement(place,"ul");
if(tags.length == 0)
createTiddlyElement(ul,"li",null,"listTitle",this.noTags);
for(var t=0; t<tags.length; t++) {
var title = tags[t][0];
if (!filter || (title.match(new RegExp('^'+filter)))) {
var info = getTiddlyLinkInfo(title);
var theListItem =createTiddlyElement(ul,"li");
var theLink = createTiddlyLink(theListItem,tags[t][0],true);
var theCount = " (" + tags[t][1] + ")";
theLink.appendChild(document.createTextNode(theCount));
var theDropDownBtn = createTiddlyButton(theListItem," " +
config.quickOpenTag.dropdownChar,this.tooltip.format([tags[t][0]]),onClickTag);
theDropDownBtn.setAttribute("tag",tags[t][0]);
}
}
},
// todo fix these up a bit
styles: [
"/*{{{*/",
"/* created by QuickOpenTagPlugin */",
".tagglyTagged .quickopentag, .tagged .quickopentag ",
" { margin-right:1.2em; border:1px solid #eee; padding:2px; padding-right:0px; padding-left:1px; }",
".quickopentag .tiddlyLink { padding:2px; padding-left:3px; }",
".quickopentag a.button { padding:1px; padding-left:2px; padding-right:2px;}",
"/* extra specificity to make it work right */",
"#displayArea .viewer .quickopentag a.button, ",
"#displayArea .viewer .quickopentag a.tiddyLink, ",
"#mainMenu .quickopentag a.tiddyLink, ",
"#mainMenu .quickopentag a.tiddyLink ",
" { border:0px solid black; }",
"#displayArea .viewer .quickopentag a.button, ",
"#mainMenu .quickopentag a.button ",
" { margin-left:0px; padding-left:2px; }",
"#displayArea .viewer .quickopentag a.tiddlyLink, ",
"#mainMenu .quickopentag a.tiddlyLink ",
" { margin-right:0px; padding-right:0px; padding-left:0px; margin-left:0px; }",
"a.miniTag {font-size:150%;} ",
"#mainMenu .quickopentag a.button ",
" /* looks better in right justified main menus */",
" { margin-left:0px; padding-left:2px; margin-right:0px; padding-right:0px; }",
"#topMenu .quickopentag { padding:0px; margin:0px; border:0px; }",
"#topMenu .quickopentag .tiddlyLink { padding-right:1px; margin-right:0px; }",
"#topMenu .quickopentag .button { padding-left:1px; margin-left:0px; border:0px; }",
"/*}}}*/",
""].join("\n"),
init: function() {
// we fully replace these builtins. can't hijack them easily
window.createTagButton = this.createTagButton;
config.macros.allTags.handler = this.allTagsHandler;
config.macros.miniTag = { handler: this.miniTagHandler };
config.shadowTiddlers["QuickOpenTagStyles"] = this.styles;
store.addNotification("QuickOpenTagStyles",refreshStyles);
}
}
config.quickOpenTag.init();
//}}}
|!Wiki|!Liquidpedia|!sc2coop|
|[img[https://vignette.wikia.nocookie.net/starcraft/images/2/2a/RaynorMarineBattlecruiser_SC2-LotV_Art1.jpg/revision/latest/scale-to-width-down/350?cb=20180419043049][https://starcraft.fandom.com/wiki/Jim_Raynor_(Co-op_Missions)]]|[img[https://tl.net/staff/Chimaron/Guides/Raynor/Raynor_LinkMini6.jpg][https://tl.net/forum/single-player/526722-co-op-commander-guide-raynor]]|[img[https://starcraft2coop.com/images/commanderportraits/raynorportrait.png][https://starcraft2coop.com/commanders/raynor]]|
|>|!Building|>|!Train/Research/Summon|
|[img[https://vignette.wikia.nocookie.net/starcraft/images/9/9e/CommandCenter_SC2_Icon1.jpg/revision/latest?cb=20160107024135][Command Center]]|[[Command Center]]|[img[https://vignette.wikia.nocookie.net/starcraft/images/6/61/SCV_SC2_Icon1.jpg/revision/latest?cb=20160107022653][SCV]]|[[SCV]]|
|[img[https://vignette.wikia.nocookie.net/starcraft/images/c/ca/OrbitalCommand_SC2_Icon1.jpg/revision/latest?cb=20160107024229][Command Center]]|[[Orbital Command]]|[img[https://vignette.wikia.nocookie.net/starcraft/images/0/04/MULE_SC2_Icon1.jpg/revision/latest?cb=20160107022519][Mule]]|[[Mule]]|
|[img[https://vignette.wikia.nocookie.net/starcraft/images/4/4b/Barracks_SC2_Icon1.jpg/revision/latest?cb=20160107024033][Barracks]]|[[Barracks]]|[img[https://vignette.wikia.nocookie.net/starcraft/images/4/47/Marine_SC2_Icon1.jpg/revision/latest?cb=20160107022344][Marine]]Marine|[img[https://vignette.wikia.nocookie.net/starcraft/images/b/ba/Marauder_SC2_Icon1.jpg/revision/latest?cb=20160107022315][Marauder]]|[img[https://vignette.wikia.nocookie.net/starcraft/images/c/ca/Firebat_SC2_Icon1.jpg/revision/latest?cb=20160329200555][Firebat]]|[img[https://vignette.wikia.nocookie.net/starcraft/images/b/b5/Medic_SC2_Icon1.jpg/revision/latest?cb=20160329200820][Medic]]||
|~|~|[[Orbital Drop]]||||[[Set Rally Point]]|
|~|~|[[Tech Lab (Barracks)]]|[[Tech Reactor (Barracks)]]||[[Lift Off]]/[[Land]]||
/***
|Name:|RenameTagsPlugin|
|Description:|Allows you to easily rename or delete tags across multiple tiddlers|
|Version:|3.1|
|Date:|17-Jun-2013|
|Source:|http://mptw.tiddlyspot.com/#RenameTagsPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License|http://mptw.tiddlyspot.com/#TheBSDLicense|
Rename a tag and you will be prompted to rename it in all its tagged tiddlers.
***/
//{{{
config.renameTags = {
prompts: {
rename: "Rename the tag '%0' to '%1' in %2 tidder%3?",
remove: "Remove the tag '%0' from %1 tidder%2?"
},
removeTag: function(tag,tiddlers) {
store.suspendNotifications();
for (var i=0;i<tiddlers.length;i++) {
store.setTiddlerTag(tiddlers[i].title,false,tag);
}
store.resumeNotifications();
store.notifyAll();
},
renameTag: function(oldTag,newTag,tiddlers) {
store.suspendNotifications();
for (var i=0;i<tiddlers.length;i++) {
var title = tiddlers[i].title;
store.setTiddlerTag(title, false, oldTag); // remove old
store.setTiddlerTag(title, true, newTag); // add new
store.getTiddler(title).modified = new Date(); // touch modified date
}
store.resumeNotifications();
store.notifyAll();
},
storeMethods: {
saveTiddler_orig_renameTags: TiddlyWiki.prototype.saveTiddler,
saveTiddler: function(title,newTitle,newBody,modifier,modified,tags,fields,clearChangeCount,created,creator) {
if (title != newTitle) {
var tagged = this.getTaggedTiddlers(title);
if (tagged.length > 0) {
// then we are renaming a tag
if (confirm(config.renameTags.prompts.rename.format([title,newTitle,tagged.length,tagged.length>1?"s":""])))
config.renameTags.renameTag(title,newTitle,tagged);
if (!this.tiddlerExists(title) && newBody == "")
// dont create unwanted tiddler
return null;
}
}
return this.saveTiddler_orig_renameTags(title,newTitle,newBody,modifier,modified,tags,fields,clearChangeCount,created,creator);
},
removeTiddler_orig_renameTags: TiddlyWiki.prototype.removeTiddler,
removeTiddler: function(title) {
var tagged = this.getTaggedTiddlers(title);
if (tagged.length > 0)
if (confirm(config.renameTags.prompts.remove.format([title,tagged.length,tagged.length>1?"s":""])))
config.renameTags.removeTag(title,tagged);
return this.removeTiddler_orig_renameTags(title);
}
},
init: function() {
merge(TiddlyWiki.prototype,this.storeMethods);
}
}
config.renameTags.init();
//}}}
Killing enemy units grants experience to nearby Royal Guards. If there are no nearby Royal Guards when an enemy is killed, the experience is instead split between all Royal Guards in the mission. Experience allows the unit to gain Rank, which improves its damage, armor, health, energy and unlock new abilities or passive bonuses.
|Rank| Experience (total) | Hit Points | Armor | Damage | Damage vs Armored | Abilities |h
| 0 | 0 (0) | 300 | 0 | 15 | 30 | |
| 1 | 1200 (1200) | 200 | 1 | 19 | 38 | [[Labyrinth Cloak]] |
| 2 | 2800 (4000) | 250 | 2 | 22 | 45 | Increase Pyrokinetic Immolation periodic damage by 50%. Increase EMP Blast stun duration by 1 second. |
| 3 | 4800 (8800) | 300 | 3 | 26 | 53 | Upon target's death, Pyrokinetic Immolation deals 50 damage to nearby enemies. EMP Blast drain all of the target's energy and deals damage equal to that amount. |
Killing enemy units grants experience to nearby Royal Guards. If there are no nearby Royal Guards when an enemy is killed, the experience is instead split between all Royal Guards in the mission. Experience allows the unit to gain Rank, which improves its damage, armor, health and unlock new abilities or passive bonuses.
|Rank| Experience (total) | Hit Points | Armor | Damage | Damage vs Armored | Abilities |h
| 0 | 0 (0) | 300 | 1 | 20 | 40 | |
| 1 | 1200 (1200) | 375 | 2 | 25 | 50 | [[Aegis Barrier]] |
| 2 | 2800 (4000) | 450 | 3 | 30 | 60 | Attacks create a cone of shrapnel, dealing 20% damage to enemis behind the target. |
| 3 | 4800 (8800) | 525 | 4 | 35 | 70 | Gain the [[High Grade Stimpacks]] ability |
/***
|Name:|SaveCloseTiddlerPlugin|
|Description:|Provides two extra toolbar commands, saveCloseTiddler and cancelCloseTiddler|
|Version:|3.0a|
|Date:|27-Jun-2011|
|Source:|http://mptw.tiddlyspot.com/#SaveCloseTiddlerPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
To use these add them to the commands in ToolbarCommands under EditToolbar,
or in the MptwTheme tiddler under EditTemplate.
***/
//{{{
merge(config.commands,{
saveCloseTiddler: {
text: 'done/close',
tooltip: 'Save changes to this tiddler and close it',
handler: function(ev,src,title) {
var closeTitle = title;
var newTitle = story.saveTiddler(title,ev.shiftKey);
if (newTitle)
closeTitle = newTitle;
return config.commands.closeTiddler.handler(ev,src,closeTitle);
}
},
cancelCloseTiddler: {
text: 'cancel/close',
tooltip: 'Undo changes to this tiddler and close it',
handler: function(ev,src,title) {
// the same as closeTiddler now actually
return config.commands.closeTiddler.handler(ev,src,title);
}
}
});
//}}}
/***
|Name|SectionLinksPlugin|
|Source|http://www.TiddlyTools.com/#SectionLinksPlugin|
|Documentation|http://www.TiddlyTools.com/#SectionLinksPlugin|
|Version|1.4.2|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|allow tiddler sections in TiddlyLinks to be used as anchor points|
This plugin enhances tiddler links so that they can include section references that ''auto-scroll to the indicated section heading'' within a tiddler (i.e., similar to the 'anchor' behavior provided in HTML by {{{<a name="foo">}}} and {{{<a href="#foo">...</a>}}}). The {{{<<tiddler>>}}} macro syntax has also be extended to allow section references without a tiddler name, so that transclusion of //hidden sections from the same tiddler// can be easily accomplished. The plugin also adds a new macro, <<sectionTOC>> which can auto-generate and embed a 'Table of Contents' outline view into a tiddler to enable quick navigation to sections within that tiddler.
!!!Usage
<<<
!!!!~TiddlyLink syntax
You can link to a section of a tiddler by adding the "##sectionname" syntax to the tiddlername:
{{{
[[SomeTiddler##SomeSection]]
}}}
When clicked, the tiddler is displayed and the specified section heading is automatically scrolled into view. If the tiddler title is omitted or the 'here' keyword is used, e.g.,
{{{
[[##SomeSection]] or [[here##SomeSection]]>>
}}}
then the current containing tiddler is implied by default.
!!!!HTML anchor syntax
You can use HTML syntax to create a scrollable 'anchor' location within a tiddler without use of the standard TW section heading syntax:
{{{
<html><a name="sectionname" /></html>
}}}
You can then link to that section using the enhanced TiddlyLink syntax as above.
!!!!{{{<<tiddler>>}}} macro
The {{{<<tiddler>>}}} syntax has been extended so that when the tiddler title is omitted or the 'here' keyword is used, e.g.,
{{{
<<tiddler ##SomeSection>> or <<tiddler here##SomeSection>>
}}}
then the current containing tiddler is implied by default.
!!!!"""<<sectionTOC>>""" macro
This macro generates a 'Table of Contents' outline-style bullet list with links to all sections within the current tiddler. Simply place the following macro at the //end of the tiddler content// (i.e., following all section headings). Important note: //''The {{{<<sectionTOC>>}}} macro must occur at the end of the tiddler in order to locate the rendered section headings that precede it.''//
{{{
<<sectionTOC>> or <<sectionTOC className>>
}}}
To position the macro's //output// within the tiddler, you must create a special 'target element' that uses a specific classname (default='sectionTOC'), like this:
{{{
{{sectionTOC{}}}
}}}
When the {{{<<sectionTOC>>}}} macro is rendered, it will find the matching 'sectionTOC'-classed element and writes it's output there. You can also add the macro and/or target elements directly to the [[ViewTemplate]] definition, so that every tiddler can automatically display the table of contents:
{{{
<span class='sectionTOC'></span> <!-- target element -->
...
<span macro='sectionTOC'></span> <!-- must be at end of tiddler -->
}}}
<<<
!!!Configuration
<<<
You can change the {{{<<SectionTOC>>}}} output link format by adding the following statement to a tiddler tagged with <<tag systemConfig>>
{{{
config.macros.sectionTOC.linkFormat='[[%0|##%0]]';
}}}
The default value (shown above) produces a link to each section within the tiddler, using "%0" to insert the section name into the link. You can add extra formatting to generate additional output to suit your purposes. For example, if you have EditSectionPlugin installed, you could include a link that invokes that plugin's popup editor directly from each item in the TOC display, like this:
{{{
config.macros.sectionTOC.linkFormat='[[%0|##%0]] <<editSection [[##%0]] [[(edit)]]>>';
}}}
<<<
!!!Examples
<<<
links to sections defined by ''TW heading syntax'' (e.g, {{{!!!sectionname}}}):{{indent{
[[SectionLinksPlugin##onClickTiddlerLink]]
[[##onClickTiddlerLink]] //(current tiddler implied)//}}}
links to anchors defined by ''HTML syntax'' (e.g., {{{<html><a href="anchorname"></html>}}}):{{indent{
[[SectionLinksPlugin##sampleanchorlink]]
[[##sampleanchorlink]] //(current tiddler implied)//}}}
<<<
!!!Revisions
<<<
2011.12.21 1.4.2 refactor sectionTOCformat to permit customization
2011.02.08 1.4.1 in isExternalLink() hijack, strip section references before testing for external link
2010.08.09 1.4.0 in scrollToSection(), added support for using HTML <a name="..."> anchor elements
2009.08.21 1.3.4 added handling to ignore leading/trailing whitespace in section references
2009.08.21 1.3.3 in createTiddlyLink(), add tiddlyLinkNonExistingSection class if matching section is not found
2009.08.14 1.3.2 in createTiddlyLink(), don't override core value for ~TiddlyLink attribute
2009.08.02 1.3.1 in sectionTOC.handler(), trim leading/trailing whitespace from generated section links
2009.08.01 1.3.0 in scrollToSection(), apply 3-tier section matching (exact, startsWith, contains)
2009.07.06 1.2.2 fixed displayTiddler() hijack
2009.07.03 1.2.1 in {{{<<sectionTOC>>}}}, suppress output if target is not found
2009.06.02 1.2.0 added support for 'here' keyword in {{{[[here##section]]}}} links and {{{<<tiddler here##section>>}}} macro
2009.04.09 1.1.1 in sectionTOC macro, make target visible when TOC is rendered.
2009.01.18 1.1.0 added {{{<<sectionTOC>>}}} macro to generate numbered-bullet links to sections of current tiddler
2009.01.06 1.0.0 converted to stand-alone plugin
2008.10.14 0.0.0 initial release (as [[CoreTweaks]] #784 - http://trac.tiddlywiki.org/ticket/784)
<<<
!!!Code
***/
//{{{
version.extensions.SectionLinksPlugin= {major: 1, minor: 4, revision: 2, date: new Date(2011,12,21)};
Story.prototype.scrollToSection = function(title,section) {
if (!title||!section) return; var t=this.getTiddler(title); if (!t) return null;
var elems=t.getElementsByTagName('*');
var heads=[]; var anchors=[];
for (var i=0; i<elems.length; i++)
if (['H1','H2','H3','H4','H5'].contains(elems[i].nodeName)) heads.push(elems[i]);
for (var i=0; i<elems.length; i++)
if (elems[i].nodeName=='A' && (elems[i].getAttribute('name')||'').length) anchors.push(elems[i]);
var found=null;
for (var i=0; i<heads.length; i++)
if (getPlainText(heads[i]).trim()==section) { found=heads[i]; break; }
if (!found) for (var i=0; i<heads.length; i++)
if (getPlainText(heads[i]).trim().startsWith(section)) { found=heads[i]; break; }
if (!found) for (var i=0; i<heads.length; i++)
if (getPlainText(heads[i]).trim().indexOf(section)!=-1) { found=heads[i]; break; }
if (!found) for (var i=0; i<anchors.length; i++)
if (anchors[i].getAttribute('name')==section) { found=anchors[i]; break; }
if (!found) for (var i=0; i<anchors.length; i++)
if (anchors[i].getAttribute('name').startsWith(section)) { found=anchors[i]; break; }
if (!found) for (var i=0; i<anchors.length; i++)
if (anchors[i].getAttribute('name').indexOf(section)!=-1) { found=anchors[i]; break; }
if (found) {
// if section heading is collapsed, click to expand it - see [[FoldHeadingsPlugin]]
if (hasClass(found,'foldable') && found.nextSibling.style.display=='none') found.onclick();
// scroll *after* tiddler animation
var delay=config.options.chkAnimate?config.animDuration+100:0;
setTimeout('window.scrollTo('+findPosX(found)+','+findPosY(found)+')',delay);
return found;
}
}
//}}}
/***
!!!!core hijacks
***/
/***
!!!!!createTiddlyLink
***/
//{{{
// [[tiddlername##section]] and [[##section]]
if (!window.createTiddlyLink_section)
window.createTiddlyLink_section=window.createTiddlyLink;
window.createTiddlyLink=function(place,title) {
var t=story.findContainingTiddler(place); var tid=t?t.getAttribute('tiddler'):'';
var parts=title.split(config.textPrimitives.sectionSeparator);
var title=parts[0]; var section=parts[1]; if (section) section=section.trim();
if (!title.length || title.toLowerCase()=='here') title=tid; // default=current tiddler
arguments[1]=title;
var btn=createTiddlyLink_section.apply(this,arguments);
if (section) {
btn.setAttribute('section',section);
if (store.getTiddlerText(title+config.textPrimitives.sectionSeparator+section)===null)
addClass(btn,'tiddlyLinkNonExistingSection');
}
return btn;
}
//}}}
/***
!!!!!onClickTiddlerLink
***/
//{{{
if (!window.onClickTiddlerLink_section)
window.onClickTiddlerLink_section=window.onClickTiddlerLink;
window.onClickTiddlerLink=function(ev) {
var e=ev||window.event; var target=resolveTarget(e); var title=null;
while (target!=null && title==null) {
title=target.getAttribute('tiddlyLink');
section=target.getAttribute('section');
target=target.parentNode;
}
var t=story.findContainingTiddler(target); var tid=t?t.getAttribute('tiddler'):'';
if (title!=tid||!section) // avoid excess scrolling for intra-tiddler links
onClickTiddlerLink_section.apply(this,arguments);
story.scrollToSection(title,section);
return false;
}
//}}}
/***
!!!!! displayTiddler
***/
//{{{
if (!Story.prototype.displayTiddler_section)
Story.prototype.displayTiddler_section=Story.prototype.displayTiddler;
Story.prototype.displayTiddler = function(srcElement,tiddler)
{
var title=(tiddler instanceof Tiddler)?tiddler.title:tiddler;
var parts=title.split(config.textPrimitives.sectionSeparator);
var title=parts[0]; var section=parts[1]; if (section) section=section.trim();
if (!title.length || title.toLowerCase()=='here') {
var t=story.findContainingTiddler(place);
title=t?t.getAttribute('tiddler'):'';
}
arguments[1]=title; // default=current tiddler
this.displayTiddler_section.apply(this,arguments);
story.scrollToSection(title,section);
}
//}}}
/***
<html><a name="sampleanchorlink" /></html>This is a sample ''anchor link'': {{{<html><a name="sampleanchorlink" /></html>}}}
!!!!!isExternalLink
***/
//{{{
if (!config.formatterHelpers.isExternalLink_section)
config.formatterHelpers.isExternalLink_section=config.formatterHelpers.isExternalLink;
config.formatterHelpers.isExternalLink=function(link) { // remove section references before testing
var l=link.split(config.textPrimitives.sectionSeparator)[0];
return config.formatterHelpers.isExternalLink_section(l);
}
//}}}
/***
!!!!!tiddler.handler
***/
//{{{
if (!config.macros.tiddler.handler_section)
config.macros.tiddler.handler_section=config.macros.tiddler.handler;
config.macros.tiddler.handler=function(place,macroName,params,wikifier,paramString,tiddler)
{
if (!params[0]) return;
var sep=config.textPrimitives.sectionSeparator;
var parts=params[0].split(sep); var tid=parts[0]; var sec=parts[1]; if (sec) sec=sec.trim();
if ((tid.toLowerCase()=='here'||!tid.length) && sec) { // fixup for 'here##section' and '##section'
var here=story.findContainingTiddler(place)
var tid=here?here.getAttribute('tiddler'):tiddler?tiddler.title:'';
arguments[2][0]=tid+sep+sec;
arguments[4]=paramString.replace(new RegExp('(here)?'+sep+sec),tid+sep+sec);
}
config.macros.tiddler.handler_section.apply(this,arguments);
}
//}}}
/***
!!!!sectionTOC macro
***/
//{{{
config.macros.sectionTOC = {
targetClass: 'sectionTOC',
linkFormat: '[[%0|##%0]]',
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var out=[];
var targetClass=params[0]||this.targetClass;
var t=story.findContainingTiddler(place); if (!t) return;
var elems=t.getElementsByTagName('*');
var level=5; // topmost heading level
for (var i=0; i<elems.length; i++) {
var txt=getPlainText(elems[i]).trim();
var link=this.linkFormat.format([txt]);
switch(elems[i].nodeName) {
case 'H1': out.push('#'+link); level=1; break;
case 'H2': out.push('##'+link); level=level<2?level:2; break;
case 'H3': out.push('###'+link); level=level<3?level:3; break;
case 'H4': out.push('####'+link); level=level<4?level:4; break;
case 'H5': out.push('#####'+link); level=level<5?level:5; break;
default: if (hasClass(elems[i],targetClass)) var target=elems[i];
}
}
// trim excess bullet levels
if (level>1) for (var i=0; i<out.length; i++) out[i]=out[i].substr(level-1);
// show numbered list
if (out.length && target) {
if (target.style.display=='none') target.style.display='block';
wikify(out.join('\n'),target);
}
}
}
//}}}
/***
!!!Invoke macro
{{{
<<sectionTOC>>
}}}
***/
// //<<sectionTOC>>
/***
|Name:|SelectThemePlugin|
|Description:|Lets you easily switch theme and palette|
|Version:|1.0.1a|
|Date:|27-Jun-2011|
|Source:|http://mptw.tiddlyspot.com/#SelectThemePlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!Notes
* Borrows largely from ThemeSwitcherPlugin by Martin Budden http://www.martinswiki.com/#ThemeSwitcherPlugin
* Theme is cookie based. But set a default by setting config.options.txtTheme in MptwConfigPlugin (for example)
* Palette is not cookie based. It actually overwrites your ColorPalette tiddler when you select a palette, so beware.
!Usage
* {{{<<selectTheme>>}}} makes a dropdown selector
* {{{<<selectPalette>>}}} makes a dropdown selector
* {{{<<applyTheme>>}}} applies the current tiddler as a theme
* {{{<<applyPalette>>}}} applies the current tiddler as a palette
* {{{<<applyTheme TiddlerName>>}}} applies TiddlerName as a theme
* {{{<<applyPalette TiddlerName>>}}} applies TiddlerName as a palette
***/
//{{{
config.macros.selectTheme = {
label: {
selectTheme:"select theme",
selectPalette:"select palette"
},
prompt: {
selectTheme:"Select the current theme",
selectPalette:"Select the current palette"
},
tags: {
selectTheme:'systemTheme',
selectPalette:'systemPalette'
}
};
config.macros.selectTheme.handler = function(place,macroName)
{
var btn = createTiddlyButton(place,this.label[macroName],this.prompt[macroName],this.onClick);
// want to handle palettes and themes with same code. use mode attribute to distinguish
btn.setAttribute('mode',macroName);
};
config.macros.selectTheme.onClick = function(ev)
{
var e = ev ? ev : window.event;
var popup = Popup.create(this);
var mode = this.getAttribute('mode');
var tiddlers = store.getTaggedTiddlers(config.macros.selectTheme.tags[mode]);
// for default
if (mode == "selectPalette") {
var btn = createTiddlyButton(createTiddlyElement(popup,'li'),"(default)","default color palette",config.macros.selectTheme.onClickTheme);
btn.setAttribute('theme',"(default)");
btn.setAttribute('mode',mode);
}
for(var i=0; i<tiddlers.length; i++) {
var t = tiddlers[i].title;
var name = store.getTiddlerSlice(t,'Name');
var desc = store.getTiddlerSlice(t,'Description');
var btn = createTiddlyButton(createTiddlyElement(popup,'li'), name?name:t, desc?desc:config.macros.selectTheme.label['mode'], config.macros.selectTheme.onClickTheme);
btn.setAttribute('theme',t);
btn.setAttribute('mode',mode);
}
Popup.show();
return stopEvent(e);
};
config.macros.selectTheme.onClickTheme = function(ev)
{
var mode = this.getAttribute('mode');
var theme = this.getAttribute('theme');
if (mode == 'selectTheme')
story.switchTheme(theme);
else // selectPalette
config.macros.selectTheme.updatePalette(theme);
return false;
};
config.macros.selectTheme.updatePalette = function(title)
{
if (title != "") {
store.deleteTiddler("ColorPalette");
if (title != "(default)")
store.saveTiddler("ColorPalette","ColorPalette",store.getTiddlerText(title),
config.options.txtUserName,undefined,"");
refreshAll();
if(config.options.chkAutoSave)
saveChanges(true);
}
};
config.macros.applyTheme = {
label: "apply",
prompt: "apply this theme or palette" // i'm lazy
};
config.macros.applyTheme.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
var useTiddler = params[0] ? params[0] : tiddler.title;
var btn = createTiddlyButton(place,this.label,this.prompt,config.macros.selectTheme.onClickTheme);
btn.setAttribute('theme',useTiddler);
btn.setAttribute('mode',macroName=="applyTheme"?"selectTheme":"selectPalette"); // a bit untidy here
}
config.macros.selectPalette = config.macros.selectTheme;
config.macros.applyPalette = config.macros.applyTheme;
config.macros.refreshAll = { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
createTiddlyButton(place,"refresh","refresh layout and styles",function() { refreshAll(); });
}};
//}}}
/***
|Name|SetIconPlugin|
|Source|http://www.TiddlyTools.com/#SetIconPlugin|
|Documentation|http://www.TiddlyTools.com/#SetIconPluginInfo|
|Version|1.9.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.3|
|Type|plugin|
|Description|add an image to a toolbar, macro, or slider link|
!!!!!Documentation
>see [[SetIconPluginInfo]]
!!!!!Configuration
<<<
<<option chkIconsShowImage>> show images on links
<<option chkIconsShowText>> include link text with images
default image style: {{stretch{<<option txtIconsCSS>>}}}
<<<
!!!!!Revisions
<<<
2011.10.02 1.9.1 use plain text instead of innerHTML for link tooltips
2011.10.02 1.9.0 added 'find:...' macro param (for use with tabsets)
| see [[SetIconPluginInfo]] for additional revision details |
2008.05.09 1.0.0 initial release (as inline script)
<<<
!!!!!Code
***/
//{{{
version.extensions.SetIconPlugin= {major: 1, minor: 9, revision: 1, date: new Date(2011,10,2)};
if (config.options.chkIconsShowImage===undefined)
config.options.chkIconsShowImage=true;
if (config.options.chkIconsShowText===undefined)
config.options.chkIconsShowText=true;
if (config.options.txtIconsCSS===undefined)
config.options.txtIconsCSS="vertical-align:middle;width:auto;height:auto";
config.macros.setIcon = {
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
if (!config.options.chkIconsShowImage) return; // text-only - do nothing
var src=params[0]; if (!src) return; // no image src specified - do nothing
var p=paramString.parseParams('name',null,true,false,true);
var label=getParam(p,'find'); if (label) params.shift(); // optional find:"..."
var css=params[1]; if (!css||!css.length) css=config.options.txtIconsCSS;
var after=params[2]&¶ms[2].toUpperCase()=="RIGHT";
var notext=params[2]&¶ms[2].toUpperCase()=="NOTEXT";
// find nearest link element
var btn=place.lastChild; // look for sibling link
while (btn && (btn.nodeName!="A" || label&&!btn.innerHTML.startsWith(label)))
btn=btn.previousSibling;
if (!btn) { // look for child link
var links=place.getElementsByTagName("A");
for (var i=links.length-1; i>=0; i--)
if (!label || links[i].innerHTML.startsWith(label)) { btn=links[i]; break; }
}
if (!btn) { // look for parent link
var btn=place.parentNode.lastChild;
while (btn && (btn.nodeName!="A" || label&&!btn.innerHTML.startsWith(label)))
btn=btn.previousSibling;
}
if (!btn) { // look for cousin link (e.g. TABS in TABSETS)
var links=place.parentNode.getElementsByTagName("A");
for (var i=links.length-1; i>=0; i--)
if (!label || links[i].innerHTML.startsWith(label)) { btn=links[i]; alert('found'); break; }
}
if (!btn) return; // can't find a link - do nothing
// set icon and command text/tip
var txt=btn.innerHTML; var tip=getPlainText(btn);
if (config.macros.attach && config.macros.attach.isAttachment(src))
src=config.macros.attach.getAttachment(src); // retrieve attachment (if any)
btn.innerHTML="<img src='"+src+"' style='"+css+"'>";
if (config.options.chkIconsShowText && !notext)
btn.innerHTML=after?txt+btn.innerHTML:btn.innerHTML+txt;
else
btn.title=tip+" - "+btn.title; // add text to tooltip
// adjust nested slider button text/tip
if (btn.getAttribute("closedtext")!=null) {
btn.setAttribute("closedtext",btn.innerHTML);
btn.setAttribute("openedtext",btn.innerHTML);
if (!config.options.chkIconsShowText || notext) {
btn.setAttribute("closedtip",txt.toUpperCase()+": "+btn.getAttribute("closedtip"));
btn.setAttribute("openedtip",txt.toUpperCase()+": "+btn.getAttribute("openedtip"));
}
}
}
};
//}}}
/***
|Name|SetIconPlugin|
|Source|http://www.TiddlyTools.com/#SetIconPlugin|
|Documentation|http://www.TiddlyTools.com/#SetIconPluginInfo|
|Version|1.9.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.3|
|Type|documentation|
|Description|documentation for SetIconPlugin|
!!!!!Syntax
<<<
{{{
<<setIcon image find:"..." style iconpos>>
}}}
where:
*''image''<br>tiddlername for an attached image or a URL for an external image
*''find:"..."''(optional)<br>finds a link that starts with the specified text (for use with """<<tabs>>""")
*''style'' (optional)<br>CSS style attributes applied to the image (default="vertical-align:middle;width:auto;height:auto")
*''iconpos''(optional)<br>indicates the placement of the image relative to the link text. Use keywords: ''left'', ''right'' or ''notext'' (default=''left'', i.e., the text follows the image). ''notext'' hides the link text, even if the global option (see Configuration section, below) is set to display the link text along with image. //Note: when specifying the non-default //''right''// or //''notext''// value, you can use "" as a placeholder for the ''style'' parameter to apply the standard CSS styles)//
<<<
!!!!!Usage
<<<
First, create a link element using any of:
* ''links:''<br> """[[TiddlerName]]""" or """[[text|TiddlerName]]""" or """[[text|URL]]"""
* ''macros that generate links:''<br> """<<toolbar ...>>""", """<<slider ...>>""", """<<tabs ...>>""", """<<saveChanges>>""", etc.
* ''inline sliders:'' (using NestedSlidersPlugin)<br> """+++[sliderlabel]...==="""
* '''onclick' scripts:'' (using InlineJavascriptPlugin)<br> """<script label="...">...</script>"""
* ''~HTML-based links:''<br> """<html><a href="...">...</a></html>"""
* ''transcluded links:'' (where the output of the specified ~TiddlerName contains a link)<br> """<<tiddler TiddlerName>>"""
Then, ''embed the """<<setIcon>>""" macro immediately following the generated link''. The macro looks for the last rendered link element that occurs //within the same DOM container// and adds the specified image to that link. If an optional find:"..." parameter is provided, then the macro looks for a matching link that starts with the indicated label, working backward from the last rendered link within the DOM container.
Note: links embedded via the """<<tiddler>>""" macro or HTML syntax are rendered within a //child// DOM element container. To ensure that """<<setIcon>>""" will find the correct link, you can isolate the child DOM element container along with the associated """<<setIcon>>""" macro that follows it by enclosing both elements within a surrounding SPAN 'class wrapper' element, like this:
{{{
{{span{<<tiddler SomeTranscludedLink>><<setIcon ...>>}}}
{{span{<html><a href="...">...</a></html><<setIcon ...>>}}}
}}}
This same technique should also be applied for any other macros that may generate output that is nested within their own containing DOM elements. Similarly, link elements created by macros embedded directly in the ViewTemplate or EditTemplate using HTML syntax (i.e, """<span macro='...'></span>""") are also rendered within their own DOM element containers. To ensure that the correct link is located, """<span macro='setIcon ...'></span>""" should be inserted //within// the span that invokes the link-generating macro, like this:
{{{
<span macro='...'>
<span macro='setIcon ...'></span>
</span>
}}}
Alternatively, your can surround the paired link+icon sequence in an enclosing span, like this:
{{{
<span>
<span macro='...'></span>
<span macro='setIcon ...'></span>
</span>
}}}
''In general, whether the link element is rendered in tiddler content or directly from a template, if you are uncertain when an 'isolation span' is needed, you can always choose to surround every link+icon sequence within a enclosing span, regardless of the type of link content being rendered.''
<<<
!!!!!Examples
<<<
''~TiddlyLink:'' [[About]]<<setIcon information.png>>
{{{
[[About]]<<setIcon information.png>>
}}}
''toolbar command:'' <<toolbar jump>><<setIcon page_go.png>>
{{{
in tiddler content:
<<toolbar jump>><<setIcon page_go.png>>
in template definitions:
<span class='toolbar' macro='toolbar jump'>
<span macro='setIcon page_go.png'></span>
</span>
}}}
''slider macro:''<<slider "" PluginManager Plugins "view installed plugin status">><<setIcon cog.png>>
{{{
in tiddler content:
<<slider "" PluginManager Plugins "view installed plugin status">><<setIcon cog.png>>
in template definitions:
<span macro='slider ...'>
<span macro='setIcon page_go.png'></span>
</span>
}}}
''nested (inline) slider:'' +++[settings]<<list filter [tag[settings]]>>===<<setIcon wrench.png>>
{{{
+++[settings]
<<list filter [tag[settings]]>>
===<<setIcon wrench.png>>
}}}
''onclick script:'' <script label="print document">window.print();</script><<setIcon printer.png>>
{{{
<script label="print document">
window.print();
</script><<setIcon printer.png>>
}}}
''tiddler macro:'' {{span{<<tiddler SiteUrl>><<setIcon exclamation.png>>}}}
{{{
in tiddler content:
{{span{<<tiddler SiteUrl>><<setIcon exclamation.png>>}}}
in template definitions:
<span macro='tiddler ...'>
<span macro='setIcon exclamation.png'></span>
</span>
}}}
''tabs macro:'' {{span{<<tabs chkDemo About About About Legal Legal LegalStatements>><<setIcon information.png find:"About">><<setIcon exclamation.png find:"Legal">>}}}
{{{
in tiddler content:
{{span{<<tabs chkTest About ... Legal ...>><<setIcon information.png find:"About">><<setIcon exclamation.png find:"Legal">>}}}
in template definitions:
<span macro='tabs chkDemo About ... Legal ...>
<span macro='setIcon information.png find:"About"'></span>
<span macro='setIcon exclamation.png find:"Legal"'></span>
</span>
}}}
''HTML link:'' {{span{<html><a href="http://www.TiddlyWiki.com">TiddlyWiki.com</a></html><<setIcon server_go.png>>}}}
{{{
in tiddler content:
{{span{<html><a href="http://www.TiddlyWiki.com">TiddlyWiki.com</a></html><<setIcon server_go.png>>}}}
in template definitions:
<span>
<a href="http://www.TiddlyWiki.com">TiddlyWiki.com</a>
<span macro='setIcon server_go.png'></span>
</span>
}}}
''macro link:'' {{span{<<saveChanges>><<setIcon disk.png>>}}}
{{{
in tiddler content:
{{span{<<saveChanges>><<setIcon disk.png>>}}}
in template definitions:
<span macro='saveChanges'>
<span macro='setIcon disk.png'></span>
</span>
}}}
<<<
!!!!!Configuration
<<<
<<option chkIconsShowImage>> show icons on links //(unchecked=text-only)//
^^{{{<<option chkIconsShowImage>>}}}^^
<<option chkIconsShowText>> include link text with images //(unchecked=icons-only, ignored if no icons displayed)//
^^{{{<<option chkIconsShowText>>}}}^^
default image style: {{stretch{<<option txtIconsCSS>>}}}
^^{{{<<option txtIconsCSS>>}}}^^
<<<
!!!!!Revisions
<<<
2011.10.02 1.9.1 use plain text instead of innerHTML for link tooltips
2011.10.02 1.9.0 added 'find:...' macro param (for use with tabsets)
2008.05.11 1.8.0 added optional 'notext' value for iconpos to force text to be hidden for specific links
2008.05.11 1.7.0 support use within template definitions by looking for nearest link using: siblings, children, parents, or cousins. Also, major documentation re-write with improved examples
2008.05.11 1.6.0 added optional iconpos param to control icon placement ("left" or "right", default="left")
2008.05.10 1.5.0 converted to plugin/macro and reduced code size by moving documentation into SetIconPluginInfo
2008.05.10 1.4.0 handle links contained in {{{<<tiddler>>}}} and {{{<html>...</html}}}
2008.05.10 1.3.0 added support for setting styles on images
2008.05.09 1.2.0 handle links created by TiddlyLinks, sliders, and nested sliders syntax
2008.05.09 1.1.0 added support for external URLs and options for displaying text with images
2008.05.09 1.0.0 initial release (as inline script)
<<<
!![[Shock Division]]
Royal Guard heavy tank. Can switch into Siege Mode to provide long range artillery support.
Can attack ground units.
[img[https://bnetcmsus-a.akamaihd.net/cms/page_media/KNT4PR2TTQJH1572391215616.png]]
| !Level | !Talent |
|08 - Primary Royal Guard Upgrade Cache|Unlocks the following upgrades:<br>-Allows Shock Division in Siege Mode to fire at enemy air units while picked up by an Imperial Intercessor (Researched at the Armory).|
|15 - Promotion Granted|Royal Guard units can now attain Veterancy: Rank 3, gaining the following abilities:<br>-Increases the Shock Division's attack's area of effect radius in Siege Mode.|
<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal "DD MMM YYYY" "journal">><<saveChanges>><<tiddler TspotSidebar>><<slider chkSliderOptionsPanel OptionsPanel "options »" "Change TiddlyWiki advanced options">>
Star Craft 2 Coop web notebook
!![[Sky Fury]]
Durable Royal Guard support flyer. Loaded with strong anti capital air missiles. Can switch into Assault Mode to attack ground units.
Can attack air units.
[img[https://bnetcmsus-a.akamaihd.net/cms/page_media/NUXCIA69QBV61572391215299.png]]
[img[https://vignette.wikia.nocookie.net/starcraft/images/3/33/VikingTrans_SC2_Icon1.jpg/revision/latest/scale-to-width-down/60?cb=20150724132716]] Fighter/Assault Mode
[img[https://vignette.wikia.nocookie.net/starcraft/images/2/23/LotV_Hyperflight_Rotors_Icon.jpg/revision/latest/scale-to-width-down/32?cb=20160407031227]] Hyperflight Rotors
[img[https://vignette.wikia.nocookie.net/starcraft/images/0/0a/DisplacementField_SC2_Icon.jpg/revision/latest/scale-to-width-down/32?cb=20151122221531]] Displacement Field
[img[https://vignette.wikia.nocookie.net/starcraft/images/f/fa/SC2_Alarak_AC_-_PhasingArmor.png/revision/latest/scale-to-width-down/30?cb=20160917104455]] Barrier
| !Level | !Talent |
|08 - Primary Royal Guard Upgrade Cache|Unlocks the following upgrades:<br>-Increases the movement speed of Sky Furies (Researched at the Fusion Core).|
|15 - Promotion Granted|Royal Guard units can now attain Veterancy: Rank 3, gaining the following abilities:<br>-Grants Sky Furies with a chance to evade enemy attacks in Fighter Mode. When Sky Furies take fatal damage in Assault Mode, they transform to Fighter Mode and gain a barrier.|
Emperor's Shadows no longer need to channel the Tactical Missile Strike ability.
Purchased from [[Royal Academy]] for <<tiddler Cost with:"100" "100" "60">>
Commanders
|!Terran|!Zerg|!Protoss|
|[[Raynor]]|[[Kerrigan]]|[[Artanis]]|
|[[Swann]]|[[Zagara]]|[[Vorazun]]|
|[[Nova]]|[[Abathur]]|[[Karax]]|
|[[Han&Horner]]|[[Stukov]]|[[Alarak]]|
|[[Tychus]]|[[Dehaka]]|[[Fenix]]|
|[[Mengsk]]|[[Stetmann]]|[[Zeratul]]|
Subreddit
[img[https://b.thumbs.redditmedia.com/vZK5FtsEDp2h6qqUUa-OjKgl5rzE1PXMAWpPfcukeMg.png][https://www.reddit.com/r/starcraft2coop/]]
https://www.reddit.com/r/starcraft2coop/wiki/index
[[Units Data|https://drive.google.com/file/d/0B84WXIRGl9yaYlBPZXJvTTF1Wmc/view]]
https://starcraft2coop.com/
[img[https://starcraft2coop.com/images/commanderportraits/raynorportrait.png][https://starcraft2coop.com/commanders/raynor]]
Team Liquid forum guides
[img[https://tl.net/staff/Chimaron/Guides/Raynor/Raynor_LinkMini6.jpg][https://tl.net/forum/single-player/526722-co-op-commander-guide-raynor]]
[img[https://tl.net/staff/Chimaron/Guides/Kerrigan/Kerrigan_LinkMini.jpg][https://tl.net/forum/single-player/527054-co-op-commander-guide-kerrigan]]
[img[https://tl.net/staff/Chimaron/Guides/Artanis/Artanis_LinkMini.jpg][https://tl.net/forum/single-player/527245-co-op-commander-guide-artanis]]
[img[https://tl.net/staff/Chimaron/Guides/Swann/Swann_LinkMini.jpg][https://tl.net/forum/single-player/527476-co-op-commander-guide-swann]]
[img[https://tl.net/staff/Chimaron/Guides/Zagara/Zagara_LinkMini.jpg][https://tl.net/forum/single-player/527675-co-op-commander-guide-zagara]]
[img[https://tl.net/staff/Chimaron/Guides/Vorazun/Vorazun_LinkMini.jpg][https://tl.net/forum/single-player/527892-co-op-commander-guide-vorazun]]
[img[https://tl.net/staff/Chimaron/Guides/Karax/Karax_LinkMini.jpg][https://tl.net/forum/single-player/528459-co-op-commander-guide-karax]]
[img[https://tl.net/staff/Chimaron/Guides/Abathur/Abathur_LinkMini.jpg][https://tl.net/forum/single-player/528771-co-op-commander-guide-abathur]]
[img[https://tl.net/staff/Chimaron/Guides/Alarak/Alarak_LinkMini.jpg][https://tl.net/forum/single-player/529065-co-op-commander-guide-alarak]]
[img[https://tl.net/staff/Chimaron/Guides/Nova/Nova_Linksmall.jpg][https://tl.net/forum/single-player/529937-co-op-commander-guide-nova]]
[img[https://tl.net/staff/Chimaron/Guides/Stukov/Stukov_Linksmall.jpg][https://tl.net/forum/single-player/531320-co-op-commander-guide-stukov]]
[img[https://tl.net/staff/Chimaron/Guides/Fenix/Fenix_Linksmall.jpg][https://tl.net/forum/single-player/532185-co-op-commander-guide-fenix]]
[img[https://tl.net/staff/Chimaron/Guides/Dehaka/Dehaka_Linksmall.jpg][https://tl.net/forum/single-player/532473-co-op-commander-guide-dehaka]]
[img[https://tl.net/staff/Chimaron/Guides/HanHorner/HanHorner_LinkMini.jpg][https://tl.net/forum/single-player/533395-co-op-commander-guide-han-and-horner]]
[img[https://tl.net/staff/Chimaron/Guides/Tychus/Commander_Tychus_Small.jpg][https://tl.net/forum/starcraft-2/545601-co-op-commander-guide-tychus]]
[img[https://tl.net/staff/Chimaron/Guides/Zeratul/Commander_Zeratul_Small.jpg][https://tl.net/forum/starcraft-2/551722-co-op-commander-guide-zeratul]]
[[The Lore of the New Co-op Prestiges|https://www.reddit.com/r/starcraft2coop/comments/hxs39p/the_lore_of_the_new_coop_prestiges/]] [[*|https://i.redd.it/5zka4sz6w1d51.png]] by [[Subsourian|https://www.reddit.com/user/Subsourian/]] +++ [<img[https://i.redd.it/5zka4sz6w1d51.png]] ===
[img[https://vignette.wikia.nocookie.net/starcraft/images/d/d3/TerranSupply_SC2_Icon1.gif/revision/latest?cb=20100724215051]]
/***
|Name|TableOfContentsPlugin|
|Source|http://www.TiddlyTools.com/#TableOfContentsPlugin|
|Documentation|http://www.TiddlyTools.com/#TableOfContentsPluginInfo|
|Version|2.4.3|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|replace the standard tabbed contents list with a scrolling listbox|
When there are many tiddlers in a document, the standard 'tabbed list of tiddlers' in the right-hand sidebar can become very long, occupying a lot of page space and requiring a lot scrolling in order to locate and select a tiddler. The TableOfContentsPlugin addresses this problem by replacing the standard tabbed list display with a single listbox/droplist control that uses a very small amount of page space, regardless of the number of tiddlers in the document.
!!!!!Documentation
>see [[TableOfContentsPluginInfo]]
!!!!!Configuration
<<option chkTOCShow>> display table of contents listbox
<<option chkTOCIncludeHidden>> include tiddlers tagged with <<tag excludeLists>> in listbox
listbox shows <<option txtTOCListSize>> lines, sorted by <<option txtTOCSortBy>>
!!!!!Revisions
<<<
2008.04.09 [2.4.3] restored config.options.chkTOCShow and onClickTOCMenu() handler
|please see [[TableOfContentsPluginInfo]] for additional revision details|
2005.06.13 [1.0.0] Initial Release (as adaptation - predates TiddlyWiki plugin architecture!!)
<<<
!!!!!Code
***/
//{{{
version.extensions.TableOfContentsPlugin= {major: 2, minor: 4, revision: 3, date: new Date(2008,4,9)};
//}}}
// // 1.2.x compatibility
//{{{
if (!window.story) window.story=window;
if (!store.getTiddler) store.getTiddler=function(title){return store.tiddlers[title]}
if (!store.addTiddler) store.addTiddler=function(tiddler){store.tiddlers[tiddler.title]=tiddler}
if (!store.deleteTiddler) store.deleteTiddler=function(title){delete store.tiddlers[title]}
//}}}
//{{{
// define defaults for cookie-based option values
if (config.options.txtTOCSortBy==undefined) config.options.txtTOCSortBy="modified";
if (config.options.txtTOCListSize==undefined) config.options.txtTOCListSize=19;
if (config.options.chkTOCShow==undefined) config.options.chkTOCShow=true;
if (config.options.chkTOCIncludeHidden==undefined) config.options.chkTOCIncludeHidden=false;
// define macro "tableOfContents" to render controls
config.macros.tableOfContents = { label: "contents" };
config.macros.tableOfContents.cmdMax=8; // index of maximum command item
config.macros.tableOfContents.css = '\
.TOC { padding:0.5em 1em 0.5em 1em; }\
.TOC a { padding:0em 0.25em 0em 0.25em; color:inherit; }\
.TOCList { width: 100%; font-size:8pt; margin:0em; }\
';
config.macros.tableOfContents.html = '\
<div style="text-align:right">\
<span style="float:left">\
<a href="JavaScript:;" id="TOCMenu" style="padding: 0em;"\
onclick="onClickTOCMenu(this)" title="show/hide table of contents">%label%</a>\
</span>\
<a href="JavaScript:;" id="TOCSmaller" style="display:inline"\
onclick="resizeTOC(this)" title="reduce list size">–</a>\
<a href="JavaScript:;" id="TOCLarger"style="display:inline"\
onclick="resizeTOC(this)" title="increase list size">+</a>\
<a href="JavaScript:;" id="TOCMaximize"style="display:inline"\
onclick="resizeTOC(this)" title="maximize/restore list size">=</a>\
</div>\
';
config.macros.tableOfContents.handler = function(place,macroName,params) {
var parsedParams = new Array();
parsedParams['label']=this.label;
parsedParams['inline']=false;
while (params.length>0) {
if (params[0]=="label:none") parsedParams['label']="";
else if (params[0].substr(0,6)=="label:") parsedParams['label']=params[0].substr(6);
if (params[0].substr(0,7)=="prompt:") parsedParams['prompt']=params[0].substr(7);
if (params[0].substr(0,8)=="padding:")parsedParams['padding']=params[0].substr(8);
if (params[0].substr(0,7)=="margin:") parsedParams['margin']=params[0].substr(7);
if (params[0].substr(0,5)=="sort:") parsedParams['sortby']=params[0].substr(5);
if (params[0].substr(0,5)=="date:") parsedParams['date']=params[0].substr(5);
if ((params[0]=="size:auto")||(params[0]=="size:0")) parsedParams['autosize']=true;
else if (params[0] && (params[0].substr(0,5)=="size:")) parsedParams['requestedSize']=params[0].substr(5);
if (params[0].substr(0,6)=="width:") parsedParams['width']=params[0].substr(6);
if (params[0]=="hidelist") parsedParams['hidelist']=true;
if (params[0]=="inline") parsedParams['inline']=true;
if (params[0]=="-title") parsedParams['hide_title']=true;
if (params[0]=="-date") parsedParams['hide_date']=true;
if (params[0]=="-author") parsedParams['hide_author']=true;
if (params[0]=="-creator") parsedParams['hide_creator']=true;
if (params[0]=="-tags") parsedParams['hide_tags']=true;
if (params[0]=="-missing") parsedParams['hide_missing']=true;
if (params[0]=="-orphans") parsedParams['hide_orphans']=true;
if (params[0]=="-shadows") parsedParams['hide_shadows']=true;
params.shift();
}
setStylesheet(config.macros.tableOfContents.css,"tableOfContents");
var newTOC=createTiddlyElement(place,parsedParams['inline']?"span":"div",null,"TOC",null)
if (parsedParams['margin']) { newTOC.style.margin=parsedParams['margin']; }
if (parsedParams['padding']) { newTOC.style.padding=parsedParams['padding']; }
if (parsedParams['label']!="") newTOC.innerHTML=config.macros.tableOfContents.html.replace(/%label%/,parsedParams['label']);
var newTOCList=createTOCList(newTOC,parsedParams)
refreshTOCList(newTOCList);
store.addNotification(null,reloadTOCLists); // reload listbox after every tiddler change
}
// IE needs explicit global scoping for functions/vars called from browser events
window.onChangeTOCList=onChangeTOCList;
window.onClickTOCList=onClickTOCList;
window.onDblClickTOCList=onDblClickTOCList;
window.reloadTOCLists=reloadTOCLists;
window.refreshTOCList=refreshTOCList;
window.onClickTOCMenu=onClickTOCMenu;
window.resizeTOC=resizeTOC;
function createTOCList(place,params) {
var list = createTiddlyElement(place,"select",null,"TOCList",params['prompt'])
list.params=params;
list.onchange=onChangeTOCList;
list.onclick=onClickTOCList;
list.ondblclick=onDblClickTOCList;
list.onkeyup=onKeyUpTOCList;
list.style.display=config.options.chkTOCShow ? "block" : "none" ;
list.sortBy=config.options.txtTOCSortBy;
list.dateFormat="DD MMM YYYY";
list.requestedSize=config.options.txtTOCListSize;
list.expandall=false;
list.cmdMax=config.macros.tableOfContents.cmdMax;
if (params['hide_title']) list.cmdMax--;
if (params['hide_date']) list.cmdMax--;
if (params['hide_author']) list.cmdMax--;
if (params['hide_creator']) list.cmdMax--;
if (params['hide_tags']) list.cmdMax--;
if (params['hide_missing']) list.cmdMax--;
if (params['hide_orphans']) list.cmdMax--;
if (params['hide_shadows']) list.cmdMax--;
if (params['sortby']) { list.sortBy=params['sortby']; list.noSortCookie=true; }
if (params['date']) { list.dateFormat=params['date']; }
if (params['autosize']) { list.autosize=true; list.noSizeCookie=true; }
if (params['requestedSize']){ list.requestedSize=params['requestedSize']; list.noSizeCookie=true; }
if (params['width']) { list.style.width=params['width']; }
if (params['hidelist']) { list.style.display ="none" ; list.noShowCookie=true; }
if (params['expandall']) { list.expandall=true; }
return list;
}
function onChangeTOCList() {
var thisTiddler=this.options[this.selectedIndex].value;
if ((this.size==1)&&(thisTiddler!='')&&(this.selectedIndex>this.cmdMax))
story.displayTiddler(null,thisTiddler,1);
refreshTOCList(this);
return false;
}
function onClickTOCList(e) {
if (!e) var e = window.event;
if (this.size==1) return; // don't toggle display for droplist
if (e.shiftKey) { this.expandall=!this.expandall; refreshTOCList(this);}
e.cancelBubble = true; if (e.stopPropagation) e.stopPropagation();
return true;
}
function onDblClickTOCList(e) {
if (!e) var e = window.event;
var thisTiddler=this.options[this.selectedIndex].value;
if ((thisTiddler!='')&&(this.selectedIndex>this.cmdMax))
story.displayTiddler(null,thisTiddler,1);
e.cancelBubble = true; if (e.stopPropagation) e.stopPropagation();
return false;
}
function onKeyUpTOCList(e) {
if (!e) var e = window.event;
if (e.keyCode!=13) return true;
var thisTiddler=this.options[this.selectedIndex].value;
if ((thisTiddler!='')&&(this.selectedIndex>this.cmdMax))
story.displayTiddler(null,thisTiddler,1);
e.cancelBubble = true; if (e.stopPropagation) e.stopPropagation();
return false;
}
function reloadTOCLists() {
var all=document.all? document.all.tags("select") : document.getElementsByTagName("select");
for (var i=0; i<all.length; i++)
if (all[i].className=="TOCList")
{ all[i].selectedIndex=-1; refreshTOCList(all[i]); }
}
function refreshTOCList(list) {
var selectedIndex = list.selectedIndex;
if (selectedIndex==-1) selectedIndex=0;
var sortBy = list.sortBy;
var showHidden = config.options.chkTOCIncludeHidden && !(config.options.chkHttpReadOnly && readOnly);
if (selectedIndex==0) sortBy=list.sortBy; // "nnn tiddlers" heading - use previous sort order
else if (selectedIndex<=list.cmdMax)sortBy=list.value;
else { if (list.options[list.selectedIndex].value=='') expandTOC(list); return; }
list.sortBy = sortBy; // save current sort order
if (!list.noSortCookie) { config.options.txtTOCSortBy=sortBy; saveOptionCookie("txtTOCSortBy"); }
// get the list of tiddlers
var tiddlers = [];
switch (sortBy) {
case "missing": tiddlers=store.getMissingLinks(); break;
case "tags": tiddlers=store.getTags(); break;
case "orphans": tiddlers=store.getOrphans(); break;
case "shadows": for (var t in config.shadowTiddlers) tiddlers.push(t); tiddlers.sort(); break;
default: tiddlers=store.getTiddlers(sortBy=='creator'?'modifier':sortBy,showHidden?'':'excludeLists'); break;
}
// clear current listbox contents
while (list.length > 0) { list.options[0] = null; }
list.saved=null;
// add heading and control items to list
var i=0;
var theHeading=tiddlers.length+' tiddlers:';
if (sortBy=='missing') theHeading=tiddlers.length+' missing tiddlers:';
if (sortBy=='orphans') theHeading=tiddlers.length+' orphaned tiddlers:';
if (sortBy=='tags') theHeading=tiddlers.length+' tags:';
if (sortBy=='shadows') theHeading=tiddlers.length+' shadow tiddlers:';
var indent=String.fromCharCode(160)+String.fromCharCode(160);
var sel=">";
list.options[i++]=new Option(theHeading,'');
function headerOpt(txt,val) { return new Option(((sortBy==val)?sel:indent)+' ['+txt+']',val); }
if (!list.params['hide_title']) list.options[i++]=headerOpt('by title','title');
if (!list.params['hide_date']) list.options[i++]=headerOpt('by date','modified');
if (!list.params['hide_author']) list.options[i++]=headerOpt('by author','modifier');
if (!list.params['hide_creator']) list.options[i++]=headerOpt('by creator','creator');
if (!list.params['hide_tags']) list.options[i++]=headerOpt('by tags','tags');
if (!list.params['hide_missing']) list.options[i++]=headerOpt('missing','missing');
if (!list.params['hide_orphans']) list.options[i++]=headerOpt('orphans','orphans');
if (!list.params['hide_shadows']) list.options[i++]=headerOpt('shadows','shadows');
// output the tiddler list
switch(sortBy) {
case "title":
for (var t = 0; t < tiddlers.length; t++)
list.options[i++] = new Option(tiddlers[t].title,tiddlers[t].title);
break;
case "modified":
case "modifier":
case "creator":
if (sortBy=="modified") tiddlers.reverse(); // show newest first
if (sortBy=="creator") { // sort by custom field with fallback value
tiddlers.sort(function (a,b) {
var v1=a.fields.creator||a.modifier;
var v2=b.fields.creator||b.modifier;
return (v1==v2)?0:(v1>v2?1:-1);
});
}
var lastSection = "";
for (var t = 0; t < tiddlers.length; t++){
var tiddler = tiddlers[t];
var theSection = "";
var m=tiddler.modified;
if (sortBy=="modified") theSection=m.getFullYear()+'.'+(m.getMonth()+1)+'.'+m.getDate();
if (sortBy=="modifier") theSection = tiddler.modifier;
if (sortBy=="creator") theSection=tiddler.fields['creator']||tiddler.modifier;
if (theSection != lastSection) {
lastSection = theSection;
if (sortBy=="modified") theSection = m.formatString(list.dateFormat);
list.options[i++] = new Option('+ '+theSection,"");
}
list.options[i++] = new Option(indent+indent+tiddler.title,tiddler.title);
}
expandTOC(list);
break;
case "tags":
// tagged tiddlers, by tag
var tagcount=0;
var lastTag = null;
for (var t = 0; t < tiddlers.length; t++) { // actually a list of tags, not tiddlers...
var theTag = tiddlers[t][0]; var tid=store.getTiddler(theTag);
if (tid && tid.isTagged('excludeLists')) continue; // skip excluded tags
var temp = store.getTaggedTiddlers(theTag);
var tagged=[]; for (var q=0; q<temp.length; q++) // hide excluded tiddlers
if (!temp[q].isTagged('excludeLists')) tagged.push(temp[q]);
if (tagged.length) { tagcount++;
list.options[i++]=new Option('+ '+theTag+" ("+tagged.length+")","");
for(var r=0; r<tagged.length; r++)
list.options[i++]=
new Option(indent+indent+tagged[r].title,tagged[r].title);
}
}
// count untagged tiddlers
var temp = store.getTiddlers("title");
var c=0; for (var r=0; r<temp.length;r++) if (!temp[r].tags.length) c++;
// create 'pseudo-tag' listing untagged tiddlers (if any)
if (c>0) {
list.options[i++] = new Option("+ untagged ("+c+")","");
for (var r=0; r<temp.length;r++) if (!temp[r].tags.length)
list.options[i++] = new
Option(indent+indent+temp[r].title,temp[r].title);
}
list.options[0].text=tagcount+' tags:';
expandTOC(list);
break;
case "missing": case "orphans": case "shadows":
for (var t = 0; t < tiddlers.length; t++)
list.options[i++] = new Option(tiddlers[t],tiddlers[t]);
break;
}
list.selectedIndex=selectedIndex; // select current control item
list.size = (list.autosize)?list.options.length:list.requestedSize;
}
// show/hide branch of TOCList based on current selection
function expandTOC(list) {
var selectedIndex = list.selectedIndex;
if (selectedIndex==-1) selectedIndex=0;
var sortBy = list.sortBy;
// don't collapse/expand list for alpha-sorted "flatlist" TOC contents
// or list control items
if ((sortBy=="title")||(sortBy=="missing")||(sortBy=="orphans")||(sortBy=="shadows")) return;
if ((selectedIndex>0)&&(selectedIndex<=list.cmdMax)) return;
// get current selected text/value and cache the
// complete list. Then clear the current list contents
var theText = list.options[selectedIndex].text;
var theValue = list.options[selectedIndex].value;
if (!list.saved) {
list.saved=new Array();
for (var i=0;i<list.length;i++) list.saved[i]=list.options[i];
}
while (list.length > 0) { list.options[0] = null; }
// put back heading items until item text matches current selected heading
var i=0;
for (var t=0; t<list.saved.length; t++) {
var opt=list.saved[t];
if (list.expandall||(opt.value=='')||(i<=list.cmdMax)) list.options[i++] = opt;
if (opt.text==theText) break;
}
selectedIndex=i-1; // this is the NEW index of the current selected heading
// put back items with value!='' until value==''
for ( t++; t<list.saved.length; t++) {
var opt=list.saved[t];
if (list.expandall||opt.value!='') list.options[i++] = opt;
if (opt.value=='') break;
}
// put back remaining items with value==''
for ( ; t<list.saved.length; t++) {
var opt=list.saved[t];
if (list.expandall||opt.value=='') list.options[i++] = opt;
}
list.selectedIndex = selectedIndex;
list.size = (list.autosize)?list.options.length:list.requestedSize;
}
// these functions process clicks on the 'control links' that are displayed above the listbox
function getTOCListFromButton(which) {
var list = null;
switch (which.id) {
case 'TOCMenu':
var theSiblings = which.parentNode.parentNode.parentNode.childNodes;
var thePlace=which.parentNode.parentNode.parentNode.parentNode.parentNode.id;
break;
case 'TOCSmaller': case 'TOCLarger': case 'TOCMaximize':
var theSiblings = which.parentNode.parentNode.childNodes;
var thePlace=which.parentNode.parentNode.parentNode.parentNode.id;
break;
}
for (var k=0; k<theSiblings.length; k++)
if (theSiblings[k].className=="TOCList") { list=theSiblings[k]; break; }
return list;
}
function onClickTOCMenu(which) {
var list=getTOCListFromButton(which); if (!list) return;
var opening = list.style.display=="none";
if(config.options.chkAnimate) anim.startAnimating(new Slider(list,opening,false,"none"));
else list.style.display = opening ? "block" : "none" ;
if (!list.noShowCookie) { config.options.chkTOCShow = opening; saveOptionCookie("chkTOCShow"); }
return(false);
}
function resizeTOC(which) {
var list=getTOCListFromButton(which); if (!list) return;
var size = list.size;
if (list.style.display=="none") // make sure list is visible
if(config.options.chkAnimate) anim.startAnimating(new Slider(list,true,false,"none"));
else list.style.display = "block" ;
switch (which.id) {
case 'TOCSmaller': // decrease current listbox size
if (list.autosize) { list.autosize=false; size=config.options.txtTOCListSize; }
if (size==1) break;
size -= 1; // shrink by one line
list.requestedSize = list.size = size;
break;
case 'TOCLarger': // increase current listbox size
if (list.autosize) { list.autosize=false; size=config.options.txtTOCListSize; }
if (size>=list.options.length) break;
size += 1; // grow by one line
list.requestedSize = list.size = size;
break;
case 'TOCMaximize': // toggle autosize
list.autosize = (list.size!=list.options.length);
list.size = (list.autosize)?list.options.length:list.requestedSize;
break;
}
if (!list.noSizeCookie && !list.autosize)
{ config.options.txtTOCListSize=size; saveOptionCookie("txtTOCListSize"); }
}
//}}}
|Name|TableOfContentsPluginInfo|
|Source|http://www.TiddlyTools.com/#TableOfContentsPlugin|
|Documentation|http://www.TiddlyTools.com/#TableOfContentsPluginInfo|
|Version|2.4.3|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|documentation|
|Description|documentation for TableOfContentsPlugin|
When there are many tiddlers in a document, the standard 'tabbed list of tiddlers' in the right-hand sidebar can become very long, occupying a lot of page space and requiring a lot scrolling in order to locate and select a tiddler. This plugin replaces the standard tabs with a listbox/droplist control that uses a very small amount of page space, regardless of the number of tiddlers in the document.
!!!!!Usage
<<<
{{{
<<tableOfContents label:... sort:... date:... size:...
width:... padding:... margin:... prompt:... inline hidelist
-title -date -author -creator -tags -missing -orphans -shadows
}}}
*''label:text'' (default="contents")<br>the text that appears above the listbox.
*''sort:fieldtype''<br>sets the initial display order for items in the listbox. 'fieldtype' is one of: ''title, modified, modifier, creator, tags, missing, orphans,'' or ''shadows''.
*''date:format''<br>format for dates in listbox display, using TiddlyWiki date formatting (e.g. "DDD, MMM DD YYY")
*''size:nnn'' (default=1)<br>the initial number of lines to display in the listbox. If size=1, a droplist is created, otherwise a fixed-size listbox is created. You can use "size:0" or "size:auto" to display a varible-height listbox that automatically adjusts to fit the current list contents without scrolling.
*''width:...'' (default=100%)<br>the width of the listbox/droplist, using CSS units cm, px, em, or %. You can also use a ".TOCList" custom CSS class definition to override the built-in CSS declarations for the listbox.
*''padding:...''<br>sets listbox CSS padding style
*''margin:...''<br>sets listbox CSS margin style
*''prompt:...''<br>sets non-selectable prompt text that is displayed as the first line of the listbox //(note: this feature is not supported by the listbox control on all browsers)//. Let's you include a short text message (such as "select a tiddler"), even when displaying a compact single-line droplist.
*''inline''<br>By default, the listbox is rendered inside a {{{<div>}}} element. This keyword causes the plugin to use a {{{<span>}}} instead, allowing for more flexible 'inline' placement when embedded within other content.
*''hidelist''<br>when present, only the listbox label and size controls will be appear when first displayed. Clicking the label toggles the listbox display.
*''-title, -date, -author, -creator, -tags, -missing, -orphans, -shadows''<br>Omits the indicated list command item and corresponding listbox content.
Select (or double-click) a title from the listbox to open a tiddler, or select a 'command' items to set the order and type of tiddlers that are shown in the list:
*''[by title]''<br>displays all tiddlers in the document in alphanumeric order
*''[by date/author/creator/tags]''<br>displays indented sections, sorted accordingly, with headings (indicated by a '+') that can be expanded, one at a time, to view the list of tiddlers in that section. You can also ''shift-click'' on a section heading expand/collapse all sections at once.
*''[missing]''<br>displays tiddlers that have been referenced within the document but do not yet exist.
*''[orphans]''<br>displays tiddlers that do exist in the document but have not been referenced by a link from anywhere else within the document.
*''[shadows]''<br>displays special default/fallback tiddlers that are used by TiddlyWiki to configure built-in features and add-on macros/extensions.
The ''size of the listbox can be adjusted'' so you can view more (or less) tiddler titles at one time. Select ''[-]'' to reduce the size by one line, ''[+]'' to increase the size by one line, or ''[=]'' to autosize the list to fit the current contents (toggles on/off). //Note: If the listbox is reduced to a single line, it displayed as a droplist instead of a fixed-sized listbox.// You can ''show/hide the entire listbox'' by selecting the "contents" label that appears above the listbox.
<<<
!!!!!Configuration
<<option chkTOCShow>> display table of contents listbox
<<option chkTOCIncludeHidden>> include tiddlers tagged with <<tag excludeLists>> in listbox
listbox shows <<option txtTOCListSize>> lines, sorted by <<option txtTOCSortBy>>
!!!!!Parameters
<<<
<<<
!!!!!Examples
<<<
{{{<<tableOfContents "label:all tiddlers" sort:title width:40% size:1>>}}}
<<tableOfContents "label:all tiddlers" sort:title width:40% size:1>>
{{{<<tableOfContents "label:by date" sort:modified size:1 width:40%>>}}}
<<tableOfContents "label:by date" sort:modified size:1 width:40%>>
{{{<<tableOfContents "label:tagged tiddlers" sort:tags size:1 width:40%>>}}}
<<tableOfContents "label:tagged tiddlers" sort:tags size:1 width:40%>>
{{{<<tableOfContents "label:shadow tiddlers" sort:shadows size:1 width:40%>>}}}
<<tableOfContents "label:shadow tiddlers" sort:shadows size:1 width:40%>>
<<<
!!!!!Revisions
<<<
2008.04.09 2.4.3 restored config.options.chkTOCShow and onClickTOCMenu() handler
2008.04.07 2.4.2 added "Configuration" section and removed config.options.chkTOCShow and onClickTOCMenu() handler
2008.01.08 [*.*.*] plugin size reduction: documentation moved to ...Info tiddler
2007.12.25 2.4.1 code cleanup and performance improvements
2007.12.25 2.4.0 renamed 'system' section to 'shadows' (and no longer list plugins, etc. in that section). Also, added 'by creator' sort order (with fallback to 'modifier' if 'creator' custom field is undefined). Thanks to RA for suggestion and code tweaks.
2007.12.04 [*.*.*] update for TW2.3.0: replaced deprecated core functions, regexps, and macros
2007.03.22 2.3.2 in refreshTOCLists(), when sorting by date, use convertToLocalYYYYMMDDHHMM() instead of formatString() to compare dates for 'section headings' and only use formatString() when actually generating the section heading date display. Improves performance significantly for date sorted listbox, especially in documents with hundreds of tiddlers. Suggestion by AndreasHoefler.
2007.03.21 2.3.1 in refreshTOCLists(), only get list of 'select' elements, instead of scanning through all elements (saves significant time during refresh events. Suggestion by AndreasHoefler.
2006.11.27 2.3.0 added ability to omit sections from listbox via macro params (e.g., "-date -tags", etc.). Based on request from DavidWinfield.
2006.05.21 2.2.7 added onkeyup handling for enter key (=view selected tiddler, equivalent to double-click)
2006.02.14 2.2.6 FF1501 fix: add 'var r' and 'var k' to unintended global variable declarations in refreshTOCList() and getTOCListFromButton(). Thanks for report from AndreasHoefler.
2006.02.04 2.2.5 add 'var' to unintended global variable declarations to avoid FireFox 1.5.0.1 crash bug when assigning to globals
2005.12.21 2.2.2 in onClickTOCList() and onDblClickTOCList(), prevent mouse events from 'bubbling' up to other handlers
2005.10.30 2.2.1 in refreshTOCList(), fixed calculation of "showHidden" to check for 'readOnly' (i.e., "via HTTP") flag. Based on a report from LyallPearce
2005.10.30 2.2.0 hide tiddlers tagged with 'excludeLists' (with option to override, i.e., "include hidden tiddlers")
2005.10.09 2.1.0 combined documentation and code in a single tiddler
added click toggle for expand-all vs. show-one-branch
2005.08.07 2.0.0 major re-write to not use static ID values for listbox controls, so that multiple macro instances can exist without corrupting each other or the DOM. Moved HTML and CSS definitions into plugin code instead of using separate tiddlers. Added macro parameters for label, sort, date, size, width, hidelist and showtabs
2005.08.03 1.0.3 added "showtabs" optional parameter
2005.07.27 1.0.2 core update 1.2.29: custom overlayStyleSheet() replaced with new core setStylesheet(). Added show/hide toggle (click on 'contents' link)
2005.07.23 1.0.1 added parameter checks and corrected addNotification() usage
2005.07.20 1.0.0 Initial Release
<<<
/***
|''Name:''|TableSortingPlugin|
|''Description:''|Dynamically sort tables by clicking on column headers|
|''Author:''|Saq Imtiaz ( lewcid@gmail.com )|
|''Source:''|http://tw.lewcid.org/#TableSortingPlugin|
|''Code Repository:''|http://tw.lewcid.org/svn/plugins|
|''Version:''|2.02|
|''Date:''|25-01-2008|
|''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''~CoreVersion:''|2.2.3|
!!Usage:
* Make sure your table has a header row
** {{{|Name|Phone Number|Address|h}}}<br> Note the /h/ that denote a header row
* Give the table a class of 'sortable'
** {{{
|sortable|k
|Name|Phone Number|Address|h
}}}<br>Note the /k/ that denotes a class name being assigned to the table.
* To disallow sorting by a column, place {{{<<nosort>>}}} in it's header
* To automatically sort a table by a column, place {{{<<autosort>>}}} in the header for that column
** Or to sort automatically but in reverse order, use {{{<<autosort reverse>>}}}
!!Example:
|sortable|k
|Name |Salary |Extension |Performance |File Size |Start date |h
|ZBloggs, Fred |$12000.00 |1353 |+1.2 |74.2Kb |Aug 19, 2003 21:34:00 |
|ABloggs, Fred |$12000.00 |1353 |1.2 |3350b |09/18/2003 |
|CBloggs, Fred |$12000 |1353 |1.200 |55.2Kb |August 18, 2003 |
|DBloggs, Fred |$12000.00 |1353 |1.2 |2100b |07/18/2003 |
|Bloggs, Fred |$12000.00 |1353 |01.20 |6.156Mb |08/17/2003 05:43 |
|Turvey, Kevin |$191200.00 |2342 |-33 |1b |02/05/1979 |
|Mbogo, Arnold |$32010.12 |2755 |-21.673 |1.2Gb |09/08/1998 |
|Shakespeare, Bill |£122000.00|3211 |6 |33.22Gb |12/11/1961 |
|Shakespeare, Hamlet |£9000 |9005 |-8 |3Gb |01/01/2002 |
|Fitz, Marvin |€3300.30 |5554 |+5 |4Kb |05/22/1995 |
***/
// /%
//!BEGIN-PLUGIN-CODE
config.tableSorting = {
darrow: "\u2193",
uarrow: "\u2191",
getText : function (o) {
var p = o.cells[SORT_INDEX];
return p.innerText || p.textContent || '';
},
sortTable : function (o,rev) {
SORT_INDEX = o.getAttribute("index");
var c = config.tableSorting;
var T = findRelated(o.parentNode,"TABLE");
if(T.tBodies[0].rows.length<=1)
return;
var itm = "";
var i = 0;
while (itm == "" && i < T.tBodies[0].rows.length) {
itm = c.getText(T.tBodies[0].rows[i]).trim();
i++;
}
if (itm == "")
return;
var r = [];
var S = o.getElementsByTagName("span")[0];
c.fn = c.sortAlpha;
if(!isNaN(Date.parse(itm)))
c.fn = c.sortDate;
else if(itm.match(/^[$|£|€|\+|\-]{0,1}\d*\.{0,1}\d+$/))
c.fn = c.sortNumber;
else if(itm.match(/^\d*\.{0,1}\d+[K|M|G]{0,1}b$/))
c.fn = c.sortFile;
for(i=0; i<T.tBodies[0].rows.length; i++) {
r[i]=T.tBodies[0].rows[i];
}
r.sort(c.reSort);
if(S.firstChild.nodeValue==c.darrow || rev) {
r.reverse();
S.firstChild.nodeValue=c.uarrow;
}
else
S.firstChild.nodeValue=c.darrow;
var thead = T.getElementsByTagName('thead')[0];
var headers = thead.rows[thead.rows.length-1].cells;
for(var k=0; k<headers.length; k++) {
if(!hasClass(headers[k],"nosort"))
addClass(headers[k].getElementsByTagName("span")[0],"hidden");
}
removeClass(S,"hidden");
for(i=0; i<r.length; i++) {
T.tBodies[0].appendChild(r[i]);
c.stripe(r[i],i);
for(var j=0; j<r[i].cells.length;j++){
removeClass(r[i].cells[j],"sortedCol");
}
addClass(r[i].cells[SORT_INDEX],"sortedCol");
}
},
stripe : function (e,i){
var cl = ["oddRow","evenRow"];
i&1? cl.reverse() : cl;
removeClass(e,cl[1]);
addClass(e,cl[0]);
},
sortNumber : function(v) {
var x = parseFloat(this.getText(v).replace(/[^0-9.-]/g,''));
return isNaN(x)? 0: x;
},
sortDate : function(v) {
return Date.parse(this.getText(v));
},
sortAlpha : function(v) {
return this.getText(v).toLowerCase();
},
sortFile : function(v) {
var j, q = config.messages.sizeTemplates, s = this.getText(v);
for (var i=0; i<q.length; i++) {
if ((j = s.toLowerCase().indexOf(q[i].template.replace("%0\u00a0","").toLowerCase())) != -1)
return q[i].unit * s.substr(0,j);
}
return parseFloat(s);
},
reSort : function(a,b){
var c = config.tableSorting;
var aa = c.fn(a);
var bb = c.fn(b);
return ((aa==bb)? 0 : ((aa<bb)? -1:1));
}
};
Story.prototype.tSort_refreshTiddler = Story.prototype.refreshTiddler;
Story.prototype.refreshTiddler = function(title,template,force,customFields,defaultText){
var elem = this.tSort_refreshTiddler.apply(this,arguments);
if(elem){
var tables = elem.getElementsByTagName("TABLE");
var c = config.tableSorting;
for(var i=0; i<tables.length; i++){
if(hasClass(tables[i],"sortable")){
var x = null, rev, table = tables[i], thead = table.getElementsByTagName('thead')[0], headers = thead.rows[thead.rows.length-1].cells;
for (var j=0; j<headers.length; j++){
var h = headers[j];
if (hasClass(h,"nosort"))
continue;
h.setAttribute("index",j);
h.onclick = function(){c.sortTable(this); return false;};
h.ondblclick = stopEvent;
if(h.getElementsByTagName("span").length == 0)
createTiddlyElement(h,"span",null,"hidden",c.uarrow);
if(!x && hasClass(h,"autosort")) {
x = j;
rev = hasClass(h,"reverse");
}
}
if(x)
c.sortTable(headers[x],rev);
}
}
}
return elem;
};
setStylesheet("table.sortable span.hidden {visibility:hidden;}\n"+
"table.sortable thead {cursor:pointer;}\n"+
"table.sortable .nosort {cursor:default;}\n"+
"table.sortable td.sortedCol {background:#ffc;}","TableSortingPluginStyles");
function stopEvent(e){
var ev = e? e : window.event;
ev.cancelBubble = true;
if (ev.stopPropagation) ev.stopPropagation();
return false;
}
config.macros.nosort={
handler : function(place){
addClass(place,"nosort");
}
};
config.macros.autosort={
handler : function(place,m,p,w,pS){
addClass(place,"autosort"+" "+pS);
}
};
//!END-PLUGIN-CODE
// %/
Calls down a Tactical Missile Strike at a target location. Tactical Missiles take 4 seconds to land, but they deal up to 150 (+200 vs. structures) damage to enemies in a small radius.
Purchase charges at the royal academy.
|Fenix's Network Administrator prestige has a buffed version of the talent Tactical web Data. It has both a faster growth (because units costs half as much and the bonus is 300% each) and an higher max bonus (300%, or +200%). This is what the game tooltips say, compared to the other prestiges.|c
|Champion AI|Affected Ability|Ability Description|Standard Tactical Data Web Effect|Network Administrator Tactical Data Web Effect|Shells for max bonus|h
|Kaldalis|Empowered Blades|Kaldalis attacks deal 9+* damage to nearby enemy targets.|Empowered Blades do an additional 4 damage for each networked Legionnaire (up to 30 damage).|Empowered Blades deal an additional 14 damage for each networked Legionnaire (up to 90 damage).|7|
|Talis|Ricochet Glaive|An amplified glaive that ricochets and hits up to 3 enemy units for 25+* (35+* vs light) damage each. 5 seconds cooldown.|Ricochet Glaive's does an additional 2.5 (3.5 vs Light) damage for each networked Adept (up to 25 (35 vs Light) damage).|Ricochet Glaive's does an additional 7.5 (10.5 vs Light) damage for each networked Adept (up to 75 (105 vs Light) damage).|10|
|Taldarin|Gravimetric Overload|Each attack stores 25%+* of the damage dealt on the target. When that unit is killed, it explodes, dealing all of the stored damage to nearby enemy units.|Gravimetric Overload stores 10% additional damage per attack for each networked Immortal (up to 50% damage).|Gravimetric Overload stores 30% additional damage per attack for each networked Immortal (up to 150% damage).|5|
|Warbringer|Purification Blast|Fires a devastating blast that deals 150+* damage to the target unit. 5 seconds cooldown.|Purification Blast do an additional 45 damage for each networked Colossus (up to 150 damage).|Purification Blast do an additional 135 damage for each networked Colossus (up to 450 damage).|4|
|Mojo|Suppression Procedure|Fires a barrage of Anti-Matter missiles, dealing 6+* (12+* vs armored) area damage and stunning nearby enemy air units for 1 second. 5 seconds cooldown.|Suppression Procedure does an additional 0.9 (1.8 vs Armored) damage for each networked Scout (up to 6 (12 vs Armored) damage).|Suppression Procedure does an additional 2.7 (5.4 vs Armored) damage for each networked Scout (up to 18 (36 vs Armored) damage).|7|
|Clolarion|Interdictors|Automatically bombs enemy ground units for 12+* damage.|Interdictor damage is increased by 3 for each networked Carrier (up to 10 damage).|Interdictor damage is increased by 9 for each networked Carrier (up to 30 damage).|4|
/***
|Name:|TagglyTaggingPlugin|
|Description:|tagglyTagging macro is a replacement for the builtin tagging macro in your ViewTemplate|
|Version:|3.3.2a|
|Date:|27-Jun-2011|
|Source:|http://mptw.tiddlyspot.com/#TagglyTaggingPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!Notes
See http://mptw.tiddlyspot.com/#TagglyTagging
***/
//{{{
merge(String.prototype,{
parseTagExpr: function(debug) {
if (this.trim() == "")
return "(true)";
var anyLogicOp = /(!|&&|\|\||\(|\))/g;
var singleLogicOp = /^(!|&&|\|\||\(|\))$/;
var spaced = this.
// because square brackets in templates are no good
// this means you can use [(With Spaces)] instead of [[With Spaces]]
replace(/\[\(/g," [[").
replace(/\)\]/g,"]] ").
// space things out so we can use readBracketedList. tricky eh?
replace(anyLogicOp," $1 ");
var expr = "";
var tokens = spaced.readBracketedList(false); // false means don't uniq the list. nice one JR!
for (var i=0;i<tokens.length;i++)
if (tokens[i].match(singleLogicOp))
expr += tokens[i];
else
expr += "tiddler.tags.contains('%0')".format([tokens[i].replace(/'/,"\\'")]); // fix single quote bug. still have round bracket bug i think
if (debug)
alert(expr);
return '('+expr+')';
}
});
merge(TiddlyWiki.prototype,{
getTiddlersByTagExpr: function(tagExpr,sortField) {
var result = [];
var expr = tagExpr.parseTagExpr();
store.forEachTiddler(function(title,tiddler) {
if (eval(expr))
result.push(tiddler);
});
if(!sortField)
sortField = "title";
result.sort(function(a,b) {return a[sortField] < b[sortField] ? -1 : (a[sortField] == b[sortField] ? 0 : +1);});
return result;
}
});
config.taggly = {
// for translations
lingo: {
labels: {
asc: "\u2191", // down arrow
desc: "\u2193", // up arrow
title: "title",
modified: "modified",
created: "created",
show: "+",
hide: "-",
normal: "normal",
group: "group",
commas: "commas",
sitemap: "sitemap",
numCols: "cols\u00b1", // plus minus sign
label: "Tagged as '%0':",
exprLabel: "Matching tag expression '%0':",
excerpts: "excerpts",
descr: "descr",
slices: "slices",
contents: "contents",
sliders: "sliders",
noexcerpts: "title only",
noneFound: "(none)"
},
tooltips: {
title: "Click to sort by title",
modified: "Click to sort by modified date",
created: "Click to sort by created date",
show: "Click to show tagging list",
hide: "Click to hide tagging list",
normal: "Click to show a normal ungrouped list",
group: "Click to show list grouped by tag",
sitemap: "Click to show a sitemap style list",
commas: "Click to show a comma separated list",
numCols: "Click to change number of columns",
excerpts: "Click to show excerpts",
descr: "Click to show the description slice",
slices: "Click to show all slices",
contents: "Click to show entire tiddler contents",
sliders: "Click to show tiddler contents in sliders",
noexcerpts: "Click to show entire title only"
},
tooDeepMessage: "* //sitemap too deep...//"
},
config: {
showTaggingCounts: true,
listOpts: {
// the first one will be the default
sortBy: ["title","modified","created"],
sortOrder: ["asc","desc"],
hideState: ["show","hide"],
listMode: ["normal","group","sitemap","commas"],
numCols: ["1","2","3","4","5","6"],
excerpts: ["noexcerpts","excerpts","descr","slices","contents","sliders"]
},
valuePrefix: "taggly.",
excludeTags: ["excludeLists","excludeTagging"],
excerptSize: 50,
excerptMarker: "/%"+"%/",
siteMapDepthLimit: 25
},
getTagglyOpt: function(title,opt) {
var val = store.getValue(title,this.config.valuePrefix+opt);
return val ? val : this.config.listOpts[opt][0];
},
setTagglyOpt: function(title,opt,value) {
// create it silently if it doesn't exist
if (!store.tiddlerExists(title)) {
store.saveTiddler(title,title,config.views.editor.defaultText.format([title]),config.options.txtUserName,new Date(),"");
// <<tagglyTagging expr:"...">> creates a tiddler to store its display settings
// Make those tiddlers less noticeable by tagging as excludeSearch and excludeLists
// Because we don't want to hide real tags, check that they aren't actually tags before doing so
// Also tag them as tagglyExpression for manageability
// (contributed by RA)
if (!store.getTaggedTiddlers(title).length) {
store.setTiddlerTag(title,true,"excludeSearch");
store.setTiddlerTag(title,true,"excludeLists");
store.setTiddlerTag(title,true,"tagglyExpression");
}
}
// if value is default then remove it to save space
return store.setValue(title, this.config.valuePrefix+opt, value == this.config.listOpts[opt][0] ? null : value);
},
getNextValue: function(title,opt) {
var current = this.getTagglyOpt(title,opt);
var pos = this.config.listOpts[opt].indexOf(current);
// supposed to automagically don't let cols cycle up past the number of items
// currently broken in some situations, eg when using an expression
// lets fix it later when we rewrite for jquery
// the columns thing should be jquery table manipulation probably
var limit = (opt == "numCols" ? store.getTaggedTiddlers(title).length : this.config.listOpts[opt].length);
var newPos = (pos + 1) % limit;
return this.config.listOpts[opt][newPos];
},
toggleTagglyOpt: function(title,opt) {
var newVal = this.getNextValue(title,opt);
this.setTagglyOpt(title,opt,newVal);
},
createListControl: function(place,title,type) {
var lingo = config.taggly.lingo;
var label;
var tooltip;
var onclick;
if ((type == "title" || type == "modified" || type == "created")) {
// "special" controls. a little tricky. derived from sortOrder and sortBy
label = lingo.labels[type];
tooltip = lingo.tooltips[type];
if (this.getTagglyOpt(title,"sortBy") == type) {
label += lingo.labels[this.getTagglyOpt(title,"sortOrder")];
onclick = function() {
config.taggly.toggleTagglyOpt(title,"sortOrder");
return false;
}
}
else {
onclick = function() {
config.taggly.setTagglyOpt(title,"sortBy",type);
config.taggly.setTagglyOpt(title,"sortOrder",config.taggly.config.listOpts.sortOrder[0]);
return false;
}
}
}
else {
// "regular" controls, nice and simple
label = lingo.labels[type == "numCols" ? type : this.getNextValue(title,type)];
tooltip = lingo.tooltips[type == "numCols" ? type : this.getNextValue(title,type)];
onclick = function() {
config.taggly.toggleTagglyOpt(title,type);
return false;
}
}
// hide button because commas don't have columns
if (!(this.getTagglyOpt(title,"listMode") == "commas" && type == "numCols"))
createTiddlyButton(place,label,tooltip,onclick,type == "hideState" ? "hidebutton" : "button");
},
makeColumns: function(orig,numCols) {
var listSize = orig.length;
var colSize = listSize/numCols;
var remainder = listSize % numCols;
var upperColsize = colSize;
var lowerColsize = colSize;
if (colSize != Math.floor(colSize)) {
// it's not an exact fit so..
upperColsize = Math.floor(colSize) + 1;
lowerColsize = Math.floor(colSize);
}
var output = [];
var c = 0;
for (var j=0;j<numCols;j++) {
var singleCol = [];
var thisSize = j < remainder ? upperColsize : lowerColsize;
for (var i=0;i<thisSize;i++)
singleCol.push(orig[c++]);
output.push(singleCol);
}
return output;
},
drawTable: function(place,columns,theClass) {
var newTable = createTiddlyElement(place,"table",null,theClass);
var newTbody = createTiddlyElement(newTable,"tbody");
var newTr = createTiddlyElement(newTbody,"tr");
for (var j=0;j<columns.length;j++) {
var colOutput = "";
for (var i=0;i<columns[j].length;i++)
colOutput += columns[j][i];
var newTd = createTiddlyElement(newTr,"td",null,"tagglyTagging"); // todo should not need this class
wikify(colOutput,newTd);
}
return newTable;
},
createTagglyList: function(place,title,isTagExpr) {
switch(this.getTagglyOpt(title,"listMode")) {
case "group": return this.createTagglyListGrouped(place,title,isTagExpr); break;
case "normal": return this.createTagglyListNormal(place,title,false,isTagExpr); break;
case "commas": return this.createTagglyListNormal(place,title,true,isTagExpr); break;
case "sitemap":return this.createTagglyListSiteMap(place,title,isTagExpr); break;
}
},
getTaggingCount: function(title,isTagExpr) {
// thanks to Doug Edmunds
if (this.config.showTaggingCounts) {
var tagCount = config.taggly.getTiddlers(title,'title',isTagExpr).length;
if (tagCount > 0)
return " ("+tagCount+")";
}
return "";
},
getTiddlers: function(titleOrExpr,sortBy,isTagExpr) {
return isTagExpr ? store.getTiddlersByTagExpr(titleOrExpr,sortBy) : store.getTaggedTiddlers(titleOrExpr,sortBy);
},
getExcerpt: function(inTiddlerTitle,title,indent) {
if (!indent)
indent = 1;
var displayMode = this.getTagglyOpt(inTiddlerTitle,"excerpts");
var t = store.getTiddler(title);
if (t && displayMode == "excerpts") {
var text = t.text.replace(/\n/," ");
var marker = text.indexOf(this.config.excerptMarker);
if (marker != -1) {
return " {{excerpt{<nowiki>" + text.substr(0,marker) + "</nowiki>}}}";
}
else if (text.length < this.config.excerptSize) {
return " {{excerpt{<nowiki>" + t.text + "</nowiki>}}}";
}
else {
return " {{excerpt{<nowiki>" + t.text.substr(0,this.config.excerptSize) + "..." + "</nowiki>}}}";
}
}
else if (t && displayMode == "contents") {
return "\n{{contents indent"+indent+"{\n" + t.text + "\n}}}";
}
else if (t && displayMode == "sliders") {
return "<slider slide>\n{{contents{\n" + t.text + "\n}}}\n</slider>";
}
else if (t && displayMode == "descr") {
var descr = store.getTiddlerSlice(title,'Description');
return descr ? " {{excerpt{" + descr + "}}}" : "";
}
else if (t && displayMode == "slices") {
var result = "";
var slices = store.calcAllSlices(title);
for (var s in slices)
result += "|%0|<nowiki>%1</nowiki>|\n".format([s,slices[s]]);
return result ? "\n{{excerpt excerptIndent{\n" + result + "}}}" : "";
}
return "";
},
notHidden: function(t,inTiddler) {
if (typeof t == "string")
t = store.getTiddler(t);
return (!t || !t.tags.containsAny(this.config.excludeTags) ||
(inTiddler && this.config.excludeTags.contains(inTiddler)));
},
// this is for normal and commas mode
createTagglyListNormal: function(place,title,useCommas,isTagExpr) {
var list = config.taggly.getTiddlers(title,this.getTagglyOpt(title,"sortBy"),isTagExpr);
if (this.getTagglyOpt(title,"sortOrder") == "desc")
list = list.reverse();
var output = [];
var first = true;
for (var i=0;i<list.length;i++) {
if (this.notHidden(list[i],title)) {
var countString = this.getTaggingCount(list[i].title);
var excerpt = this.getExcerpt(title,list[i].title);
if (useCommas)
output.push((first ? "" : ", ") + "[[" + list[i].title + "]]" + countString + excerpt);
else
output.push("*[[" + list[i].title + "]]" + countString + excerpt + "\n");
first = false;
}
}
return this.drawTable(place,
this.makeColumns(output,useCommas ? 1 : parseInt(this.getTagglyOpt(title,"numCols"))),
useCommas ? "commas" : "normal");
},
// this is for the "grouped" mode
createTagglyListGrouped: function(place,title,isTagExpr) {
var sortBy = this.getTagglyOpt(title,"sortBy");
var sortOrder = this.getTagglyOpt(title,"sortOrder");
var list = config.taggly.getTiddlers(title,sortBy,isTagExpr);
if (sortOrder == "desc")
list = list.reverse();
var leftOvers = []
for (var i=0;i<list.length;i++)
leftOvers.push(list[i].title);
var allTagsHolder = {};
for (var i=0;i<list.length;i++) {
for (var j=0;j<list[i].tags.length;j++) {
if (list[i].tags[j] != title) { // not this tiddler
if (this.notHidden(list[i].tags[j],title)) {
if (!allTagsHolder[list[i].tags[j]])
allTagsHolder[list[i].tags[j]] = "";
if (this.notHidden(list[i],title)) {
allTagsHolder[list[i].tags[j]] += "**[["+list[i].title+"]]"
+ this.getTaggingCount(list[i].title) + this.getExcerpt(title,list[i].title) + "\n";
leftOvers.setItem(list[i].title,-1); // remove from leftovers. at the end it will contain the leftovers
}
}
}
}
}
var allTags = [];
for (var t in allTagsHolder)
allTags.push(t);
var sortHelper = function(a,b) {
if (a == b) return 0;
if (a < b) return -1;
return 1;
};
allTags.sort(function(a,b) {
var tidA = store.getTiddler(a);
var tidB = store.getTiddler(b);
if (sortBy == "title") return sortHelper(a,b);
else if (!tidA && !tidB) return 0;
else if (!tidA) return -1;
else if (!tidB) return +1;
else return sortHelper(tidA[sortBy],tidB[sortBy]);
});
var leftOverOutput = "";
for (var i=0;i<leftOvers.length;i++)
if (this.notHidden(leftOvers[i],title))
leftOverOutput += "*[["+leftOvers[i]+"]]" + this.getTaggingCount(leftOvers[i]) + this.getExcerpt(title,leftOvers[i]) + "\n";
var output = [];
if (sortOrder == "desc")
allTags.reverse();
else if (leftOverOutput != "")
// leftovers first...
output.push(leftOverOutput);
for (var i=0;i<allTags.length;i++)
if (allTagsHolder[allTags[i]] != "")
output.push("*[["+allTags[i]+"]]" + this.getTaggingCount(allTags[i]) + this.getExcerpt(title,allTags[i]) + "\n" + allTagsHolder[allTags[i]]);
if (sortOrder == "desc" && leftOverOutput != "")
// leftovers last...
output.push(leftOverOutput);
return this.drawTable(place,
this.makeColumns(output,parseInt(this.getTagglyOpt(title,"numCols"))),
"grouped");
},
// used to build site map
treeTraverse: function(title,depth,sortBy,sortOrder,isTagExpr) {
var list = config.taggly.getTiddlers(title,sortBy,isTagExpr);
if (sortOrder == "desc")
list.reverse();
var indent = "";
for (var j=0;j<depth;j++)
indent += "*"
var childOutput = "";
if (depth > this.config.siteMapDepthLimit)
childOutput += indent + this.lingo.tooDeepMessage + "\n";
else
for (var i=0;i<list.length;i++)
if (list[i].title != title)
if (this.notHidden(list[i].title,this.config.inTiddler))
childOutput += this.treeTraverse(list[i].title,depth+1,sortBy,sortOrder,false);
if (depth == 0)
return childOutput;
else
return indent + "[["+title+"]]" + this.getTaggingCount(title) + this.getExcerpt(this.config.inTiddler,title,depth) + "\n" + childOutput;
},
// this if for the site map mode
createTagglyListSiteMap: function(place,title,isTagExpr) {
this.config.inTiddler = title; // nasty. should pass it in to traverse probably
var output = this.treeTraverse(title,0,this.getTagglyOpt(title,"sortBy"),this.getTagglyOpt(title,"sortOrder"),isTagExpr);
return this.drawTable(place,
this.makeColumns(output.split(/(?=^\*\[)/m),parseInt(this.getTagglyOpt(title,"numCols"))), // regexp magic
"sitemap"
);
},
macros: {
tagglyTagging: {
handler: function (place,macroName,params,wikifier,paramString,tiddler) {
var parsedParams = paramString.parseParams("tag",null,true);
var refreshContainer = createTiddlyElement(place,"div");
// do some refresh magic to make it keep the list fresh - thanks Saq
refreshContainer.setAttribute("refresh","macro");
refreshContainer.setAttribute("macroName",macroName);
var tag = getParam(parsedParams,"tag");
var expr = getParam(parsedParams,"expr");
if (expr) {
refreshContainer.setAttribute("isTagExpr","true");
refreshContainer.setAttribute("title",expr);
refreshContainer.setAttribute("showEmpty","true");
}
else {
refreshContainer.setAttribute("isTagExpr","false");
if (tag) {
refreshContainer.setAttribute("title",tag);
refreshContainer.setAttribute("showEmpty","true");
}
else {
refreshContainer.setAttribute("title",tiddler.title);
refreshContainer.setAttribute("showEmpty","false");
}
}
this.refresh(refreshContainer);
},
refresh: function(place) {
var title = place.getAttribute("title");
var isTagExpr = place.getAttribute("isTagExpr") == "true";
var showEmpty = place.getAttribute("showEmpty") == "true";
jQuery(place).empty()
jQuery(place).addClass("tagglyTagging");
var countFound = config.taggly.getTiddlers(title,'title',isTagExpr).length
if (countFound > 0 || showEmpty) {
var lingo = config.taggly.lingo;
config.taggly.createListControl(place,title,"hideState");
if (config.taggly.getTagglyOpt(title,"hideState") == "show") {
createTiddlyElement(place,"span",null,"tagglyLabel",
isTagExpr ? lingo.labels.exprLabel.format([title]) : lingo.labels.label.format([title]));
config.taggly.createListControl(place,title,"title");
config.taggly.createListControl(place,title,"modified");
config.taggly.createListControl(place,title,"created");
config.taggly.createListControl(place,title,"listMode");
config.taggly.createListControl(place,title,"excerpts");
config.taggly.createListControl(place,title,"numCols");
config.taggly.createTagglyList(place,title,isTagExpr);
if (countFound == 0 && showEmpty)
createTiddlyElement(place,"div",null,"tagglyNoneFound",lingo.labels.noneFound);
}
}
}
}
},
// todo fix these up a bit
styles: [
"/*{{{*/",
"/* created by TagglyTaggingPlugin */",
".tagglyTagging { padding-top:0.5em; }",
".tagglyTagging li.listTitle { display:none; }",
".tagglyTagging ul {",
" margin-top:0px; padding-top:0.5em; padding-left:2em;",
" margin-bottom:0px; padding-bottom:0px;",
"}",
".tagglyTagging { vertical-align: top; margin:0px; padding:0px; }",
".tagglyTagging table { margin:0px; padding:0px; }",
".tagglyTagging .button { visibility:hidden; margin-left:3px; margin-right:3px; }",
".tagglyTagging .button, .tagglyTagging .hidebutton {",
" color:[[ColorPalette::TertiaryLight]]; font-size:90%;",
" border:0px; padding-left:0.3em;padding-right:0.3em;",
"}",
".tagglyTagging .button:hover, .hidebutton:hover, ",
".tagglyTagging .button:active, .hidebutton:active {",
" border:0px; background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]];",
"}",
".selected .tagglyTagging .button { visibility:visible; }",
".tagglyTagging .hidebutton { color:[[ColorPalette::Background]]; }",
".selected .tagglyTagging .hidebutton { color:[[ColorPalette::TertiaryLight]] }",
".tagglyLabel { color:[[ColorPalette::TertiaryMid]]; font-size:90%; }",
".tagglyTagging ul {padding-top:0px; padding-bottom:0.5em; margin-left:1em; }",
".tagglyTagging ul ul {list-style-type:disc; margin-left:-1em;}",
".tagglyTagging ul ul li {margin-left:0.5em; }",
".editLabel { font-size:90%; padding-top:0.5em; }",
".tagglyTagging .commas { padding-left:1.8em; }",
"/* not technically tagglytagging but will put them here anyway */",
".tagglyTagged li.listTitle { display:none; }",
".tagglyTagged li { display: inline; font-size:90%; }",
".tagglyTagged ul { margin:0px; padding:0px; }",
".excerpt { color:[[ColorPalette::TertiaryDark]]; }",
".excerptIndent { margin-left:4em; }",
"div.tagglyTagging table,",
"div.tagglyTagging table tr,",
"td.tagglyTagging",
" {border-style:none!important; }",
".tagglyTagging .contents { border-bottom:2px solid [[ColorPalette::TertiaryPale]]; padding:0 1em 1em 0.5em;",
" margin-bottom:0.5em; }",
".tagglyTagging .indent1 { margin-left:3em; }",
".tagglyTagging .indent2 { margin-left:4em; }",
".tagglyTagging .indent3 { margin-left:5em; }",
".tagglyTagging .indent4 { margin-left:6em; }",
".tagglyTagging .indent5 { margin-left:7em; }",
".tagglyTagging .indent6 { margin-left:8em; }",
".tagglyTagging .indent7 { margin-left:9em; }",
".tagglyTagging .indent8 { margin-left:10em; }",
".tagglyTagging .indent9 { margin-left:11em; }",
".tagglyTagging .indent10 { margin-left:12em; }",
".tagglyNoneFound { margin-left:2em; color:[[ColorPalette::TertiaryMid]]; font-size:90%; font-style:italic; }",
"/*}}}*/",
""].join("\n"),
init: function() {
merge(config.macros,this.macros);
config.shadowTiddlers["TagglyTaggingStyles"] = this.styles;
store.addNotification("TagglyTaggingStyles",refreshStyles);
}
};
config.taggly.init();
//}}}
/***
InlineSlidersPlugin
By Saq Imtiaz
http://tw.lewcid.org/sandbox/#InlineSlidersPlugin
// syntax adjusted to not clash with NestedSlidersPlugin
// added + syntax to start open instead of closed
***/
//{{{
config.formatters.unshift( {
name: "inlinesliders",
// match: "\\+\\+\\+\\+|\\<slider",
match: "\\<slider",
// lookaheadRegExp: /(?:\+\+\+\+|<slider) (.*?)(?:>?)\n((?:.|\n)*?)\n(?:====|<\/slider>)/mg,
lookaheadRegExp: /(?:<slider)(\+?) (.*?)(?:>)\n((?:.|\n)*?)\n(?:<\/slider>)/mg,
handler: function(w) {
this.lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
if(lookaheadMatch && lookaheadMatch.index == w.matchStart ) {
var btn = createTiddlyButton(w.output,lookaheadMatch[2] + " "+"\u00BB",lookaheadMatch[2],this.onClickSlider,"button sliderButton");
var panel = createTiddlyElement(w.output,"div",null,"sliderPanel");
panel.style.display = (lookaheadMatch[1] == '+' ? "block" : "none");
wikify(lookaheadMatch[3],panel);
w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
}
},
onClickSlider : function(e) {
if(!e) var e = window.event;
var n = this.nextSibling;
n.style.display = (n.style.display=="none") ? "block" : "none";
return false;
}
});
//}}}
[img[https://vignette.wikia.nocookie.net/starcraft/images/b/bb/Time_SC2_Game1.jpg/revision/latest/scale-to-width-down/15?cb=20100328035732]]
/%
!info
|Name|ToggleRightSidebar|
|Source|http://www.TiddlyTools.com/#ToggleRightSidebar|
|Version|2.0.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion|
|Description|show/hide right sidebar (SideBarOptions)|
Usage
<<<
{{{
<<tiddler ToggleRightSidebar>>
<<tiddler ToggleRightSidebar with: label tooltip>>
}}}
Try it: <<tiddler ToggleRightSidebar##show
with: {{config.options.chkShowRightSidebar?'►':'◄'}}>>
<<<
Configuration:
<<<
copy/paste the following settings into a tiddler tagged with <<tag systemConfig>> and then modify the values to suit your preferences:
{{{
config.options.chkShowRightSidebar=true;
config.options.txtToggleRightSideBarLabelShow="◄";
config.options.txtToggleRightSideBarLabelHide="►";
}}}
<<<
!end
!show
<<tiddler {{
var co=config.options;
if (co.chkShowRightSidebar===undefined) co.chkShowRightSidebar=true;
var sb=document.getElementById('sidebar');
var da=document.getElementById('displayArea');
if (sb) {
sb.style.display=co.chkShowRightSidebar?'block':'none';
da.style.marginRight=co.chkShowRightSidebar?'':'1em';
}
'';}}>><html><nowiki><a href='javascript:;' title="$2"
onmouseover="
this.href='javascript:void(eval(decodeURIComponent(%22(function(){try{('
+encodeURIComponent(encodeURIComponent(this.onclick))
+')()}catch(e){alert(e.description?e.description:e.toString())}})()%22)))';"
onclick="
var co=config.options;
var opt='chkShowRightSidebar';
var show=co[opt]=!co[opt];
var sb=document.getElementById('sidebar');
var da=document.getElementById('displayArea');
if (sb) {
sb.style.display=show?'block':'none';
da.style.marginRight=show?'':'1em';
}
saveOptionCookie(opt);
var labelShow=co.txtToggleRightSideBarLabelShow||'◄';
var labelHide=co.txtToggleRightSideBarLabelHide||'►';
if (this.innerHTML==labelShow||this.innerHTML==labelHide)
this.innerHTML=show?labelHide:labelShow;
this.title=(show?'hide':'show')+' right sidebar';
var sm=document.getElementById('storyMenu');
if (sm) config.refreshers.content(sm);
return false;
">$1</a></html>
!end
%/<<tiddler {{
var src='ToggleRightSidebar';
src+(tiddler&&tiddler.title==src?'##info':'##show');
}} with: {{
var co=config.options;
var labelShow=co.txtToggleRightSideBarLabelShow||'◄';
var labelHide=co.txtToggleRightSideBarLabelHide||'►';
'$1'!='$'+'1'?'$1':(co.chkShowRightSidebar?labelHide:labelShow);
}} {{
var tip=(config.options.chkShowRightSidebar?'hide':'show')+' right sidebar';
'$2'!='$'+'2'?'$2':tip;
}}>>
config.options.chkShowRightSidebar=false;
config.options.txtToggleRightSideBarLabelShow="◄";
config.options.txtToggleRightSideBarLabelHide="►";
/***
|Name:|ToggleTagPlugin|
|Description:|Makes a checkbox which toggles a tag in a tiddler|
|Version:|3.1.0a|
|Date:|27-Jun-2011|
|Source:|http://mptw.tiddlyspot.com/#ToggleTagPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!!Usage
{{{<<toggleTag }}}//{{{TagName TiddlerName LabelText}}}//{{{>>}}}
* TagName - the tag to be toggled, default value "checked"
* TiddlerName - the tiddler to toggle the tag in, default value the current tiddler
* LabelText - the text (gets wikified) to put next to the check box, default value is '{{{[[TagName]]}}}' or '{{{[[TagName]] [[TiddlerName]]}}}'
(If a parameter is '.' then the default will be used)
* TouchMod flag - if non empty then touch the tiddlers mod date. Note, can set config.toggleTagAlwaysTouchModDate to always touch mod date
!!Examples
|Code|Description|Example|h
|{{{<<toggleTag>>}}}|Toggles the default tag (checked) in this tiddler|<<toggleTag>>|
|{{{<<toggleTag TagName>>}}}|Toggles the TagName tag in this tiddler|<<toggleTag TagName>>|
|{{{<<toggleTag TagName TiddlerName>>}}}|Toggles the TagName tag in the TiddlerName tiddler|<<toggleTag TagName TiddlerName>>|
|{{{<<toggleTag TagName TiddlerName 'click me'>>}}}|Same but with custom label|<<toggleTag TagName TiddlerName 'click me'>>|
|{{{<<toggleTag . . 'click me'>>}}}|dot means use default value|<<toggleTag . . 'click me'>>|
!!Notes
* If TiddlerName doesn't exist it will be silently created
* Set label to '-' to specify no label
* See also http://mgtd-alpha.tiddlyspot.com/#ToggleTag2
!!Known issues
* Doesn't smoothly handle the case where you toggle a tag in a tiddler that is current open for editing
* Should convert to use named params
***/
//{{{
if (config.toggleTagAlwaysTouchModDate == undefined) config.toggleTagAlwaysTouchModDate = false;
merge(config.macros,{
toggleTag: {
createIfRequired: true,
shortLabel: "[[%0]]",
longLabel: "[[%0]] [[%1]]",
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var tiddlerTitle = tiddler ? tiddler.title : '';
var tag = (params[0] && params[0] != '.') ? params[0] : "checked";
var title = (params[1] && params[1] != '.') ? params[1] : tiddlerTitle;
var defaultLabel = (title == tiddlerTitle ? this.shortLabel : this.longLabel);
var label = (params[2] && params[2] != '.') ? params[2] : defaultLabel;
var touchMod = (params[3] && params[3] != '.') ? params[3] : "";
label = (label == '-' ? '' : label); // dash means no label
var theTiddler = (title == tiddlerTitle ? tiddler : store.getTiddler(title));
var cb = createTiddlyCheckbox(place, label.format([tag,title]), theTiddler && theTiddler.isTagged(tag), function(e) {
if (!store.tiddlerExists(title)) {
if (config.macros.toggleTag.createIfRequired) {
var content = store.getTiddlerText(title); // just in case it's a shadow
store.saveTiddler(title,title,content?content:"",config.options.txtUserName,new Date(),null);
}
else
return false;
}
if ((touchMod != "" || config.toggleTagAlwaysTouchModDate) && theTiddler)
theTiddler.modified = new Date();
store.setTiddlerTag(title,this.checked,tag);
return true;
});
}
}
});
//}}}
/***
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 = 'sc2coop';
// 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?// @@ 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// @@ 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// @@ 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!// @@ 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 :)// @@ We hope you like using your tiddlyspot.com site. Please email [[feedback@tiddlyspot.com|mailto:feedback@tiddlyspot.com]] with any comments or suggestions."
].join("\n")
});
//}}}
| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |
| 27/07/2020 19:32:09 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 28/07/2020 17:07:11 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 28/07/2020 17:50:44 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 29/07/2020 17:53:20 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 29/07/2020 18:19:37 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 29/07/2020 18:28:34 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 29/07/2020 18:41:49 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 29/07/2020 18:50:17 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 29/07/2020 19:03:10 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 29/07/2020 19:07:37 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 29/07/2020 19:08:21 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/]] | [[store.php|http://sc2coop.tiddlyspot.com/store.php]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | | failed |
| 29/07/2020 19:08:52 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/]] | [[store.php|http://sc2coop.tiddlyspot.com/store.php]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | | failed |
| 29/07/2020 19:09:20 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/]] | [[store.php|http://sc2coop.tiddlyspot.com/store.php]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | | failed |
| 29/07/2020 19:09:46 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 29/07/2020 19:14:24 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 30/07/2020 18:21:31 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 30/07/2020 18:59:37 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 31/07/2020 16:37:55 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 31/07/2020 16:42:27 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 31/07/2020 17:43:09 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 31/07/2020 17:53:04 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 31/07/2020 18:04:15 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . |
| 31/07/2020 18:05:33 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 31/07/2020 18:24:27 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . |
| 31/07/2020 18:50:22 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/#SectionLinksPlugin]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 31/07/2020 19:01:21 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/#SectionLinksPlugin]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 31/07/2020 19:10:18 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/#SectionLinksPlugin]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 31/07/2020 19:27:11 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/#SectionLinksPlugin]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . |
| 01/08/2020 10:08:35 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 01/08/2020 10:58:58 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 01/08/2020 11:49:35 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 01/08/2020 12:23:25 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 03/08/2020 17:11:25 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 03/08/2020 17:12:48 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 03/08/2020 17:17:56 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 03/08/2020 17:19:32 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 03/08/2020 18:17:59 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 04/08/2020 18:54:50 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 04/08/2020 19:29:32 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 05/08/2020 23:49:12 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . |
| 07/08/2020 16:38:36 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . |
| 08/08/2020 11:54:18 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 08/08/2020 19:39:52 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 10/08/2020 19:15:09 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 10/08/2020 19:21:23 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 12/08/2020 21:07:15 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . |
| 25/08/2020 15:20:38 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . |
| 12/09/2020 10:04:07 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/#CommanderPrestige]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . |
| 17/10/2020 10:39:22 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/#CommanderPrestige]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 17/10/2020 10:41:53 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/#CommanderPrestige]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 17/10/2020 10:42:38 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/#CommanderPrestige]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 17/10/2020 10:52:11 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/#CommanderPrestige]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 17/10/2020 13:22:40 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/#CoopXpTable]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 17/10/2020 13:27:41 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/#CoopXpTable]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 17/10/2020 17:19:16 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/#CoopXpTable]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 17/10/2020 17:41:48 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/#LoneWolfDamageBreakpoints]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 17/10/2020 17:48:11 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/#LoneWolfDamageBreakpoints]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.tiddlyspot.com/index.html]] | . | ok |
| 17/10/2020 18:00:09 | sc2coop | [[/|http://sc2coop.tiddlyspot.com/#LoneWolfDamageBreakpoints]] | [[store.cgi|http://sc2coop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sc2coop.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");
//}}}
/%
!info
|Name|VisitCounter|
|Source|http://www.TiddlyTools.com/#VisitCounter|
|Version|3.0.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|Type|transclusion|
|Description|use cookies to track/show private, personal visit counter and timestamp of last visit|
Usage
<<<
Display a personal, ''//private// counter and timestamps'' for your first visit, your most recent visit, and the total number of times you have visited a document. This data are stored in local cookies that can only be displayed in //your// browser, and are ''never relayed or reported to anyone other than yourself, nor stored or aggregated on-line in any way, __ever__.''
{{{
<<tiddler VisitCounter with: counterID firsttimegreeting>>
}}}
*''counterID'' (optional)<br>specifies a suffix to add to the visit tracking cookies for this document (enables tracking of multiple documents on a single domain, such as file://).
*''firsttimegreeting'' (optional)<br>message to display upon first visit to the document. Subsequent visits report last visit timestamp and total visit count.
The following cookies are used to track your visit information:
*txtFirstVisit+id
*txtLastVisit+id
*txtVisitCount+id
The script also defines global javascript run-time variables that may be referenced later in the current session by other scripts and plugins:
*config.firstVisit
*config.lastVisit
*config.visitCount
<<<
Example
<<<
{{{<<tiddler VisitCounter with: TiddlyTools>>}}}
<<tiddler VisitCounter##show with: TiddlyTools>>
<<<
Revisions
<<<
2009.09.30 [3.0.0] converted to pure TW transclusion (no dependencies)
2008.07.01 [2.1.0] simplified to inline script
2007.07.26 [2.0.0] re-written as plugin
2007.05.02 [1.0.0] initial release (as inline script, VisitCounter)
<<<
!end
!outputFormat
This is your <html><nowiki><a href="javascript:;"
title="Reset personal visit counter"
onclick="if (!confirm('Are you sure you want to reset your personal visit counter?')) return false;
config.visitCount=1; config.firstVisit=config.lastVisit=new Date();
config.macros.option.propagateOption('txtVisitCount%0','value',config.visitCount,'input');
config.macros.option.propagateOption('txtFirstVisit%0','value',config.firstVisit,'input');
config.macros.option.propagateOption('txtLastVisit%0', 'value',config.lastVisit, 'input');
story.refreshTiddler((story.findContainingTiddler(this)||this).getAttribute('tiddler'),null,true);
"><b>%1 visit</b></a></html> since %2. Your last visit was on %3.
!end
!out
$1
!end
!show
<<tiddler VisitCounter##out with: {{
var out='';
var id='$1'!='$'+'1'?'_$1':'';
var greeting='$2'!='$'+'2'?'$2':'';
// create the 'first visit' timestamp (if needed)
if (config.firstVisit==undefined) { // only once per session
var opt="txtFirstVisit"+id;
config.firstVisit=config.options[opt]||new Date();
config.macros.option.propagateOption(opt,'value',new Date(),'input');
}
// update 'last visit' and 'visit count'
if (config.lastVisit==undefined) { // only once per session
var opt="txtLastVisit"+id;
config.lastVisit=config.options[opt]||'';
config.macros.option.propagateOption(opt,'value',new Date(),'input');
var opt="txtVisitCount"+id;
config.visitCount=parseInt(config.options[opt]||0)+1;
config.macros.option.propagateOption(opt,'value',config.visitCount,'input');
}
// get and format # of visits
var count=config.options["txtVisitCount"+id]||1;
var wordmap=['---','first','second','third','fourth','fifth','sixth','seventh','eighth','ninth'];
var suffixmap=['th','st','nd','rd','th','th','th','th','th','th'];
var digits=count.toString().substr(count.toString().length-2,2);
if (count<10) count=wordmap[count];
else if (digits>=10&&digits<=13) count=count+'th';
else count=count+suffixmap[digits.substr(1,1)];
var out=greeting; // initial greeting for first visit only
if (config.lastVisit.length) {
var first=new Date(config.firstVisit).formatString("MMM DDth YYYY");
var last=new Date(config.lastVisit).formatString("MMM DDth YYYY at 0hh12:0mm:0ss am");
out=store.getTiddlerText("VisitCounter##outputFormat").format([id,count,first,last]);
}
out;
}}>>
!end
%/<<tiddler {{var src='VisitCounter'; src+(tiddler&&tiddler.title==src?'##info':'##show');}}
with: [[$1]] "$2">>