Welcome to TiddlyWiki created by Jeremy Ruston; Copyright © 2004-2007 Jeremy Ruston, Copyright © 2007-2011 UnaMesa Association
<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
<!--}}}-->
Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
/*{{{*/
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
a {color:[[ColorPalette::PrimaryMid]];}
a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
a img {border:0;}
h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}
.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}
.header {background:[[ColorPalette::PrimaryMid]];}
.headerShadow {color:[[ColorPalette::Foreground]];}
.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
.headerForeground {color:[[ColorPalette::Background]];}
.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}
.tabSelected{color:[[ColorPalette::PrimaryDark]];
background:[[ColorPalette::TertiaryPale]];
border-left:1px solid [[ColorPalette::TertiaryLight]];
border-top:1px solid [[ColorPalette::TertiaryLight]];
border-right:1px solid [[ColorPalette::TertiaryLight]];
}
.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0;}
#sidebar {}
#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}
.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
border:1px solid [[ColorPalette::PrimaryMid]];}
.wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}
.wizard .notChanged {background:transparent;}
.wizard .changedLocally {background:#80ff80;}
.wizard .changedServer {background:#8080ff;}
.wizard .changedBoth {background:#ff8080;}
.wizard .notFound {background:#ffff80;}
.wizard .putToServer {background:#ff80ff;}
.wizard .gotFromServer {background:#80ffff;}
#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}
.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}
.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}
.tiddler .defaultCommand {font-weight:bold;}
.shadow .title {color:[[ColorPalette::TertiaryDark]];}
.title {color:[[ColorPalette::SecondaryDark]];}
.subtitle {color:[[ColorPalette::TertiaryDark]];}
.toolbar {color:[[ColorPalette::PrimaryMid]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}
.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
.tagging .button, .tagged .button {border:none;}
.footer {color:[[ColorPalette::TertiaryLight]];}
.selected .footer {color:[[ColorPalette::TertiaryMid]];}
.sparkline {background:[[ColorPalette::PrimaryPale]]; border:0;}
.sparktick {background:[[ColorPalette::PrimaryDark]];}
.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
.lowlight {background:[[ColorPalette::TertiaryLight]];}
.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}
.imageLink, #displayArea .imageLink {background:transparent;}
.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}
.viewer .listTitle {list-style-type:none; margin-left:-2em;}
.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}
.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}
.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
.viewer code {color:[[ColorPalette::SecondaryDark]];}
.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}
.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}
.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
.editorFooter {color:[[ColorPalette::TertiaryMid]];}
.readOnly {background:[[ColorPalette::TertiaryPale]];}
#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:'alpha(opacity=60)';}
/*}}}*/
/*{{{*/
* html .tiddler {height:1%;}
body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}
h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}
hr {height:1px;}
a {text-decoration:none;}
dt {font-weight:bold;}
ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}
.txtOptionInput {width:11em;}
#contentWrapper .chkOptionInput {border:0;}
.externalLink {text-decoration:underline;}
.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}
.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}
/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}
#mainMenu .tiddlyLinkExisting,
#mainMenu .tiddlyLinkNonExisting,
#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}
.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0 1em 1em; left:0px; top:0px;}
.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}
#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}
#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 0.3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}
.wizard {padding:0.1em 1em 0 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0 0; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0;}
.wizardFooter .status {padding:0 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em;}
#messageArea {position:fixed; top:2em; right:0; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em;}
#messageArea a {text-decoration:underline;}
.tiddlerPopupButton {padding:0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em; margin:0;}
.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}
.tabset {padding:1em 0 0 0.5em;}
.tab {margin:0 0 0 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}
#contentWrapper {display:block;}
#splashScreen {display:none;}
#displayArea {margin:1em 17em 0 14em;}
.toolbar {text-align:right; font-size:.9em;}
.tiddler {padding:1em 1em 0;}
.missing .viewer,.missing .title {font-style:italic;}
.title {font-size:1.6em; font-weight:bold;}
.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}
.tiddler .button {padding:0.2em 0.4em;}
.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}
.footer {font-size:.9em;}
.footer li {display:inline;}
.annotation {padding:0.5em; margin:0.5em;}
* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0 0.25em; padding:0 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}
.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0px 3px 0px 3px;}
.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}
.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0; font-size:.9em;}
.editorFooter .button {padding-top:0px; padding-bottom:0px;}
.fieldsetFix {border:0; padding:0; margin:1px 0px;}
.sparkline {line-height:1em;}
.sparktick {outline:0;}
.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}
* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0; right:0;}
#backstageButton a {padding:0.1em 0.4em; margin:0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; width:90%; margin-left:3em; padding:1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}
.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
/***
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes.
***/
/*{{{*/
body {font-size:0.8em;}
#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}
.subtitle {font-size:0.8em;}
.viewer table.listView {font-size:0.95em;}
/*}}}*/
/*{{{*/
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none !important;}
#displayArea {margin: 1em 1em 0em;}
noscript {display:none;} /* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
}
/*}}}*/
<!--{{{-->
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<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>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser excludeLists'></span></div>
<!--}}}-->
To get started with this blank [[TiddlyWiki]], you'll need to modify the following tiddlers:
* [[SiteTitle]] & [[SiteSubtitle]]: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* [[MainMenu]]: The menu (usually on the left)
* [[DefaultTiddlers]]: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>
These [[InterfaceOptions]] for customising [[TiddlyWiki]] are saved in your browser
Your username for signing your edits. Write it as a [[WikiWord]] (eg [[JoeBloggs]])
<<option txtUserName>>
<<option chkSaveBackups>> [[SaveBackups]]
<<option chkAutoSave>> [[AutoSave]]
<<option chkRegExpSearch>> [[RegExpSearch]]
<<option chkCaseSensitiveSearch>> [[CaseSensitiveSearch]]
<<option chkAnimate>> [[EnableAnimations]]
----
Also see [[AdvancedOptions]]
To avoid sealing edit ''%appdata%\Softpark\Yaric\Yaric.config'' and set ''~DontSealInstancePleasePlease'' to ''true'':
{{{
<DontSealInstancePleasePlease>true</DontSealInstancePleasePlease>
}}}
If you don't understand what you should do, you probably shouldn't change this option.
<html>
<div id="LanguageMenu" style="background:black;color:yellow;border:2px solid white;display:none">
<img class="lightBoxClose" src="images/close.gif" onclick="DC3.LightBox.hideBox()" alt="X" title="Close">
<img src="images/LanguageMenu.png">
</div>
<div id="UpgradeMenu" style="background:black;color:yellow;border:2px solid white;display:none">
<img class="lightBoxClose" src="images/close.gif" onclick="DC3.LightBox.hideBox()" alt="X" title="Close"/>
<img src="images/UpgradeMenu.png"/>
</div>
<div id="ItemCost" style="background:black;color:yellow;border:2px solid white;display:none">
<img class="lightBoxClose" src="images/close.gif" onclick="DC3.LightBox.hideBox()" alt="X" title="Close"/>
<img src="images/ItemCost.png"/>
</div>
<div id="ChangeInstance" style="background:black;color:yellow;border:2px solid white;display:none">
<img class="lightBoxClose" src="images/close.gif" onclick="DC3.LightBox.hideBox()" alt="X" title="Close"/>
<img src="images/ChangeInstance.png"/>
</div>
<div id="FilterMenu" style="background:black;color:yellow;border:2px solid white;display:none">
<img class="lightBoxClose" src="images/close.gif" onclick="DC3.LightBox.hideBox()" alt="X" title="Close"/>
<img src="images/FilterMenu.png"/>
</div>
<div id="GameMode" style="background:black;color:yellow;border:2px solid white;display:none">
<img class="lightBoxClose" src="images/close.gif" onclick="DC3.LightBox.hideBox()" alt="X" title="Close"/>
<img src="images/GameMode.png"/>
</div>
</html>
!Currently working on (in no particular order)
* ''CORE'': skin replacer (mod installer in general)
* ''CORE'': integrated support for old patcher - merging 2.0.0.0 and 3.0.0.0 code streams (it seem ACE, ~RULoL and Garena are stuck with old patcher)
* ''CORE'': alternate XML serialization (rare bug in Microsoft's implementation)
![[3.4.2.0|Download]]
* ''THANKS'': Todd Moon: for generous donation
* ''THANKS'': Mathias Givskov: Danish transaltion
* ''BUGFIX'': small startup bug (only on US servers)
!3.4.1.0
* ''THANKS'': John ~McJunkins, Joshua Raila, Michael Van Bever: for generous donation
* ''THANKS'': Brutus: italian transaltion
* ''IMPROVEMENT'': <html><a href="javascript:;" onclick="DC3.LightBox.showBox('GameMode')">Dominion support</a></html>
* ''IMPROVEMENT'': Uses new Riot's API
!3.3.0.0
* ''THANKS'': Emma Stott, Conor ~Wolfe-Milne: for generous donation
* ''BUGFIX'': (you know, it wasn't Yaric's bug, Riot just changed something... again) Fix for ~LoL 1.0.0.124
* ''CORE'': changed how sealing works, a little bit at least; should be more foolproof now (note: there's a way to avoid sealing; read [[FAQ]] for details)
!3.2.2.0
* ''THANKS'': Chad Carlton: for generous donation
* ''BUGFIX'': upgrade/downgrade menu is back
* ''BUGFIX'': reverted back to ~ObjectListView 2.4.1 (2.5.0 was adding annoying blank line after group)
* ''WORKAROUND'': added a way to avoid sealing; read [[FAQ]] for details
* ''CORE'': internal redesign
* ''THANKS'': Kevin Torres: for Spanish UI translation
* ''NOTE'': (around patch 1.0.0.122) Riot has changed ~IDs of some champions, so you may experience that some builds has been lost. Nothing to fix in Yaric though. See: [[this post|http://na.leagueoflegends.com/board/showthread.php?p=12073142#post12073142]]
!3.2.1.0
* ''THANKS'': Tobias Jeske, Rhys Johnes: for generous donation
* ''BUGFIX'': Fixed "Cannot find any locale" bug
* ''CORE'': Increased protection (locking instance while working). It has one annoying effect, you can't run PatchGuard while Yaric is opened (you have to close Yaric first), but belive me - it's safer.
* ''CORE'': Increased protection (sealing instance when modified). You cannot run launcher "by mistake" anymore, always use PatchGuard
* ''UI'': item categories menu stays open when clicked (click "somewhere else" or move mouse away to close it)
* ''UI'': drag&drop item boxes to swap items in build
* ''CORE'': internal redesign
* ''THANKS'': Antoine Emery: for French UI translation
* ''THANKS'': Jacek: for (better) Polish UI translation
!3.2.0.0
* ''THANKS'': Colin Du Pee: for generous donation.
* ''THANKS'': Christoph Stenglein: for German UI translation
* ''NEW'': Because it is no longer one-executable application, I've added an installer. Some will find it annoying, some useful (I'm finding it annoying myself, but I know many people just like installers)
* ''NEW'': <html><a href="javascript:;" onclick="DC3.LightBox.showBox('ChangeInstance')">Support for multiple LoL instances</a></html>. You can switch between them if you like.
* ''NEW'': <html><a href="javascript:;" onclick="DC3.LightBox.showBox('LanguageMenu')">Support for multiple languages for UI</a></html>. You can easilty add new ones by creating [[LangPack]] files, if you would like to share your translation, let me know, I'll include it in next release and/or link of this website. ''NOTE'': Please do not confuse UI language with champion/item database, these are in the language which you have your game in - see [[LangPack]]
* ''NEW'': <html><a href="javascript:;" onclick="DC3.LightBox.showBox('ItemCost')">Shows item prices and total cost</a></html>.
* ''NEW'': <html><a href="javascript:;" onclick="DC3.LightBox.showBox('UpgradeMenu')">Added menu to easily upgrade/downgrade item</a></html>.
* ''NEW'': <html><a href="javascript:;" onclick="DC3.LightBox.showBox('FilterMenu')">Quick filtering items by catergories</a></html>. Please note, that it is a little bit experimental for a while. Anyone, having non-english client and some knowledge about Regex can help. Contact me if you want to help. Please read [[LangPack]] topic for technical details.
* ''KNOWN BUG'': Right clicking on item box to get upgrade menu never works first time (just right click again)
!3.1.0.0
* ''WORKAROUND'': (this wasn't actually a bug in Yaric, it was more like evil wink for Riot) Fixed issue with Heimerdinger (and maybe more champs) when after replacing items other thing got changed too (attack speed in this instance)
* ''IMPROVEMENT'': filtering handles double quotes for longer phrases. If you're looking for attack speed items type "attack speed" (in double quotes) in filter box
* ''NEW'': Donate button in About box. If anyone cares to fund by beverages.
!3.0.3.0
* ''BUGFIX'': Fixed minor issue with manifest creation (if you haven't noticed the problem you won't notice the fix, although it's important to get this update)
!3.0.2.0
* ''BUGFIX'': Fixed problem with new champions (reported for Vayne - but would crash the same way for any other new champion)
!3.0.1.0
* ''BUGFIX'': no longer looses champions in build window when upgrading from 2.3.0.0
* ''BUGFIX'': (not a real bugfix) I made license window smaller for those with tiny... screens
* ''BUGFIX'': description on 'Select ~LoL Folder' dialog has been made more clear
!3.0.0.0
* ''EXPERIMENTAL'': handles beta patcher (only! it you still use old patcher you can use Yaric 2.3.0.0)
* ''THANKS'' Nafei for new sections in .inibin
* ''THANKS'' ~GorbyRU for .raf / .raf.dat file description
![[2.3.0.0|Download]]
* ''BUGFIX'': fixed US issue with PatchGuard (not detecting patches, or detecting them all the time)
* ''BUGFIX'': fixed a startup crash when if you closed Yaric minimized
!2.2.2.0
* ''BUGFIX'': fix to PatchGuard, should get 'remote version information' much quicker (technicly: tries 'no proxy', 'with proxy' and 'with proxy and authentication' at the same time instead one after another)
!2.2.0.0
* ''NEW'': added undo feature
* ''NEW'': added PatchGuard application
* ''REWORK'': some internal structure has changed
!2.1.0.0
* ''BUGFIX'': several bugfixes (quite important)
!2.0.0.0
* ''REWORK'': revised saving system: you no longer need .xyib files (you can import them to 2.0 though, after that you can delete them); all builds you ever saved/applied are shown in build list (on the right hand side)
* ''WARNING'': Note that 2.0.0.0 is not compatible with 1.3.0.0 you can import old .xyib files, but you need to start with original ~HeroPak, first thing you do is Restore/Backup.
* ''WARNING'': ''It's a beta'': Note that 2.0.0.0 is a beta version, do not trust it. If you want (more or less) stable release use older one
* ''NOTE'': All feedback is highly appreciated; no feedback - no motivation to change/improve anything
!1.3.0.0
* ''BUGFIX'': you no longer see unavailable items
* ''WORKAROUND'': fix for rare dodgy exception at the start
* some minor code cleaning
!1.2.0.0
* ''FIX'': Fixed crashes which appeared after ~LoL patch 1.0.0.101
* ''NOTE'': special thanks to guys participating in: http://www.leagueoflegends.com/board/showthread.php?t=258251
!1.1.0.0
* ''NEW'': Added "Batch Apply..." command to apply multiple builds at once (useful after patch)
* ''REWORK'': Removed "Save" (only "Save As..." is now available). It was introducing some confusion and caused unintentional overwrites. Now you are asked for a file name every time you want to save a build.
* ''NEW'': Added tooltips to items in build editor
!1.0.0.0
* initial release
If you think you found a bug make sure you read [[FAQ]] and have all the required information. Additionally, check [[Forum]] and [[FAQ]] - in 9 out of 10 cases, you problem is not unique and has been already reported and probably solution has been found.
If you can't find solution or it is not about bug send me an email to: ''~Yaric4Lol at gmail dot com'' (I assume you know what to do with ''at'' and ''dot'').
/***
|''Name:''|~DC3.LightBox|
|''Description:''|LightBox support library|
|''Date:''|Dec 25, 2006|
|''Source:''|http://solo.dc3.com/tw/#LightBoxPlugin|
|''Author:''|Bob Denny ~DC-3 Dreams, SP|
|''License:''|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|''Version:''|1.0.1|
|''~CoreVersion:''|2.1.x|
|''Browser:''|Firefox 1.5/2.0; Internet Explorer 6.0/7.0; Safari|
|''Require:''|LightBoxCSS (see below), support HTML in MarkupPreHead (see below), access to icon images in subdir ''im'' (showAlert() only)|
!Description
This plugin implements a lightbox widget for ~TiddlyWiki. Via Javascript, you can display any HTML div in the lightbox, or use "canned" divs for displaying HTML message in a box or an alert with icon. The lightbox is closed by either clicking the X-icon or anywhere outside the lightbox. Only one lightbox can be active at a time. See the usage section below.
!!Usage
This plugin is a __library__, not a macro. Thus, it must be tagged {{{systemConfig}}}, but it does not support macro invocation. It is callable only from Javascript so the [[InlineJavascriptPlugin|http://www.tiddlytools.com/#InlineJavascriptPlugin]] is a virtual necessity!
|!Usage|!Sample Javascript|
|Display HTML message|{{{DC3.LightBox.showContent("Some <i>message</i>");}}}|
|Display alert|{{{DC3.LightBox.showAlert("ok", "All is well");}}}|
|Display any DIV in a lightbox|{{{DC3.LightBox.showBox("myLightBox");}}}|
|Close current lightbox|{{{DC3.LightBox.hideBox()}}}|
*The frame for the showContent() and showAlert() methods should expand to enclose text, but this happens only on IE and not FireFox. To be safe, just keep your messages short and use showBox() and your own HTML div for "big" messages etc.
*The first parameter to showAlert() is the icon name. This is simply translated to {{{images/icon.png}}}. The standard icon image files (below) are used with icon strings of "error, "info", "ok", "question", and "warning".
*The generalized showBox() method can be used to display images, media players, whatever you want! Just make up the HTML div, give it an id, then pass that ID to showBox().
!!Advanced Usage - onClose
All three of the above methods support an optional parameter onClose, supplied as the last parameter in a call. It must evaluate to a function which is called (with no parameters) when the lightbox is about to close. If the onClose() function returns false, the lightbox will not be closed. For example
{{{
DC3.LightBox.showAlert("warning", "Something <em>bad</em> is about to happen", soundBuzzer);
}}}
!Installation
#Paste this entire tiddler into a tiddler called DC3.LightBox and tag it {{{systemConfig}}}.
#Paste the Required CSS (below) into a tiddler called LightBoxCSS and tag it {{{systemContent}}}.
#Paste the content for MarkupPreHead (below) into MarkupPreHead.
#Put the image files (below) into a subfolder ''im'' relative to the location of the TiddlyWiki.
!!!Required CSS
Paste into a tiddler called LightBoxCSS.
{{{
#lightBoxOverlay {
position:absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 90;
background-color: #000;
-moz-opacity: 0.6;
opacity: .60;
filter: alpha(opacity=60);
}
#lightBoxOverlay[id]{
position: fixed;
}
div.lightBox {
background: #2d2d2d;
color: #fff;
border: 2px solid #eee;
}
img.lightBoxClose {
position: absolute;
top: -5px;
right: -5px;
margin: 0px;
cursor: pointer;
}
div.lightBoxAlert {
width: 300px;
height: 64px;
background: #2d2d2d;
color: #fff;
padding: 10px;
border: 2px solid #eee;
}
div.lightBoxAlertIcon {
position: absolute;
top: 8px;
left: 8px;
width: 48px;
height: 48px;
}
div.lightBoxAlertMessage {
margin-left: 56px;
margin-top: 16px;
}
}}}
!!!Content for MarkupPreHead
{{{
<!-- LightBox translucent overlay -->
<div id="lightBoxOverlay" onclick="DC3.LightBox.hideBox()" style="display:none"></div>
<!-- General use simple LightBox -->
<div class="lightBox" id="lightBox" style="display:none">
<img class="lightBoxClose" src="images/close.gif" onclick="DC3.LightBox.hideBox()" alt="Close" title="Close this window" />
<div id="lightBoxContent"></div>
</div>
<!-- General use Alert LightBox -->
<div class="lightBoxAlert" id="lightBoxAlert" style="display:none">
<img class="lightBoxClose" src="images/close.gif" onclick="DC3.LightBox.hideBox()" alt="Close" title="Close this window" />
<div class="lightBoxAlertIcon"><img id="lightBoxAlertIcon" src="runtime" alt="runtime" title="runtime"></div>
<div class="lightBoxAlertMessage" id="lightBoxAlertMessage">runtime</div>
</div>
<!-- End of LightBox -->
}}}
!!!Images (close box and alert icons)
These must be in a subfolder ''im'' below the ~TiddlyWiki. You can get the images by right clicking on the links and //save target/link//, or right clicking on the images and //save image//. @@Note: The images below will display ugly in IE6, but they will display nice (with transparency) in the lightbox alerts, owing to the use of the DXFilters for transparency in the code.@@
|[[close.gif|images/close.gif]]|[img[images/close.gif]]|[[error.png|images/error.png]]|[img[images/error.png]]|
|[[info.png|images/info.png]]|[img[images/info.png]]|[[ok.png|images/ok.png]]|[img[images/ok.png]]|
|[[question.png|images/question.png]]|[img[images/question.png]]|[[warning.png|images/warning.png]]|[img[images/warning.png]]|
!!Credits
This TiddlyWiki library and CSS is an amalgamation of the techniques and code described in the following:
* [[Original LightBox|http://www.huddletogether.com/projects/lightbox/]] by Lokesh Dhakar
* [[Lightweight LightBox|http://www.pjhyett.com/posts/190-the-lightbox-effect-without-lightbox]] that can show any DIV by PJ Hyett
* [[Better Modal Windows with LightBox|http://blog.feedmarker.com/2006/02/12/how-to-make-better-modal-windows-with-lightbox/]] by Bruno
Bruno's CSS for the overlay is much better than the first two, it is independent of any PNG image(s) and does not have CSS quirk-hacks for IE, nor does it use IE's DXFilters for PNG transparency. Of course for IE6, the DXFilters are used in the Javascript!
!!Revision History
<<<
''2006.12.02 [1.0.1]'' Initial creation
''2006.12.03 [1.0.1]'' hideBox() no longer takes //id// just closes currently open box. Needed for overlay click/close.
''2006.12.03 [1.0.1]'' Add support for special Alert type LightBox with switchable icon. Hack IE for alpha transparency. See inline comments. Add showContent(html), showAlert(icon, message)
''2006.12.04 [1.0.1]'' Ignore show calls if box is already displayed. Optional callback for hideBox(), can prevent hiding. Allows modal box to be set up by caller.
''2006.12.25 [1.0.1]'' Documentation and installation instructions
<<<
!!Code
***/
//{{{
// Initialize style sheet from tiddler
refreshStyles("LightBoxCSS");
if (!window.DC3) window.DC3 = {};
window.DC3.LightBox =
{
//
//Internal proterties
//
_curBox: null, // [sentinel]
_onClose: null, // [sentinel]
_alertImgDiv: null, // [sentinel]
_alertImgHTML: null, // [sentinel]
//
// Public interface
//
showContent: function(content, onClose) { // Uses generic LightBox in MarkupPreBody
if(this._curBox) return; // Ignore if box already showing (typ.)
document.getElementById("lightBoxContent").innerHTML = content;
this.showBox("lightBox", onClose);
},
showAlert: function(icon, message, onClose) { // Uses standard alert LightBox in MarkupPreBody
if(this._curBox) return;
var icoElem = document.getElementById("lightBoxAlertIcon");
icoElem.src = "images/" + icon + ".png"; // Requires icon.png (48 x 48)
icoElem.title = icon;
icoElem.alt = icon;
document.getElementById("lightBoxAlertMessage").innerHTML = message;
DC3.LightBox.showBox("lightBoxAlert", onClose);
},
showBox: function(id, onClose)
{
if(this._curBox) return;
this._onClose = onClose; // If valid, call this in hideBox. See comments there!
//
// Surprise! In IE, the height:100% in the #overlay CSS definition does
// not honor the z-order, and calculates the height to be the top margin!
// So, for IE, I have added this imperfect hack which ,forces the overlay
// size to the scroll size. This causes funny scrollbar behavior, but the
// alternatives I tried were really complex.
//
// Surprise #2! IE6 doesn't support alpha transparency in PNG images, and
// I use same for the icons in the LightBox Alert. Another hack needed.
// We can't just change the DIV from containing an IMG tag to using the
// bloody MS AlphaImageLoader, we also have to save the original IMG tag
// because the alert is multi-use: the image to be shown can be changed
// dynamically. When closing the Lightbox, we restore the original inner
// IMG tag and clear the filter style. On showing the box, we grab the path
// to the image file then zap the IMG tag, using the image file path in
// the filter/AlphaImageLoader. Egad!!!
//
var ovly = document.getElementById('lightBoxOverlay');
if(config.browser.isIE) {
var h1 = document.documentElement.scrollHeight;
var h2 = document.documentElement.offsetHeight;
ovly.style.height = Math.max(h1, h2);
ovly.style.width = document.documentElement.scrollWidth;
// Change icon div for IE proprietary
var alertDivs = document.getElementById(id).getElementsByTagName("div");
this._alertImgDiv = null;
for(var i in alertDivs) {
if(alertDivs[i].className && alertDivs[i].className == "lightBoxAlertIcon") {
this._alertImgDiv = alertDivs[i];
break;
}
}
if(this._alertImgDiv) {
var imgFile = this._alertImgDiv.firstChild.src;
this._alertImgHTML = this._alertImgDiv.innerHTML; // Saved to allow dynamic change of image file
this._alertImgDiv.innerHTML = "";
this._alertImgDiv.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\"" + imgFile + "\", sizingMethod=\"scale\")";
}
}
ovly.style.display = 'block';
this._center(id);
this._curBox = id;
return false;
},
hideBox: function()
{
if(!this._curBox) return;
if(this._onClose && this._onClose() === false) // If onClose() returns false, refuse to close
return false;
document.getElementById(this._curBox).style.display = 'none';
document.getElementById('lightBoxOverlay').style.display = 'none';
this._curBox = null; // Allow show calls once again
// Restore original non-IE image. Code may dynamically change image file!
if(this._alertImgDiv) {
this._alertImgDiv.innerHTML = this._alertImgHTML;
this._alertImgDiv.style.filter = "";
}
return false;
},
//
// Internal methods
//
_getDimensions: function(elem) // Lifted from Prototype and made independent
{
if(elem.style.display != 'none')
return { width: elem.offsetWidth, height: elem.offsetHeight};
// All *Width and *Height properties give 0 on elements with display none,
// so enable the elem temporarily
var els = elem.style;
var origVis = els.visibility;
var origPos = els.position;
els.visibility = 'hidden';
els.position = 'absolute';
els.display = '';
var origW = elem.clientWidth;
var origH = elem.clientHeight;
els.display = 'none';
els.position = origPos;
els.visibility = origVis;
return {width: origW, height: origH};
},
//
// This is rather big. I'll have to look at more elegant way(s)
// of doing this... some day! :-)
//
_center: function(elem)
{
try{
elem = document.getElementById(elem);
}catch(e){
return;
}
var my_width = 0;
var my_height = 0;
if ( typeof( window.innerWidth ) == 'number' ){
my_width = window.innerWidth;
my_height = window.innerHeight;
} else if ( document.documentElement &&
( document.documentElement.clientWidth ||
document.documentElement.clientHeight ) ){
my_width = document.documentElement.clientWidth;
my_height = document.documentElement.clientHeight;
}
else if ( document.body &&
( document.body.clientWidth || document.body.clientHeight ) ){
my_width = document.body.clientWidth;
my_height = document.body.clientHeight;
}
elem.style.position = 'absolute';
elem.style.zIndex = 99;
var scrollY = 0;
if ( document.documentElement && document.documentElement.scrollTop ){
scrollY = document.documentElement.scrollTop;
}else if ( document.body && document.body.scrollTop ){
scrollY = document.body.scrollTop;
}else if ( window.pageYOffset ){
scrollY = window.pageYOffset;
}else if ( window.scrollY ){
scrollY = window.scrollY;
}
var elementDimensions = this._getDimensions(elem);
var setX = ( my_width - elementDimensions.width ) / 2;
var setY = ( my_height - elementDimensions.height ) / 2 + scrollY;
setX = ( setX < 0 ) ? 0 : setX;
setY = ( setY < 0 ) ? 0 : setY;
elem.style.left = setX + "px";
elem.style.top = setY + "px";
elem.style.display = 'block';
}
};
//}}}
Here are some examples of using [[DC3.LightBox]] which you can use to get the idea. Everyone wants to show pictures (well, and maybe videos), so here are some examples of those:
<html>
<div id="myImageBox" style="background:black;color:yellow;border:2px solid white;display:none">
<img class="lightBoxClose" src="images/close.gif" onclick="DC3.LightBox.hideBox()" alt="Close" title="Close this window" />
<div><img src="images/Yaric.png"></div>
</div>
<a href="javascript:;" onclick="DC3.LightBox.showBox('myImageBox')">Gemini-9 Lifts Off</a></html>
Yaric is free-to-use software, you don't have to pay anything to use it. Although, please consider donating some money equal, at least, to price of a beer in your country. You would like to buy me a beer, wouldn't you? Don't you think it might be money better spent than this champion you bought recently, which turned out to be crap? I played maybe 3 games in total last month because I'm short of time, so maybe donations might keep me motivated to maintain this application for you.
<html><table style="background-color: black"><tr>
<td align="center" style="border-style: hidden">
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="3QXU3EP6PX7Y8">
<input type="image" src="http://dl.dropbox.com/u/317815/Yaric/images/donate-usd.png" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/en_GB/i/scr/pixel.gif" width="1" height="1">
</form>
</td>
<td align="center" style="border-style: hidden">
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="MG9YW9AH3SKMJ">
<input type="image" src="http://dl.dropbox.com/u/317815/Yaric/images/donate-eur.png" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/en_GB/i/scr/pixel.gif" width="1" height="1">
</form>
</td>
<td align="center" style="border-style: hidden">
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="2DHBT9WJ8838Q">
<input type="image" src="http://dl.dropbox.com/u/317815/Yaric/images/donate-gbp.png" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/en_GB/i/scr/pixel.gif" width="1" height="1">
</form>
</td>
</tr></table></html>
This section is meant to provide you with all important download links.
You might be interested to see [[Changelog]]
!Spread the word
:First of all you could go to [[Forum]], ''[[vote|http://goo.gl/jHYhB]]'' (if you haven't done it before) and ''[[bump|http://goo.gl/b0Qhy]]'' the thread it a little bit.
!Donating
:Yaric is free-to-use software, you don't have to pay anything to use it. Although, please consider donating some money equal, at least, to price of a beer in your country. You would like to buy me a beer, wouldn't you? Don't you think it might be money better spent than this champion you bought recently, which turned out to be crap? I played maybe 3 games in total last month because I'm short of time, so maybe donations might keep me motivated to maintain this application for you.
:<html><table style="background-color: black"><tr>
<td align="center" style="border-style: hidden">
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="3QXU3EP6PX7Y8">
<input type="image" src="http://dl.dropbox.com/u/317815/Yaric/images/donate-usd.png" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/en_GB/i/scr/pixel.gif" width="1" height="1">
</form>
</td>
<td align="center" style="border-style: hidden">
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="MG9YW9AH3SKMJ">
<input type="image" src="http://dl.dropbox.com/u/317815/Yaric/images/donate-eur.png" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/en_GB/i/scr/pixel.gif" width="1" height="1">
</form>
</td>
<td align="center" style="border-style: hidden">
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="2DHBT9WJ8838Q">
<input type="image" src="http://dl.dropbox.com/u/317815/Yaric/images/donate-gbp.png" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/en_GB/i/scr/pixel.gif" width="1" height="1">
</form>
</td>
</tr></table></html>
!Requirements
: Before you run Yaric check if you met all the [[requirements|Requirements]].
!Latest version
: ''[[Yaric 3.4.2.0|http://goo.gl/PFBaz]]'' - Support for Dominion. PatchGuard is not required (but you can still use it, make your life a little bit easier)
If you have any problems see [[FAQ]], [[Forum]] or [[Contact]] me.
!Older version
(this version work with those releases of League of Legends which were using HeroPak_client.zip file. It here only for reference, because i don't think there are still such releases around)
: ''[[Yaric 2.3.0.0|http://goo.gl/b5e90]]'' (This version works with old patcher, although it is highly advised to move to new patcher as soon as possible)
<html>
<div id="RadsFolder" style="background:black;color:yellow;border:2px solid white;display:none">
<img class="lightBoxClose" src="images/close.gif" onclick="DC3.LightBox.hideBox()" alt="X" title="Close"/>
<img src="images/LoL.RADS.folder.png"/>
</div>
</html>
!Q. How to use it?
Please take a look at the [[Tutorial]].
!Q. How to uninstall?
Before unistalling Yaric you need to 'Restore'. If you already uninstalled, please install it back, open it, click 'Restore' button. Now you can uninstall it safely.
!Q. It keeps renaming launcher, what should I do?
If you modified any items Yaric renames original launcher to prevent you from accidentally running it. ''You should not use original launcher at all!'' The fact you are asking proves you tried. ''Always start [[League of Legends]] with [[PatchGuard]]''. If you do understand this, you may disable this feature. To read how to do it click this link ''[[I promise I'll always start League of Legends with PatchGuard|Avoid sealing]]''.
!Q. Can I use other mods with it (like 3rd party skin replacer, for example)?
That's complicated. No you can't and yes you can. You can't because of how PatchGuard works, other tools are not compatible with PatchGuard and it will corrupt RAF files. Although yo can if you take resonsibility for backing up and restoring .RAF/.DAT files. Just back them up before you do ANY modifications (Yaric or other tool) and restore original before patch. I do keep umodified copy of ~LoL folder myself. When things go wrong, I do not have to download whole game anymore. ''You have been warned!''
!Q. How should I report a bug?
This section is covered on [[separate page|HowToReportBug]].
!Q. I'm seeing an exception beeing thrown by Yaric
Yaric produces an error report (exception window with four tabs), press 'Copy to Clipboard' button and send error report to [[me|Contact]]
!Q. I'm seeing an exception before Yaric really started, no 'Copy to Clipobard' button avaiable
Exception has been thrown before Yaric managed to initialze itself. The most probalby cause is you don't have .NET 4.0 Full installed properly or your installation is broken. Reinstall/repair .NET 4.0 Full.
!Q. I've checked log files and error is something about ''~XmlSerilizer'' and '0 bytes loaded from System'.
You are not alone, but I can't help you. This error is not about Yaric it is about your PC, and it happens with many .NET applications. I have bad news for you, it migh be a malware. I going to replace standard xml serialization in Yaric, but it is not my priority. And actually it wont fix your PC, you will still have your malware spying on you.
!Q. Yaric is showing "Cannot find any locale" exception.
This is a bug is fixed in [[3.2.1.0|Changelog]]. If you don't want to use new version, there is an easy workaround for this, see: [[http://www.leagueoflegends.com/board/showthread.php?p=11448108#post11448108]] (thanks to Ryirs for reporting and finding solution).
!Q. Yaric is showing "Index out of range" or "End of stream" exception on startup.
See next question.
!Q. There was a patch and I forgot to use PatchGuard. Now Yaric doesn't start.
PatchGuard is meant to protected against corruption when patch comes. If you don't use it when patch comes files get corrupted. It is that simple. ''Use PatchGuard and everything will be fine''. If your files got corrupted you can try [[repair|http://dl.dropbox.com/u/317815/Yaric/screenshots/Repair.png]] or, if it fails, [[reinstall|https://signup.leagueoflegends.com/en/signup/redownload]].
!Q. It keeps asking me about folder?
Your ~LoL folder should look like <html><a href="javascript:;" onclick="DC3.LightBox.showBox('RadsFolder')">this</a></html>. If it doesn't you have old/not original version of [[League of Legends]] and Yaric (at least version 3+) won't work. Try [[2.3.0.0|Download]] (because those 'hacked' clients often still work using old patching system). But, you are doing it on your own risk (actaully you are using Yaric 3+ on your own risk as well).
!Q. Where Yaric stores its configuration?
Yaric's config file is in {{{%appdata%\Softpark\Yaric}}}
!Q. Everything was fine. But after [[League of Legends]] has been patched it stopped working/crashed
The day has come. Riot changed something. As I said before, they don't call me when they do that. Sometimes I'll need 1 or more days to fix it. Keep in mind, I am entitled to holidays.
!Q. Yaric sucks, where can I post hate-mails?
You have to realize I'm creating an application extending other application (League of Legends) without any support from original authors (Riot)? I have to guess, try, break/fix and guess again. I have one tester: me. Sorry, I can't test every possible combination of .NET, Windows and League of Legends. I can test only one combination: mine. I can't and I won't do test every combination. I have a day job and I want to play sometimes. I'm not paid for it, either.
I did the app for myself and published it only for community benefit.
I'm not selling anything here and you didn't pay for it.
This application gets fixed because users are reporting problems (more detailed = better), not because users are whining.
Yes, some people did report problems, and when they cooperated their problems were resolved. In some cases there was a actual bug, in some cases they just didn't understand how ~HeroPak works and what they are doing.
Describe your problem, and I'll try to help. But I won't be guessing what your problem could be (you can hire me, of course, for $100 an hour).
And I can assure you: It works for me.
!Q. I have ACE (or other non-original) client and...
You have to acknowledge that I don't have ACE client, and Yaric wasn't developed with ACE in mind. Above that, ACE client is a "hack" (in a good sense) as well as Yaric. When two hacks meet the result can be unexpected. Matricus optimized ~HeroPak somehow. From ACE client point of view it can be good, but it can be "suprising" for Yaric, though.
As I do not support ACE client I could try help you, but you have to cooperate...
Yaric's discussion thread is hosted on official [[Riot|League of Legends]] forum. You can find it [[here|http://goo.gl/XrTsq]].
Check [[FAQ]] first. Then check [[Forum]].
If that failed, you haven't found answer you were looking for [[Contact]] me.
To make investigation easier provide as much information as you can, especially:
# What is your Yaric and ~PatchGuard version? (right-click, properties)
# What region?
#* NA / EUW / EUNE?
# What client?
#* Standard / ACE / Garena / ~RU-LoL? (although, you should know I support Standard only at this moment)
# What is your operating system?
#* Win XP/Vista/7?
#* 32/64?
# Attach a zip with configuation and diagnostic files:
#* Go to {{{%appdata%\Softpark\Yaric}}} and attach all the files (as logs are essential, config is usefull in lot of cases, so zip them all)
#* Go to ~LoL folder and attach {{{yaric.manifest}}} as well
# What champions you have problems with? (one more time I'll get a report saying "most" and my head will explode)
# Tell me is it first run, or you were using it already but suddenly it stopped working.
It would be helpfull if you also can:
# Please describe what you were trying to do. Give me the items you applied, their order, champions which you modified, tell me which one fails.
# Screenshot? (show as much as possible, if error dialog is covering main window move it away)
I don't want to guess, and I won't - I have better things to do. I will ignore bug reports just saying "It no worky" or something in this manner.
/***
|Name|InlineJavascriptPlugin|
|Source|http://www.TiddlyTools.com/#InlineJavascriptPlugin|
|Documentation|http://www.TiddlyTools.com/#InlineJavascriptPluginInfo|
|Version|1.9.6|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|Insert Javascript executable code directly into your tiddler content.|
''Call directly into TW core utility routines, define new functions, calculate values, add dynamically-generated TiddlyWiki-formatted output'' into tiddler content, or perform any other programmatic actions each time the tiddler is rendered.
!!!!!Documentation
>see [[InlineJavascriptPluginInfo]]
!!!!!Revisions
<<<
2010.12.15 1.9.6 allow (but ignore) type="..." syntax
|please see [[InlineJavascriptPluginInfo]] for additional revision details|
2005.11.08 1.0.0 initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.InlineJavascriptPlugin= {major: 1, minor: 9, revision: 6, date: new Date(2010,12,15)};
config.formatters.push( {
name: "inlineJavascript",
match: "\\<script",
lookahead: "\\<script(?: type=\\\"[^\\\"]*\\\")?(?: src=\\\"([^\\\"]*)\\\")?(?: label=\\\"([^\\\"]*)\\\")?(?: title=\\\"([^\\\"]*)\\\")?(?: key=\\\"([^\\\"]*)\\\")?( show)?\\>((?:.|\\n)*?)\\</script\\>",
handler: function(w) {
var lookaheadRegExp = new RegExp(this.lookahead,"mg");
lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = lookaheadRegExp.exec(w.source)
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
var src=lookaheadMatch[1];
var label=lookaheadMatch[2];
var tip=lookaheadMatch[3];
var key=lookaheadMatch[4];
var show=lookaheadMatch[5];
var code=lookaheadMatch[6];
if (src) { // external script library
var script = document.createElement("script"); script.src = src;
document.body.appendChild(script); document.body.removeChild(script);
}
if (code) { // inline code
if (show) // display source in tiddler
wikify("{{{\n"+lookaheadMatch[0]+"\n}}}\n",w.output);
if (label) { // create 'onclick' command link
var link=createTiddlyElement(w.output,"a",null,"tiddlyLinkExisting",wikifyPlainText(label));
var fixup=code.replace(/document.write\s*\(/gi,'place.bufferedHTML+=(');
link.code="function _out(place,tiddler){"+fixup+"\n};_out(this,this.tiddler);"
link.tiddler=w.tiddler;
link.onclick=function(){
this.bufferedHTML="";
try{ var r=eval(this.code);
if(this.bufferedHTML.length || (typeof(r)==="string")&&r.length)
var s=this.parentNode.insertBefore(document.createElement("span"),this.nextSibling);
if(this.bufferedHTML.length)
s.innerHTML=this.bufferedHTML;
if((typeof(r)==="string")&&r.length) {
wikify(r,s,null,this.tiddler);
return false;
} else return r!==undefined?r:false;
} catch(e){alert(e.description||e.toString());return false;}
};
link.setAttribute("title",tip||"");
var URIcode='javascript:void(eval(decodeURIComponent(%22(function(){try{';
URIcode+=encodeURIComponent(encodeURIComponent(code.replace(/\n/g,' ')));
URIcode+='}catch(e){alert(e.description||e.toString())}})()%22)))';
link.setAttribute("href",URIcode);
link.style.cursor="pointer";
if (key) link.accessKey=key.substr(0,1); // single character only
}
else { // run script immediately
var fixup=code.replace(/document.write\s*\(/gi,'place.innerHTML+=(');
var c="function _out(place,tiddler){"+fixup+"\n};_out(w.output,w.tiddler);";
try { var out=eval(c); }
catch(e) { out=e.description?e.description:e.toString(); }
if (out && out.length) wikify(out,w.output,w.highlightRegExp,w.tiddler);
}
}
w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
}
}
} )
//}}}
// // Backward-compatibility for TW2.1.x and earlier
//{{{
if (typeof(wikifyPlainText)=="undefined") window.wikifyPlainText=function(text,limit,tiddler) {
if(limit > 0) text = text.substr(0,limit);
var wikifier = new Wikifier(text,formatter,null,tiddler);
return wikifier.wikifyPlain();
}
//}}}
// // GLOBAL FUNCTION: $(...) -- 'shorthand' convenience syntax for document.getElementById()
//{{{
if (typeof($)=='undefined') { function $(id) { return document.getElementById(id.replace(/^#/,'')); } }
//}}}
LangPack is a set of files to localize Yaric.
There are two apsect of localization: Yaric's UI (~LangPack) and Item filters (~FilterPack).
!~LangPack
~LangPack is a localization of Yaric's UI. Making a ~LangPack for your language is quite easy, just go to Resources subfolder, make a copy of ~LangPack.en.xml, transalate it and save with different name (ie: ~LangPack.ru.xml), your language will be autmatically picked up next time Yaric starts.
!~FilterPack
Creating Regex filters for item database might be problem.
Currently, only english filters are completely defined, filters for other languages, are just list of items which fall into categories. So if Riot add new item, english version will automatically pick it up, for other languages the item will be 'uncategorized', and you will need to ask me to regerenate lst (which is not hard, it just not automatic).
!Making a ~FilterPack
//(this is more technical, and if you know nothing about Regex, you don't need to read this)//
Example of 'Attack Speed' filter for english:
{{{
<Def Name="Attack Speed"><Regex><![CDATA[
(\+\d+(\%)?\s+attack\s+speed)|
(grants\s+\d+\-\d+(\%)?\s+attack\s+speed)|
(increases\s+your\s+attack\s+speed\s+by\s+\d+)
]]></Regex></Def>
}}}
(as I said, you need to know Regex to understand that)
Same filter for non-english clients looks like that:
{{{
<Def Name="Attack Speed">
<Item>1042</Item>
<Item>1043</Item>
<Item>2038</Item>
<Item>3006</Item>
<Item>3046</Item>
<Item>3050</Item>
<Item>3071</Item>
<Item>3078</Item>
<Item>3086</Item>
<Item>3091</Item>
<Item>3101</Item>
<Item>3114</Item>
<Item>3115</Item>
<Item>3124</Item>
<Item>3126</Item>
<Item>3131</Item>
<Item>3142</Item>
<Item>3172</Item>
</Def>
}}}
As you can see, items falling into this category are pregenerated, so new items won't be picked up automatically. I can regerate them, it's not a problem, but you know, it woud require me to be at home, to have time, to be in a good mood. You don't want to depend on this :-)
''If you want to help with Regex'es for other languages, I would appreciate that.''
League of Legends is a Multiplayer Online Battle Arena (as developers call it).
You can find it here: http://www.leagueoflegends.com/
/*{{{*/
#lightBoxOverlay {
position:absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 90;
background-color: #000;
-moz-opacity: 0.6;
opacity: .60;
filter: alpha(opacity=60);
}
#lightBoxOverlay[id]{
position: fixed;
}
div.lightBox {
background: #2d2d2d;
color: #fff;
border: 2px solid #eee;
}
img.lightBoxClose {
position: absolute;
top: -5px;
right: -5px;
margin: 0px;
cursor: pointer;
}
div.lightBoxAlert {
width: 300px;
height: 64px;
background: #2d2d2d;
color: #fff;
padding: 10px;
border: 2px solid #eee;
}
div.lightBoxAlertIcon {
position: absolute;
top: 8px;
left: 8px;
width: 48px;
height: 48px;
}
div.lightBoxAlertMessage {
margin-left: 56px;
margin-top: 16px;
}
/*}}}*/
[[Yaric]]
[[Download]]
[[Changelog]]
[[Tutorial]]
[[FAQ]]
[[Forum]]
[[Contact]]
[[League of Legends]]
[[Donate]]
<!--{{{-->
<link rel="icon" href="http://dl.dropbox.com/u/317815/Yaric/images/Y.ico" />
<!--}}}-->
<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
<!-- LightBox translucent overlay -->
<div id="lightBoxOverlay" onclick="DC3.LightBox.hideBox()" style="display:none"></div>
<!-- General use simple LightBox -->
<div class="lightBox" id="lightBox" style="display:none">
<img class="lightBoxClose" src="im/close.gif" onclick="DC3.LightBox.hideBox()" alt="Close" title="Close this window" />
<div id="lightBoxContent"></div>
</div>
<!-- General use Alert LightBox -->
<div class="lightBoxAlert" id="lightBoxAlert" style="display:none">
<img class="lightBoxClose" src="im/close.gif" onclick="DC3.LightBox.hideBox()" alt="Close" title="Close this window" />
<div class="lightBoxAlertIcon"><img id="lightBoxAlertIcon" src="runtime" alt="runtime" title="runtime"></div>
<div class="lightBoxAlertMessage" id="lightBoxAlertMessage">runtime</div>
</div>
<!-- End of LightBox -->
<!--}}}-->
<!--{{{-->
<div class='header' macro='gradient vert #390108 #900'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteLogo'></span>
<!--<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='SiteLogo'></span>
<!--<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span> -->
<!--<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>-->
</div>
</div>
<div id='mainMenu'>
<div refresh='content' tiddler='MainMenu'></div>
</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>
<!--}}}-->
!Why
PatchGuard is a mini apllication which should prevent [[League of Legends]] patcher from corrupting files.
It's just a speculation but I think that [[League of Legends]] patcher overwrites only parts they know has changed since last update. It's not true on your installation (you modified the files by applying modified builds). [[League of Legends]] patcher writes all over the place doing complete mess.
!How
PatchGuard removes all your modifications from original files, allows [[League of Legends]] to update itself, and then, when it's all over, reapplies your modified builds.
!Warning
''You have to use PatchGuard every time you, forget about original launcher. If you don't, and your files got corrupted reinstalling is the probalby the quickest fix. You have been warned!''
//(It's actually not completely true, but it a long story to explain)//
* ''Yaric'' requires [[League of Legends]] which is probably pretty much obvious, but have to mentioned. There are many people (including me) who would like to use Yaric as offline item browser and build planner. Unfortunatelly, ''Yaric'' uses ''live'' [[League of Legends]] data (which actually what we want, right?) so it cannot be run without it.
* ''Yaric'' requires [[.NET 4 Framework|http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&FamilyID=0a391abd-25c1-4fc0-919f-b21f31ab88b7]]
/***
|Name|SinglePageModePlugin|
|Source|http://www.TiddlyTools.com/#SinglePageModePlugin|
|Documentation|http://www.TiddlyTools.com/#SinglePageModePluginInfo|
|Version|2.9.7|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|Show tiddlers one at a time with automatic permalink, or always open tiddlers at top/bottom of page.|
This plugin allows you to configure TiddlyWiki to navigate more like a traditional multipage web site with only one tiddler displayed at a time.
!!!!!Documentation
>see [[SinglePageModePluginInfo]]
!!!!!Configuration
<<<
<<option chkSinglePageMode>> Display one tiddler at a time
><<option chkSinglePagePermalink>> Automatically permalink current tiddler
><<option chkSinglePageKeepFoldedTiddlers>> Don't close tiddlers that are folded
><<option chkSinglePageKeepEditedTiddlers>> Don't close tiddlers that are being edited
<<option chkTopOfPageMode>> Open tiddlers at the top of the page
<<option chkBottomOfPageMode>> Open tiddlers at the bottom of the page
<<option chkSinglePageAutoScroll>> Automatically scroll tiddler into view (if needed)
Notes:
* The "display one tiddler at a time" option can also be //temporarily// set/reset by including a 'paramifier' in the document URL: {{{#SPM:true}}} or {{{#SPM:false}}}.
* If more than one display mode is selected, 'one at a time' display takes precedence over both 'top' and 'bottom' settings, and if 'one at a time' setting is not used, 'top of page' takes precedence over 'bottom of page'.
* When using Apple's Safari browser, automatically setting the permalink causes an error and is disabled.
<<<
!!!!!Revisions
<<<
2010.11.30 2.9.7 use story.getTiddler()
2008.10.17 2.9.6 changed chkSinglePageAutoScroll default to false
| Please see [[SinglePageModePluginInfo]] for previous revision details |
2005.08.15 1.0.0 Initial Release. Support for BACK/FORWARD buttons adapted from code developed by Clint Checketts.
<<<
!!!!!Code
***/
//{{{
version.extensions.SinglePageModePlugin= {major: 2, minor: 9, revision: 7, date: new Date(2010,11,30)};
//}}}
//{{{
config.paramifiers.SPM = { onstart: function(v) {
config.options.chkSinglePageMode=eval(v);
if (config.options.chkSinglePageMode && config.options.chkSinglePagePermalink && !config.browser.isSafari) {
config.lastURL = window.location.hash;
if (!config.SPMTimer) config.SPMTimer=window.setInterval(function() {checkLastURL();},1000);
}
} };
//}}}
//{{{
//if (config.options.chkSinglePageMode==undefined)
config.options.chkSinglePageMode=true;
//if (config.options.chkSinglePagePermalink==undefined)
config.options.chkSinglePagePermalink=true;
//if (config.options.chkSinglePageKeepFoldedTiddlers==undefined)
config.options.chkSinglePageKeepFoldedTiddlers=false;
//if (config.options.chkSinglePageKeepEditedTiddlers==undefined)
config.options.chkSinglePageKeepEditedTiddlers=true;
//if (config.options.chkTopOfPageMode==undefined)
config.options.chkTopOfPageMode=true;
//if (config.options.chkBottomOfPageMode==undefined)
config.options.chkBottomOfPageMode=false;
//if (config.options.chkSinglePageAutoScroll==undefined)
config.options.chkSinglePageAutoScroll=false;
//}}}
//{{{
config.SPMTimer = 0;
config.lastURL = window.location.hash;
function checkLastURL()
{
if (!config.options.chkSinglePageMode)
{ window.clearInterval(config.SPMTimer); config.SPMTimer=0; return; }
if (config.lastURL == window.location.hash) return; // no change in hash
var tids=decodeURIComponent(window.location.hash.substr(1)).readBracketedList();
if (tids.length==1) // permalink (single tiddler in URL)
story.displayTiddler(null,tids[0]);
else { // restore permaview or default view
config.lastURL = window.location.hash;
if (!tids.length) tids=store.getTiddlerText("DefaultTiddlers").readBracketedList();
story.closeAllTiddlers();
story.displayTiddlers(null,tids);
}
}
if (Story.prototype.SPM_coreDisplayTiddler==undefined)
Story.prototype.SPM_coreDisplayTiddler=Story.prototype.displayTiddler;
Story.prototype.displayTiddler = function(srcElement,tiddler,template,animate,slowly)
{
var title=(tiddler instanceof Tiddler)?tiddler.title:tiddler;
var tiddlerElem=story.getTiddler(title); // ==null unless tiddler is already displayed
var opt=config.options;
var single=opt.chkSinglePageMode && !startingUp;
var top=opt.chkTopOfPageMode && !startingUp;
var bottom=opt.chkBottomOfPageMode && !startingUp;
if (single) {
story.forEachTiddler(function(tid,elem) {
// skip current tiddler and, optionally, tiddlers that are folded.
if ( tid==title
|| (opt.chkSinglePageKeepFoldedTiddlers && elem.getAttribute("folded")=="true"))
return;
// if a tiddler is being edited, ask before closing
if (elem.getAttribute("dirty")=="true") {
if (opt.chkSinglePageKeepEditedTiddlers) return;
// if tiddler to be displayed is already shown, then leave active tiddler editor as is
// (occurs when switching between view and edit modes)
if (tiddlerElem) return;
// otherwise, ask for permission
var msg="'"+tid+"' is currently being edited.\n\n";
msg+="Press OK to save and close this tiddler\nor press Cancel to leave it opened";
if (!confirm(msg)) return; else story.saveTiddler(tid);
}
story.closeTiddler(tid);
});
}
else if (top)
arguments[0]=null;
else if (bottom)
arguments[0]="bottom";
if (single && opt.chkSinglePagePermalink && !config.browser.isSafari) {
window.location.hash = encodeURIComponent(String.encodeTiddlyLink(title));
config.lastURL = window.location.hash;
document.title = wikifyPlain("SiteTitle") + " - " + title;
if (!config.SPMTimer) config.SPMTimer=window.setInterval(function() {checkLastURL();},1000);
}
if (tiddlerElem && tiddlerElem.getAttribute("dirty")=="true") { // editing... move tiddler without re-rendering
var isTopTiddler=(tiddlerElem.previousSibling==null);
if (!isTopTiddler && (single || top))
tiddlerElem.parentNode.insertBefore(tiddlerElem,tiddlerElem.parentNode.firstChild);
else if (bottom)
tiddlerElem.parentNode.insertBefore(tiddlerElem,null);
else this.SPM_coreDisplayTiddler.apply(this,arguments); // let CORE render tiddler
} else
this.SPM_coreDisplayTiddler.apply(this,arguments); // let CORE render tiddler
var tiddlerElem=story.getTiddler(title);
if (tiddlerElem&&opt.chkSinglePageAutoScroll) {
// scroll to top of page or top of tiddler
var isTopTiddler=(tiddlerElem.previousSibling==null);
var yPos=isTopTiddler?0:ensureVisible(tiddlerElem);
// if animating, defer scroll until after animation completes
var delay=opt.chkAnimate?config.animDuration+10:0;
setTimeout("window.scrollTo(0,"+yPos+")",delay);
}
}
if (Story.prototype.SPM_coreDisplayTiddlers==undefined)
Story.prototype.SPM_coreDisplayTiddlers=Story.prototype.displayTiddlers;
Story.prototype.displayTiddlers = function() {
// suspend single/top/bottom modes when showing multiple tiddlers
var opt=config.options;
var saveSPM=opt.chkSinglePageMode; opt.chkSinglePageMode=false;
var saveTPM=opt.chkTopOfPageMode; opt.chkTopOfPageMode=false;
var saveBPM=opt.chkBottomOfPageMode; opt.chkBottomOfPageMode=false;
this.SPM_coreDisplayTiddlers.apply(this,arguments);
opt.chkBottomOfPageMode=saveBPM;
opt.chkTopOfPageMode=saveTPM;
opt.chkSinglePageMode=saveSPM;
}
//}}}
/***
|Name|SinglePageModePluginInfo|
|Source|http://www.TiddlyTools.com/#SinglePageModePlugin|
|Documentation|http://www.TiddlyTools.com/#SinglePageModePluginInfo|
|Version|2.9.6|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|documentation|
|Description|Documentation for SinglePageModePlugin|
Normally, as you click on the links in TiddlyWiki, more and more tiddlers are displayed on the page. The order of this tiddler display depends upon when and where you have clicked. Some people like this non-linear method of reading the document, while others have reported that when many tiddlers have been opened, it can get somewhat confusing. SinglePageModePlugin allows you to configure TiddlyWiki to navigate more like a traditional multipage web site with only one item displayed at a time.
!!!!!Usage
<<<
When the plugin is enabled, only one tiddler will be displayed at a time and the browser window's titlebar is updated to include the current tiddler title. The browser's location URL is also updated with a 'permalink' for the current tiddler so that it is easier to create a browser 'bookmark' for the current tiddler. Alternatively, even when displaying multiple tiddlers //is// permitted, you can still reduce the potential for confusion by forcing tiddlers to always open at the top (or bottom) of the page instead of being displayed following the tiddler containing the link that was clicked.
<<<
!!!!!Configuration
<<<
<<option chkSinglePageMode>> Display one tiddler at a time
><<option chkSinglePagePermalink>> Automatically permalink current tiddler
><<option chkSinglePageKeepFoldedTiddlers>> Don't close tiddlers that are folded
><<option chkSinglePageKeepEditedTiddlers>> Don't close tiddlers that are being edited
<<option chkTopOfPageMode>> Open tiddlers at the top of the page
<<option chkBottomOfPageMode>> Open tiddlers at the bottom of the page
<<option chkSinglePageAutoScroll>> Automatically scroll tiddler into view (if needed)
Notes:
* {{block{
The "display one tiddler at a time" option can also be //temporarily// set/reset by including a 'paramifier' in the document URL: {{{#SPM:true}}} or {{{#SPM:false}}}. You can also use {{{SPM:expression}}}, where 'expression' is any javascript statement that evaluates to true or false. This allows you to create hard-coded links in other documents that can selectively enable/disable the use of this option based on various programmatic conditions, such as the current username. For example, using
{{{#SPM:config.options.txtUserName!="SomeName"}}}
enables 'one tiddler at a time' display for all users //other than// "~SomeName")}}}
* If more than one display mode is selected, 'one at a time' display takes precedence over both 'top' and 'bottom' settings, and if 'one at a time' setting is not used, 'top of page' takes precedence over 'bottom of page'.
* When using Apple's Safari browser, automatically setting the permalink causes an error and is disabled.
<<<
!!!!!Revisions
<<<
2008.10.17 2.9.6 changed chkSinglePageAutoScroll default to false
2008.06.12 2.9.5 corrected 'scroll to top of page' logic in auto-scroll handling
2008.06.11 2.9.4 added chkSinglePageKeepEditedTiddlers option
2008.06.05 2.9.3 in displayTiddler(), bypass single/top/bottom mode handling if startingUp. Allows multiple tiddlers to be displayed during startup processing (e.g., #story:DefaultTiddlers), even if single/top/bottom mode is enabled.
2008.04.18 2.9.2 in displayTiddler() and checkLastURL(), handling for Unicode in tiddler titles (remove explicit conversion between Unicode and UTF, as this is apparently done automatically by encode/decodeURIComponent, resulting in double-encoding!
2008.04.08 2.9.1 don't automatically add options to AdvancedOptions shadow tiddler
2008.04.02 2.9.0 in displayTiddler(), when single-page mode is in use and a tiddler is being edited, ask for permission to save-and-close that tiddler, instead of just leaving it open.
2008.03.29 2.8.3 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.14 2.8.2 in displayTiddler(), if editing specified tiddler, just move it to top/bottom of story *without* re-rendering (prevents discard of partial edits).
2008.03.06 2.8.1 in paramifier handler, start 'checkURL' timer if chkSinglePageMode is enabled
2008.03.06 2.8.0 added option, {{{config.options.chkSinglePageKeepFoldedTiddlers}}}, so folded tiddlers won't be closed when using single-page mode. Also, in checkURL(), if hash is a ''permaview'' (e.g., "#foo bar baz"), then display multiple tiddlers rather than attempting to display "foo bar baz" as a single tiddler
2008.03.05 2.7.0 added support for "SPM:" URL paramifier
2008.03.01 2.6.0 in hijack of displayTiddler(), added 'title' argument to closeAllTiddlers() so that target tiddler isn't closed-and-reopened if it was already displayed. Also, added config.options.chkSinglePageAutoScrolloption to bypass automatic 'scroll into view' logic (note: core still does it's own ensureVisible() handling)
2007.12.22 2.5.3 in checkLastURL(), use decodeURIComponent() instead of decodeURI so that tiddler titles with commas (and/or other punctuation) are correctly handled.
2007.10.26 2.5.2 documentation cleanup
2007.10.08 2.5.1 in displayTiddler(), when using single-page or top-of-page mode, scrollTo(0,0) to ensure that page header is in view.
2007.09.13 2.5.0 for TPM/BPM modes, don't force tiddler to redisplay if already shown. Allows transition between view/edit or collapsed/view templates, without repositioning displayed tiddler.
2007.09.12 2.4.0 added option to disable automatic permalink feature. Also, Safari is now excluded from permalinking action to avoid bug where tiddlers don't display after hash is updated.
2007.03.03 2.3.1 fix typo when adding BPM option to AdvancedOptions (prevented checkbox from appearing)
2007.03.03 2.3.0 added support for BottomOfPageMode (BPM) based on request from DaveGarbutt
2007.02.06 2.2.3 in Story.prototype.displayTiddler(), use convertUnicodeToUTF8() for correct I18N string handling when creating URL hash string from tiddler title (based on bug report from BidiX)
2007.01.08 2.2.2 use apply() to invoke hijacked core functions
2006.07.04 2.2.1 in hijack for displayTiddlers(), suspend TPM as well as SPM so that DefaultTiddlers displays in the correct order.
2006.06.01 2.2.0 added chkTopOfPageMode (TPM) handling
2006.02.04 2.1.1 moved global variable declarations to config.* to avoid FireFox 1.5.0.1 crash bug when assigning to globals
2005.12.27 2.1.0 hijack displayTiddlers() so that SPM can be suspended during startup while displaying the DefaultTiddlers (or #hash list). Also, corrected initialization for undefined SPM flag to "false", so default behavior is to display multiple tiddlers
2005.12.27 2.0.0 Update for TW2.0
2005.11.24 1.1.2 When the back and forward buttons are used, the page now changes to match the URL. Based on code added by Clint Checketts
2005.10.14 1.1.1 permalink creation now calls encodeTiddlyLink() to handle tiddler titles with spaces in them
2005.10.14 1.1.0 added automatic setting of window title and location bar ('auto-permalink'). feature suggestion by David Dickens.
2005.10.09 1.0.1 combined documentation and code in a single tiddler
2005.08.15 1.0.0 Initial Release
<<<
[img[./images/Yaric.png]]
<html><img src="./images/Yaric.png" alt="Yaric"><div class="hidden">Yaric</div></html>
/***
http://tiddlystyles.com/#theme:DevFire
Author: Clint Checketts
***/
/*{{{*/
body {
background: #000;
font-family: Tahoma;
}
/*}}}*/
/***
!Link styles /% ============================================================= %/
***/
/*{{{*/
a,
a.button,
#mainMenu a.button,
#sidebarOptions .sliderPanel a{
color: #ffbf00;
border: 0;
background: transparent;
}
a:hover,
a.button:hover,
#mainMenu a.button:hover,
#sidebarOptions .sliderPanel a:hover
#sidebarOptions .sliderPanel a:active{
color: #ff7f00;
border: 0;
border-bottom: #ff7f00 1px dashed;
background: transparent;
text-decoration: none;
}
#displayArea .button.highlight{
color: #ffbf00;
background: #4c4c4c;
}
/*}}}*/
/***
!Header styles /% ============================================================= %/
***/
/*{{{*/
.header{
border-bottom: 2px solid #ffbf00;
color: #fff;
}
.headerForeground a {
color: #fff;
}
.header a:hover {
border-bottom: 1px dashed #fff;
}
/*}}}*/
/***
!Main menu styles /% ============================================================= %/
***/
/*{{{*/
#mainMenu {color: #fff;}
#mainMenu h1{
font-size: 1.1em;
}
#mainMenu li,#mainMenu ul{
list-style: none;
margin: 0;
padding: 0;
}
/*}}}*/
/***
!Sidebar styles /% ============================================================= %/
***/
/*{{{*/
#sidebar {
right: 0;
color: #fff;
border: 2px solid #ffbf00;
border-width: 0 0 2px 2px;
}
#sidebarOptions {
background-color: #4c4c4c;
padding: 0;
}
#sidebarOptions a{
margin: 0;
color: #ffbf00;
border: 0;
}
#sidebarOptions a:hover {
color: #4c4c4c;
background-color: #ffbf00;
}
#sidebarOptions a:active {
color: #ffbf00;
background-color: transparent;
}
#sidebarOptions .sliderPanel {
background-color: #333;
margin: 0;
}
#sidebarTabs {background-color: #4c4c4c;}
#sidebarTabs .tabSelected {
padding: 3px 3px;
cursor: default;
color: #ffbf00;
background-color: #666;
}
#sidebarTabs .tabUnselected {
color: #ffbf00;
background-color: #5f5f5f;
padding: 0 4px;
}
#sidebarTabs .tabUnselected:hover,
#sidebarTabs .tabContents {
background-color: #666;
}
.listTitle{color: #FFF;}
#sidebarTabs .tabContents a{
color: #ffbf00;
}
#sidebarTabs .tabContents a:hover{
color: #ff7f00;
background: transparent;
}
#sidebarTabs .txtMoreTab .tabSelected,
#sidebarTabs .txtMoreTab .tab:hover,
#sidebarTabs .txtMoreTab .tabContents{
color: #ffbf00;
background: #4c4c4c;
}
#sidebarTabs .txtMoreTab .tabUnselected {
color: #ffbf00;
background: #5f5f5f;
}
.tab.tabSelected, .tab.tabSelected:hover{color: #ffbf00; border: 0; background-color: #4c4c4c;cursor:default;}
.tab.tabUnselected {background-color: #666;}
.tab.tabUnselected:hover{color:#ffbf00; border: 0;background-color: #4c4c4c;}
.tabContents {
background-color: #4c4c4c;
border: 0;
}
.tabContents .tabContents{background: #666;}
.tabContents .tabSelected{background: #666;}
.tabContents .tabUnselected{background: #5f5f5f;}
.tabContents .tab:hover{background: #666;}
/*}}}*/
/***
!Message area styles /% ============================================================= %/
***/
/*{{{*/
#messageArea {background-color: #666; color: #fff; border: 2px solid #ffbf00;}
#messageArea a:link, #messageArea a:visited {color: #ffbf00; text-decoration:none;}
#messageArea a:hover {color: #ff7f00;}
#messageArea a:active {color: #ff7f00;}
#messageArea .messageToolbar a{
border: 1px solid #ffbf00;
background: #4c4c4c;
}
/*}}}*/
/***
!Popup styles /% ============================================================= %/
***/
/*{{{*/
.popup {color: #fff; background-color: #4c4c4c; border: 1px solid #ffbf00;}
.popup li.disabled{color: #fff;}
.popup a {color: #ffbf00; }
.popup a:hover { background: transparent; color: #ff7f00; border: 0;}
.popup hr {color: #ffbf00; background: #ffbf00;}
/*}}}*/
/***
!Tiddler Display styles /% ============================================================= %/
***/
/*{{{*/
.title {
color: #fff;
border-bottom: 1px solid #eee;
}
h1, h2, h3, h4, h5 {
color: #fff;
background-color: transparent;
border-bottom: 1px solid #333;
}
.subtitle{
color: #666;
}
.viewer {color: #fff; }
.viewer table{background: #666; color: #fff;}
.viewer th {background-color: #996; color: #fff;}
.viewer pre, .viewer code {color: #ddd; background-color: #4c4c4c; border: 1px solid #ffbf00;}
.viewer hr {color: #666;}
.tiddler .button {color: #4c4c4c;}
.tiddler .button:hover { color: #ffbf00; background-color: #4c4c4c; }
.tiddler .button:active { color: #ffbf00; background-color: #4c4c4c; }
.toolbar {
color: #4c4c4c;
}
.toolbar a.button,
.toolbar a.button:hover,
.toolbar a.button:active,
.editorFooter a{
border: 0;
}
.footer {
color: #ddd;
}
.selected .footer {
color: #888;
}
.highlight, .marked {
color: #000;
background-color: #ffe72f;
}
.editorFooter {
color: #aaa;
}
.tab{
-moz-border-radius-topleft: 3px;
-moz-border-radius-topright: 3px;
}
.tagging,
.tagged{
background: #4c4c4c;
border: 1px solid #4c4c4c;
}
.selected .tagging,
.selected .tagged{
background-color: #333;
border: 1px solid #ffbf00;
}
.tagging .listTitle,
.tagged .listTitle{
color: #fff;
}
.tagging .button,
.tagged .button{
color: #ffbf00;
border: 0;
padding: 0;
}
.tagging .button:hover,
.tagged .button:hover{
background: transparent;
}
.selected .isTag .tagging.simple,
.selected .tagged.simple,
.isTag .tagging.simple,
.tagged.simple {
float: none;
display: inline;
border: 0;
background: transparent;
color: #fff;
margin: 0;
}
.cascade {
background: #4c4c4c;
color: #ddd;
border: 1px solid #ffbf00;
}
/*}}}*/
/***
!Hidden text /% ============================================================= %/
***/
/*{{{*/
.hidden {
visibility : hidden;
}
/*}}}*/
!Step by step guide to Fiddlesticks:
//(of course, you can do that with any champion you want, it's just an example)//
# [[Download]] ''Yaric''
# Run ''Yaric'' and select folder where you have [[League of Legends]] installed when prompted (this happens only once, when you use Yaric for the first time)
# After Yaric has started, you will find list of champions on left hand side. They are sorted alphabeticaly and grouped by initial. You can use ''filler box'' above to quickly access champions you want. For example, type ''fid'' to find ''Fiddlesticks''.
# Double-click a champion ''or'' drag-and-drop him into main panel.
# Go to item list at the bottom and type ''"ability power"'' (note: ''in double quotes'') in ''filter box''. You will notice all items with "abililty power" bonus.
# Drag-and-drop 5 items into ''item boxes'' in main panel.
# Go to ''filter box'' again, and type ''sorc'' to find ''Sorcerer's Shoes''.
# Drag them into last item slot.
# Press ''Apply'' button on toolbar. You will notice your build appeared on right hand side in so called ''build list''.
# You are pretty much done, close ''Yaric'' and start ''PatchGuard'' (yes, PatchGuard, ''do not'' start [[League of Legends]] with regualr launcher, you are taking a risk of currupting your files)
# Start a custom game to check it your modified build works.
# That's all folks!
!Video tutorial
If you prefer pictures over text you can watch quick video tutorial (also available [[here|http://youtu.be/q5k2ZANFg2w]]):
:: <html><iframe width="425" height="349" src="http://www.youtube.com/embed/q5k2ZANFg2w" frameborder="0" allowfullscreen></iframe></html>
Yaric, Yet Another Recommended Item Customizer for League of Legends
!Welcome
Welcome to ''Yaric'', Yet Another Recommended Items Customizer for [[League of Legends]].
''Yaric'' allows to change recommended items for any champion you want, so it much easier to access your favourite items during the game.
!What now?...
If you have Yaric already but you want to know what's new see the [[Changelog]].
You can go straight to [[Download]] section if you want it.
If you need some guidance how to use, you can take a look at simple [[Tutorial]].
If you have any problems please read [[FAQ]] first, or go to [[Forum]]. You can also [[Contact]] me.