diff --git a/favicon.png b/favicon.png new file mode 100644 index 0000000..4472bad Binary files /dev/null and b/favicon.png differ diff --git a/savegame-editor.css b/savegame-editor.css new file mode 100644 index 0000000..d67a6a7 --- /dev/null +++ b/savegame-editor.css @@ -0,0 +1,554 @@ +/* Savegame Editor CSS template by Marc Robledo v20170504 */ +/* minify at https://cssminifier.com/ + https://www.base64-image.de/ (sprites */ + +/* @FONT-FACES */ +@import url('https://fonts.googleapis.com/css?family=Open+Sans:400,400i,700,800'); + + +body{ + margin:0; + font:15px 'Open Sans',sans-serif; + cursor:default; + background-color:#252525; + margin:140px 0 40px; + background-color:#f8f8f8; + color:#181818 +} + +/* flex box */ +.row{ + display:flex; + flex-flow:row wrap; /* this is the same as flex-direction:row;flex-wrap:wrap; */ + align-items:center; /* vertical align */ + justify-content:space-between +} +/*.columns-1,.columns.one{width:8.33333%} +.columns-2,.columns.two{width:16.66667%} +.columns-3,.columns.three{width:25%} +.columns-4,.columns.four{width:33.33333%} +.columns-5,.columns.five{width:41.66667%} +.columns-6,.columns.six{width:50%} +.columns-7,.columns.seven{width:58.33333%} +.columns-8,.columns.eight{width:66.66667%} +.columns-9,.columns.nine{width:75%} +.columns-10,.columns.ten{width:83.33333%} +.columns-11,.columns.eleven{width:91.66667%} +.columns-12,.columns.twelve{width:100%}*/ +.columns.c1,.columns.one{width:7.33333%} +.columns.c2,.columns.two{width:15.66667%} +.columns.c3,.columns.three{width:24%} +.columns.c4,.columns.four{width:32.33333%} +.columns.c5,.columns.five{width:40.66667%} +.columns.c6,.columns.six{width:49%} +.columns.c7,.columns.seven{width:57.33333%} +.columns.c8,.columns.eight{width:65.66667%} +.columns.c9,.columns.nine{width:74%} +.columns.c10,.columns.ten{width:82.33333%} +.columns.c11,.columns.eleven{width:90.66667%} +.columns.c12,.columns.twelve{width:99%} +#the-editor .columns{margin-bottom:3px} + +/* useful classes */ +.help:hover{cursor:help} +.hidden{display:none} +.mono{font-family:monospace;color:#888} +.clickable{cursor:pointer} /* also Safari iOS fix for clickable elements */ +.text-ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis} +.text-left{text-align:left} +.text-right{text-align:right} +.text-center{text-align:center} +.text-justify{text-align:justify} +.padding-vertical{padding:20px 0} +.round{border-radius:3px} +/* colors */ +.bg-light-gray{background-color:rgba(216,216,216,.99)} +.bg-mid-gray{background-color:rgba(144,144,144,.99);color:white} +.bg-dark-gray{background-color:rgba(72,72,72,.99);color:white} +.bg-red{background-color:#e74c3c} +.bg-orange{background-color:#f39c12} +.bg-blue{background-color:#3498db} +.bg-green{background-color:#25ba84} +.fnt-white{color:white} +.fnt-light-gray{color:#d8d8d8} +.fnt-mid-gray{color:#909090} +.fnt-dark-gray{color:#48484} +.fnt-red{color:#e74c3c} +/*.fnt-red{color:#fe5d05}*/ +.fnt-orange{color:#f39c12} +/*.fnt-orange{color:#feb806}*/ +.fnt-blue{color:#3498db} +.fnt-green{color:#25ba84} +/*.fnt-green{color:#9ac430}*/ +.border-white{border-color:white} +.border-light-gray{border-color:#d8d8d8} +.border-mid-gray{border-color:#909090} +.border-dark-gray{border-color:#48484} +.border-red{border-color:#e74c3c} +.border-orange{border-color:#f39c12} +.border-blue{border-color:#3498db} +.border-green{border-color:#25ba84} + +/* Icons */ +span.sprite,span.icon,button.with-icon:before{ + background-image: url('data:image/png;base64,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'); + background-position:0px 0px; + display:inline-block; + vertical-align:middle +} +span.sprite{width:24px;height:24px} +span.icon,button.with-icon:before{ + width:16px;height:16px; + margin-right:4px; + content:"" +} +button.with-icon.icon0:before{background-position:-0px -16px} +button.with-icon.icon1:before{background-position:-16px -16px} +button.with-icon.icon2:before{background-position:-32px -16px} +button.with-icon.icon3:before{background-position:-48px -16px} +button.with-icon.icon4:before{background-position:-64px -16px} +button.with-icon.icon5:before{background-position:-80px -16px} +button.with-icon.icon6:before{background-position:-96px -16px} +button.with-icon.icon7:before{background-position:-112px -16px} +button.with-icon.icon8:before{background-position:-128px -16px} +button.with-icon.icon9:before{background-position:-144px -16px} +button.with-icon.icon10:before{background-position:-160px -16px} +button.with-icon.colored.icon0:before{background-position:-0px -32px} +button.with-icon.colored.icon1:before{background-position:-16px -32px} +button.with-icon.colored.icon2:before{background-position:-32px -32px} +button.with-icon.colored.icon3:before{background-position:-48px -32px} +button.with-icon.colored.icon4:before{background-position:-64px -32px} +button.with-icon.colored.icon5:before{background-position:-80px -32px} +button.with-icon.colored.icon6:before{background-position:-96px -32px} +button.with-icon.colored.icon7:before{background-position:-112px -32px} +button.with-icon.colored.icon8:before{background-position:-128px -32px} +button.with-icon.colored.icon9:before{background-position:-144px -32px} +button.with-icon.colored.icon10:before{background-position:-160px -32px} +span.icon.icon0,button.with-icon.transparent.icon0:before{background-position:-0px 0px} +span.icon.icon1,button.with-icon.transparent.icon1:before{background-position:-16px 0px} +span.icon.icon2,button.with-icon.transparent.icon2:before{background-position:-32px 0px} +span.icon.icon3,button.with-icon.transparent.icon3:before{background-position:-48px 0px} +span.icon.icon4,button.with-icon.transparent.icon4:before{background-position:-64px 0px} +span.icon.icon5,button.with-icon.transparent.icon5:before{background-position:-80px 0px} +span.icon.icon6,button.with-icon.transparent.icon6:before{background-position:-96px 0px} +span.icon.icon7,button.with-icon.transparent.icon7:before{background-position:-112px 0px} +span.icon.icon8,button.with-icon.transparent.icon8:before{background-position:-128px 0px} +span.icon.icon9,button.with-icon.transparent.icon9:before{background-position:-144px 0px} +span.icon.icon10,button.with-icon.transparent.icon10:before{background-position:-160px 0px} +span.sprite{width:24px;height:24px} +span.sprite.github{background-position:0px -48px;width:16px;height:16px; margin-right:5px} +span.sprite.heart{background-position:-16px -48px;width:16px;height:16px; margin-right:5px} +button.with-icon.file-load:before{background-position:-32px -48px;width:20px;height:20px; margin-right:8px} + + + + + + + + + + + + + + +/* header+toolbar+footer */ +#header{ + color:white; + position:fixed; + top:0;left:0; + width:100%; + z-index:100 +} +#header-top{ + background-color:#256796; + background-color:rgba(37,103,150,.97); +} +#toolbar{ + background-color:#e8e8e8; + background-color:rgba(232,232,232,.95); + color:#333; + padding:8px +} + +#header h1 img{width:24px; vertical-align:middle} +#header h1{font-size:140%;margin:0;display:inline-block} +#header h1 small{color:#94b4cc;font-size:60%} + + + +.header-buttons{ + font-size:85% +} +.header-buttons a.author{ + color:white; + text-decoration:none; + border-bottom:1px solid #4c82a9; + margin-right:10px +} +.header-buttons a.author:hover{ + border-color:#83d8ff +} +.header-buttons a.button{ + text-decoration:none; + color:white; + background-color:#1a415d; + padding:10px 20px; + border-radius:3px +} +.header-buttons a.button:hover{ + background-color:#153044 +} + +.donate.button{ + background-color:#51a451 !important; + + /*text-shadow:0 -1px 0 #37a137 !important; + background:radial-gradient(#60bd60,#398a39);*/ + animation:donateglow 2s infinite +} +.donate.button:hover{background-color:#3e903e !important} +@keyframes donateglow{ + 0%{box-shadow:none} + 50%{box-shadow:#d8ff7c 0 0 8px inset} + 100%{box-shadow:none} +} + + + + +hr{border:none;border-top:1px dotted #bbb;margin:15px 0} +h3{ + border-bottom:2px solid #888; + font-size:135%; + padding:10px 0; + text-transform:uppercase; + color:#444 +} +h4{} + +table{width:100%} +tbody tr:nth-child(even){background-color:#f2f2f2} +th{background-color:#d4d4d4} + + + + +/* forms */ +input[type=text],input[type=number],select{ + padding:6px 8px; + width:250px; + max-width:90%; + font:14px 'Open Sans', sans-serif; + border:1px solid #888; + border-radius:2px; + box-sizing:border-box +} +input[type=text]:hover,input[type=number]:hover,select:hover{ + border-color:#666 +} +input[type=text]:focus,input[type=number]:focus,select:focus{ + box-shadow:#63bce5 0 0 4px 1px; + border-color:#47a8df +} +input[type=text].error,input[type=number].error,select.error{ + box-shadow:#f88 0 0 4px 1px; + border-color:red +} +input[type=text].small,input[type=number].small,select.small{width:70px} +input[type=text].medium,input[type=number].medium,select.medium{width:130px} +.full-width{width:100% !important;max-width:100% !important} + + + +/* buttons */ +button{ + font-family:inherit; + font-size:100%; + min-width:120px; + border-radius:2px;border:1px solid;border-color:#ccc #ccc #b3b3b3; + + padding:6px 12px; + margin:0 5px; + + background-color:#f0f0f0; + background-image:linear-gradient(to bottom, #fff, #e6e6e6); + text-shadow:0 1px 0 #f8f8f8; + color:#333; + + box-shadow:0px 1px 0px rgba(255, 255, 255, 0.2) inset; + transition:border-color ease-in-out .15s; + + box-sizing:border-box +} +button.small{ + min-width:1px +} +button:hover{ + text-shadow:none; + border-color:#999999 +} +button:active{ + background-image:none; + transform:translate(0px,1px); + border-color:#888; + text-shadow:none; + + box-shadow:0 2px 8px -3px rgba(0, 0, 0, 0.5) inset; + background-color:#eeeeee; + transform:translateY(1px) +} +button:focus{} +button:disabled{opacity:.35} + +button.colored{color:white !important} +button.colored.blue{ + box-shadow:0 1px 0 rgba(120, 200, 230, 0.5) inset; + background-color:#21759B; + background-image:linear-gradient(to bottom, #2A95C5, #21759B); + border-color:#21759B #21759B #1E6A8D; + text-shadow:0 -1px 0 #20749a +} +button.colored.blue:hover{ + box-shadow:0 1px 0 rgba(120, 200, 230, 0.6) inset; + background-color:#278AB7; + background-image:linear-gradient(to bottom, #2E9FD2, #21759B); + border-color:#1B607F; + text-shadow:0 -1px 0 #1b6080 +} +button.colored.blue:active{ + box-shadow:0 2px 8px -3px rgba(0, 0, 0, 0.5) inset; + background:linear-gradient(to bottom, #21759B, #278AB7) repeat scroll 0 0 #1B607F; + border-color:#124560 #0e74a3 #0e74a3; + text-shadow:0 -1px 0 #177ea4 +} + +button.colored.red{ + box-shadow:0 1px 0 #df4c45 inset; + background-color:#b72319; + background-image:linear-gradient(to bottom, #ce271d, #a41f17); + border-color:#a41f17 #a41f17 #951d15; + text-shadow:0 -1px 0 #a01d15 +} +button.colored.red:hover{ + box-shadow:0 1px 0 #e8564f inset !important; + background-color:#bf261c !important; + background-image:linear-gradient(to bottom, #db2c20, #a52017) !important; + border-color:#871a13 !important; + text-shadow:0 -1px 0 #8b1b14 !important +} +button.colored.red:active{ + box-shadow:0 2px 8px -3px rgba(0, 0, 0, 0.5) inset !important; + background:linear-gradient(to bottom, #a51f17, #c1251b) repeat scroll 0 0 #b22118 !important; + border-color:#66140c #a0150d #a0150d !important; + text-shadow:0 -1px 0 #a41e17 !important +} + +button.colored.green{ + box-shadow:0 1px 0 #81cf81 inset !important; + background-color:#59b259 !important; + background-image:linear-gradient(to bottom, #61c261, #51a351) !important; + border-color:#52a452 #4f9f4f #448944 !important; + text-shadow:0 -1px 0 #37a137 !important +} +button.colored.green:hover{ + box-shadow:0 1px 0 #99de99 inset !important; + background-color:#278AB7 !important; + background-image:linear-gradient(to bottom, #64ce64, #51a351) !important; + border-color:#3f7f3f !important; + text-shadow:0 -1px 0 #1c9216 !important +} +button.colored.green:active{ + box-shadow:0 2px 8px -3px rgba(0, 0, 0, 0.5) inset !important; + background:linear-gradient(to bottom, #1e8f22, #23a627) repeat scroll 0 0 #219b24 !important; + border-color:#105815 #17941b #17941b !important; + text-shadow:0 -1px 0 #17a417 !important +} + +button.colored.orange{ + box-shadow:0 1px 0 #ffb519 inset !important; + background-color:#e69501 !important; + background-image:linear-gradient(to bottom, #fda502, #d08400) !important; + border-color:#d38500 #c97e00 #b46f00 !important; + text-shadow:0 -1px 0 #8f5901 !important +} +button.colored.orange:hover{ + box-shadow:0 1px 0 #ffc03c inset !important; + background-color:#e69501 !important; + background-image:linear-gradient(to bottom, #ffb01e, #d08400) !important; + border-color:#a36300 !important; + text-shadow:0 -1px 0 #95620f !important +} +button.colored.orange:active{ + box-shadow:0 2px 8px -3px rgba(0, 0, 0, 0.5) inset !important; + background:linear-gradient(to bottom, #c07400, #ed9500) repeat scroll 0 0 #219b24 !important; + border-color:#53400b #886912 #886912 !important; + text-shadow:0 -1px 0 #654e0e !important +} + + +button.transparent{ + min-width:auto; + box-shadow:none; + padding:0; + background:none; + text-decoration:underline; + border:none; + text-shadow:none; + color:black !important +} +button.transparent:hover{background-color:rgba(0,0,0,.05)} +button.no-text.with-icon:before{margin-right:0px} + + + + + + + + + + + + + +.wrapper{ + max-width:920px; + margin:0 auto +} + + +.card{ + position:relative; + margin-bottom:40px; + padding:20px; + color:black; + text-shadow:initial; + border-radius:4px; + line-height:2.5; + background-color:#fafafa +} + + +fieldset{border:2px solid white;border-radius:4px;margin-bottom:30px} +fieldset.yellow{border-color:#feb806} +fieldset.green{border-color:#9ac430} +fieldset.red{border-color:#fe5d05} +fieldset legend{font-weight:bold} +/* +fieldset.yellow legend{color:#feb806} +fieldset.green legend{color:#9ac430} +fieldset.red legend{color:#fe5d05} +*/ +#dragzone{ + border:4px dashed #bbb; + color:#888; + text-align:center; + border-radius:8px; + position:relative; + transition:all .2s; + padding-bottom:20px; + /*font-weight:bold;*/ +} +.dragging-files #dragzone{ + border-color:#3498db; + color:#3498db; + background-color:white +} +#dragzone-message{ + font-size:180%; + margin:128px 0; + line-height:2 +} +#demo{ + text-decoration:none; + background-color:#ccc; + color:#333; + padding:4px 16px; + border-radius:3px; + clear:both +} +#demo:hover{ + background-color:#bbb; + color:#000 +} + +#warning{ + position:fixed; + bottom:-80px; + width:100%; + background-color:#a30202; + background-color:rgba(164,0,0,.96); + color:white; + transition:bottom .5s +} +#warning.visible{bottom:0px} +#warning:hover{background-color:#b31212} +#warning u{ + background-color:white; + color:#b31212; + text-decoration:none; + padding:6px 16px; + border-radius:3px; + font-weight:bold +} + + + + + + +/* responsive */ +@media only screen and (max-width:961px){ + .wrapper{max-width:auto; padding-left:10px;padding-right:10px;} +} +@media only screen and (max-width:721px){ + #header .columns-6,#header .columns.six{width:100%;text-align:center} + #the-editor{font-size:13px} +} +@media only screen and (max-width:481px){ + #the-editor{font-size:12px} +} + + + + + + +/* MarcDialogs */ +#dialog-about{background-color:#ffd823} + + + +.dialog-overlay,.dialog{visibility:hidden;opacity:0} +.dialog-overlay.active,.dialog.active{visibility:visible;opacity:1;transition-delay:0s}/* fixes fade-in/fade-out*/ + +.dialog-overlay{ + transition:visibility 0s .2s, opacity .2s; + + background-color:black; + -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=75)";/* IE8 */ + background-color:rgba(0,0,0,.75) +} + +.dialog{ + position:absolute;top:0;left:0; /* fix for reserved space */ + + transform:translateY(-10px); + transition:visibility 0s .2s, opacity .2s ease-in, transform .2s ease-in; + + background-color:white; + padding:15px; + min-width:360px; + max-width:80%; + border-radius:4px; + box-shadow:black 0 0 10px; + line-height:1.8 +} +.dialog.active{transform:translateY(0px)} + +.buttons{ + margin-top:20px; + text-align:center +} + diff --git a/savegame-editor.js b/savegame-editor.js new file mode 100644 index 0000000..63aedc1 --- /dev/null +++ b/savegame-editor.js @@ -0,0 +1,437 @@ +/* + savegame-editor.js v20170504 + A library that lets you create easily a savegame editor. Made with vanilla JS. + + by Marc Robledo 2016-2017 + http://www.marcrobledo.com/license +*/ + +/* LIBRARIES */ +/* MarcBinFile.js v2016 */ +function MarcBinFile(a,b){if("function"!=typeof window.FileReader)throw console.error("MarcBinFile.js: Browser doesn't support FileReader."),"Invalid browser";if("object"==typeof a&&a.name&&a.size)this.file=a,this.fileName=this.file.name,this.fileSize=this.file.size,this.fileType=a.type;else if("object"==typeof a&&a.files){if(1!=a.files.length){for(var c=[],d=a.files.length,e=function(){d--,0==d&&b&&b.call()},f=0;f0;e++)d+=String.fromCharCode(c[e]);return d},MarcBinFile.prototype.writeByte=function(a,b){this.fileReader.dataView.setUint8(a,b,this.littleEndian)},MarcBinFile.prototype.writeByteSigned=function(a,b){this.fileReader.dataView.setInt8(a,b,this.littleEndian)},MarcBinFile.prototype.writeBytes=function(a,b){for(var c=0;c here or '; + + var inputFile=document.createElement('input'); + inputFile.type='file'; + inputFile.className='hidden'; + inputFile.id='file-load'; + inputFile.addEventListener('change', function(){ + loadSavegameFromInput(this); + }, false); + + var demoMessage=document.createElement('a'); + demoMessage.id='demo'; + demoMessage.href=SavegameEditor.Filename; + demoMessage.download=SavegameEditor.Filename; + demoMessage.innerHTML='Do you want to try it out? Download an example savegame'; + + dragZone.appendChild(dragMessage); + dragZone.appendChild(inputFile); + dragZone.appendChild(demoMessage); + document.body.appendChild(dragZone); + + + + MarcDragAndDrop.add('dragzone', function(droppedFiles){ + tempFile=new MarcBinFile(droppedFiles[0], _tempFileLoadFunction); + }); + + //var warningMessage=mCreate('div', {id:'warning',class:'clickable padding-vertical'}); + var warningMessage=document.createElement('div'); + warningMessage.id='warning'; + warningMessage.className='clickable padding-vertical'; + warningMessage.addEventListener('click', function(){ + this.className=this.className.replace(' visible',''); + },false); + var wrapper=document.createElement('div'); + wrapper.className='wrapper text-center'; + wrapper.innerHTML='Use this tool at your own risk. By using it, you are responsible of any data lost. I understand'; + warningMessage.appendChild(wrapper); + document.body.appendChild(warningMessage); + + + + + + + + +}, false); + + +/* binary and other helpers */ +function compareBytes(offset,a2){ + var a1=tempFile.readBytes(offset, a2.length); + + for(var i=0;i field.maxValue){ + val=field.maxValue; + } + field.value=val; +} +function fixNumericFieldValueFromEvent(){fixNumericFieldValue(this)} + + +function inputNumber(id,min,max,def){ + var input=document.createElement('input'); + input.id='number-'+id; + input.className='full-width text-right'; + input.type='text'; /* type='number' validation breaks getting input value when it's not valid */ + input.minValue=min; + input.maxValue=max; + input.value=def; + input.addEventListener('change', fixNumericFieldValueFromEvent, false); + return input; +} +function inputFloat(id,min,max,def){ + var input=document.createElement('input'); + input.id='float-'+id; + input.className='full-width text-right'; + input.type='text'; + input.minValue=min; + input.maxValue=max; + input.value=def; + input.addEventListener('change', fixNumericFieldValueFromEvent, false); + return input +} +function input(id,def){ + var input=document.createElement('input'); + input.id='input-'+id; + input.className='full-width'; + input.type='text'; + input.value=def; + return input +} +function checkbox(id,val){ + var input=document.createElement('input'); + input.id='checkbox-'+id; + input.type='checkbox'; + if(val) + input.value=val; + return input +} +function select(id,options,func){ + var select; + if(document.getElementById('select-'+id)){ + select=document.getElementById('select-'+id); + }else{ + select=document.createElement('select'); + select.id='select-'+id; + select.className='full-width'; + } + if(options){ + for(var i=0; i + + + Savegame Editor – The legend of Zelda: Breath of the wild + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+ +
+
+ +
+
+
+
+
+
+
+
+
+
+ +
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+ + + + + diff --git a/zelda-botw/savegame-editor.appcache b/zelda-botw/savegame-editor.appcache new file mode 100644 index 0000000..6732242 --- /dev/null +++ b/zelda-botw/savegame-editor.appcache @@ -0,0 +1,13 @@ +CACHE MANIFEST +# last update 2017-05-08 +#CACHE: +index.html +zelda-botw.js +zelda-botw.data.js +../savegame-editor.css +../savegame-editor.js +../favicon.png + +# force these files to be loaded in network +NETWORK: +* \ No newline at end of file diff --git a/zelda-botw/thumb.jpg b/zelda-botw/thumb.jpg new file mode 100644 index 0000000..af788e1 Binary files /dev/null and b/zelda-botw/thumb.jpg differ diff --git a/zelda-botw/zelda-botw.data.js b/zelda-botw/zelda-botw.data.js new file mode 100644 index 0000000..04f1d22 --- /dev/null +++ b/zelda-botw/zelda-botw.data.js @@ -0,0 +1,1061 @@ +/* + The legend of Zelda: Breath of the wild (Item IDs) v20170505 + + by Marc Robledo 2017 + item list extracted from https://github.com/joffnerd/botw-trainer/blob/master/items.json +*/ +var BOTW_Data={ + HORSE_REINS:[ + 'GameRomHorseReins_00', + 'GameRomHorseReins_01', + 'GameRomHorseReins_02', + 'GameRomHorseReins_03', + 'GameRomHorseReins_04', + 'GameRomHorseReins_05', + 'GameRomHorseReins_06', /* Epona? */ + 'GameRomHorseReins_00L' + ], + HORSE_SADDLES:[ + 'GameRomHorseSaddle_00', + 'GameRomHorseSaddle_01', + 'GameRomHorseSaddle_02', + 'GameRomHorseSaddle_03', + 'GameRomHorseSaddle_04', + 'GameRomHorseSaddle_05', + 'GameRomHorseSaddle_06', /* Epona? */ + 'GameRomHorseSaddle_00L', + 'GameRomHorseSaddle_00S', + ], + HORSE_TYPES:[ + 'GameRomHorse00', + 'GameRomHorse01', + 'GameRomHorse02', + 'GameRomHorse03', + 'GameRomHorse04', + 'GameRomHorse05', + 'GameRomHorse06', + 'GameRomHorse07', + 'GameRomHorse08', + 'GameRomHorse09', + 'GameRomHorse10', + 'GameRomHorse11', + 'GameRomHorse12', + 'GameRomHorse13', + 'GameRomHorse14', + 'GameRomHorse15', + 'GameRomHorse16', + 'GameRomHorse17', + 'GameRomHorse18', + 'GameRomHorse19', + 'GameRomHorse20', + 'GameRomHorse21', + 'GameRomHorse22', + 'GameRomHorse23', + 'GameRomHorseEpona', + 'GameRomHorseZelda', + 'GameRomHorse00L', + 'GameRomHorseNushi', + 'GameRomHorseBone' + ], + + Translations:[ +{id:'weapons',items:{ +Weapon_Sword_001:"Traveler's Sword", +Weapon_Sword_002:"Soldier's Broadsword", +Weapon_Sword_003:"Knight's Broadsword", +Weapon_Sword_004:"Boko Club", +Weapon_Sword_005:"Spiked Boko Club", +Weapon_Sword_006:"Dragonbone Boko Club", +Weapon_Sword_007:"Lizal Boomerand", +Weapon_Sword_008:"Lizal Forked Boomerang", +Weapon_Sword_009:"Lizal Tri-Boomerang", +Weapon_Sword_013:"Guardian Sword", +Weapon_Sword_014:"Guardian Sword+", +Weapon_Sword_015:"Guardian Sword++", +Weapon_Sword_016:"Lynel Sword", +Weapon_Sword_017:"Mighty Lynel Sword", +Weapon_Sword_018:"Savage Lynel Sword", +Weapon_Sword_019:"Bokoblin Arm", +Weapon_Sword_020:"Lizalfos Arm", +Weapon_Sword_021:"Rusty Broadsword", +Weapon_Sword_022:"Soup ladle", +Weapon_Sword_023:"Ancient Short Sword", +Weapon_Sword_024:"Royal Broadsword", +Weapon_Sword_025:"Forest Dweller's Sword", +Weapon_Sword_027:"Zora Sword", +Weapon_Sword_029:"Gerudo Scimitar", +Weapon_Sword_030:"Moonlight Scimitar", +Weapon_Sword_031:"Feathered Edge", +Weapon_Sword_033:"Flameblade", +Weapon_Sword_034:"Frostblade", +Weapon_Sword_035:"Thunderblade", +Weapon_Sword_040:"Spring-Loaded Hammer", +Weapon_Sword_041:"Eightfold Blade", +Weapon_Sword_043:"Torch", +Weapon_Sword_044:"Tree Branch", +Weapon_Sword_047:"Royal Guard's Sword", +Weapon_Sword_048:"Meteor Rod", +Weapon_Sword_049:"Blizzard Rod", +Weapon_Sword_050:"Thunderstorm Rod", +Weapon_Sword_051:"Boomerang", +Weapon_Sword_052:"Scimitar of the Seven", +Weapon_Sword_053:"Vicious Sickle", +Weapon_Sword_056:"Master Sword (Broken/Unequippable)", +Weapon_Sword_057:"Goddess Sword", +Weapon_Sword_058:"Hero's Sword (8-bit Link)", +Weapon_Sword_059:"Sea-Breeze Boomerang (Wind Waker)", +Weapon_Sword_060:"Fire Rod", +Weapon_Sword_061:"Ice Rod", +Weapon_Sword_062:"Lightning Rod", +Weapon_Sword_070:"Master Sword", +Weapon_Sword_071:"Master Sword (no near malice, no charge)", +Weapon_Sword_072:"Master Sword (near malice, no charge)", +Weapon_Sword_073:"Demon Carver", +Weapon_Sword_500:"Lantern", +Weapon_Lsword_001:"Traveler's Claymore", +Weapon_Lsword_002:"Soldier's Claymore", +Weapon_Lsword_003:"Knight's Claymore", +Weapon_Lsword_004:"Boko Bat", +Weapon_Lsword_005:"Spiked Boko Bat", +Weapon_Lsword_006:"Dragonbone Boko Bat", +Weapon_Lsword_010:"Moblin Club", +Weapon_Lsword_011:"Spiked Moblin Club", +Weapon_Lsword_012:"Dragonbone Moblin Club", +Weapon_Lsword_013:"Ancient Battle Axe", +Weapon_Lsword_014:"Ancient Battle Axe+", +Weapon_Lsword_015:"Ancient Battle Axe++", +Weapon_Lsword_016:"Lynel Crusher", +Weapon_Lsword_017:"Mighty Lynel Crusher", +Weapon_Lsword_018:"Savage Lynel Crusher", +Weapon_Lsword_019:"Moblin Arm", +Weapon_Lsword_020:"Rusty Claymore", +Weapon_Lsword_023:"Ancient Bladesaw", +Weapon_Lsword_024:"Royal Claymore", +Weapon_Lsword_027:"Silver Longsword", +Weapon_Lsword_029:"Golden Claymore", +Weapon_Lsword_030:"Double Axe", +Weapon_Lsword_031:"Iron Sledgehammer", +Weapon_Lsword_032:"Woodcutter's Axe", +Weapon_Lsword_033:"Great Flameblade", +Weapon_Lsword_034:"Great Frostblade", +Weapon_Lsword_035:"Great Thunderblade", +Weapon_Lsword_036:"Cobble Crusher", +Weapon_Lsword_037:"Stone Smasher", +Weapon_Lsword_038:"Boat Oar", +Weapon_Lsword_041:"Eightfold Longblade", +Weapon_Lsword_045:"Farming Hoe", +Weapon_Lsword_047:"Royal Guard's Claymore", +Weapon_Lsword_051:"Giant Boomerang", +Weapon_Lsword_054:"Boulder Breaker", +Weapon_Lsword_055:"Edge of Duality", +Weapon_Lsword_056:"Korok Leaf", +Weapon_Lsword_057:"Sword of the Six Sages (Twilight Princess)", +Weapon_Lsword_059:"Biggoron's Sword (Ocarina of Time)", +Weapon_Lsword_060:"Fierce Deity Sword (Majora's Mask)", +Weapon_Lsword_074:"Windcleaver", +Weapon_Spear_001:"Traveler's Spear", +Weapon_Spear_002:"Soldier's Spear", +Weapon_Spear_003:"Knight's Halberd", +Weapon_Spear_004:"Boko Spear", +Weapon_Spear_005:"Spiked Boko Spear", +Weapon_Spear_006:"Dragonbone Boko Spear", +Weapon_Spear_007:"Lizal Spear", +Weapon_Spear_008:"Enhanced Lizal Spear", +Weapon_Spear_009:"Forked Lizal Spear", +Weapon_Spear_010:"Moblin Spear", +Weapon_Spear_011:"Spiked Moblin Spear", +Weapon_Spear_012:"Dragonbone Moblin Spear", +Weapon_Spear_013:"Guardian Spear", +Weapon_Spear_014:"Guardian Spear+", +Weapon_Spear_015:"Guardian Spear++", +Weapon_Spear_016:"Lynel Spear", +Weapon_Spear_017:"Mighty Lynel Spear", +Weapon_Spear_018:"Savage Lynel Spear", +Weapon_Spear_021:"Rusty Halberd", +Weapon_Spear_022:"Farmer's Pichfork", +Weapon_Spear_023:"Ancient Spear", +Weapon_Spear_024:"Royal Halberd", +Weapon_Spear_025:"Forest Dweller's Spear", +Weapon_Spear_027:"Zora Spear", +Weapon_Spear_028:"Silverscale Spear", +Weapon_Spear_029:"Gerudo Spear", +Weapon_Spear_030:"Throwing Spear", +Weapon_Spear_031:"Drillshaft", +Weapon_Spear_032:"Feathered Spear", +Weapon_Spear_033:"Flamespear", +Weapon_Spear_034:"Frostspear", +Weapon_Spear_035:"Thunderspear", +Weapon_Spear_036:"Wooden Mop", +Weapon_Spear_037:"Serpentine Spear", +Weapon_Spear_038:"Fishing Harpoon", +Weapon_Spear_047:"Royal Guard's Spear", +Weapon_Spear_049:"Ceremonial Trident", +Weapon_Spear_050:"Lightscale Trident" +}}, + +{id:'bows',items:{ +Weapon_Bow_001:"Traveler's Bow", +Weapon_Bow_002:"Soldier's Bow", +Weapon_Bow_003:"Spiked Boko Bow", +Weapon_Bow_004:"Boko Bow", +Weapon_Bow_006:"Lizal Bow", +Weapon_Bow_009:"Lynel Bow", +Weapon_Bow_011:"Strengthened Lizal Bow", +Weapon_Bow_013:"Forest Dweller's Bow", +Weapon_Bow_014:"Silver Bow", +Weapon_Bow_015:"Golden Bow", +Weapon_Bow_016:"Swallow Bow", +Weapon_Bow_017:"Falcon Bow", +Weapon_Bow_023:"Ancient Bow", +Weapon_Bow_026:"Mighty Lynel Bow", +Weapon_Bow_027:"Dragon Bone Boko Bow", +Weapon_Bow_028:"Great Eagle Bow", +Weapon_Bow_029:"Phrenic Bow", +Weapon_Bow_030:"Steel Lizal Bow", +Weapon_Bow_032:"Savage Lynel Bow", +Weapon_Bow_033:"Royal Guard's Bow", +Weapon_Bow_035:"Knight's Bow", +Weapon_Bow_036:"Royal Bow", +Weapon_Bow_038:"Wooden Bow", +Weapon_Bow_040:"Duplex Bow", +Weapon_Bow_071:"Bow of Light", +Weapon_Bow_072:"Twilight Bow (Twilight Princess)", +NormalArrow:"Arrow", +FireArrow:"Fire Arrow", +IceArrow:"Ice Arrow", +ElectricArrow:"Shock Arrow", +BombArrow_A:"Bomb Arrow", +AncientArrow:"Ancient Arrow" +}}, + +{id:'shields',items:{ +Weapon_Shield_001:"Wooden Shield", +Weapon_Shield_002:"Soldier's Shield", +Weapon_Shield_003:"Knight's Shield", +Weapon_Shield_004:"Boko Shield", +Weapon_Shield_005:"Spiked Boko Shield", +Weapon_Shield_006:"Dragonbone Boko Shield", +Weapon_Shield_007:"Lizal Shield", +Weapon_Shield_008:"Reinforced Lizal Shield", +Weapon_Shield_009:"Steel Lizal Shield", +Weapon_Shield_013:"Guardian Shield", +Weapon_Shield_014:"Guardian Shield+", +Weapon_Shield_015:"Guardian Shield++", +Weapon_Shield_016:"Lynel Shield", +Weapon_Shield_017:"Mighty Lynel Shield", +Weapon_Shield_018:"Savage Lynel Shield", +Weapon_Shield_021:"Rusty Shield", +Weapon_Shield_022:"Royal Shield", +Weapon_Shield_023:"Forest Dweller's Shield", +Weapon_Shield_025:"Silver Shield", +Weapon_Shield_026:"Gerudo Shield", +Weapon_Shield_030:"Hylian Shield", +Weapon_Shield_031:"Hunter's Shield", +Weapon_Shield_032:"Fisherman's Shield", +Weapon_Shield_033:"Royal Guard's Shield", +Weapon_Shield_034:"Emblazoned Shield", +Weapon_Shield_035:"Traveler's Shield", +Weapon_Shield_036:"Radiant Shield", +Weapon_Shield_037:"Daybreaker", +Weapon_Shield_038:"Ancient Shield", +Weapon_Shield_040:"Pot Lid", +Weapon_Shield_041:"Shield of the Mind's Eye", +Weapon_Shield_042:"Kite Shield", +Weapon_Shield_057:"Hero's Shield (Wind Waker)" +}}, + +{id:'clothes',items:{ +Armor_001_Head:"Hylian Hood", +Armor_002_Head:"Hylian Hood ★", +Armor_003_Head:"Hylian Hood ★★", +Armor_004_Head:"Hylian Hood ★★★", +Armor_015_Head:"Hylian Hood ★★★★", +Armor_001_Upper:"Hylian Tunic", +Armor_002_Upper:"Hylian Tunic ★", +Armor_003_Upper:"Hylian Tunic ★★", +Armor_004_Upper:"Hylian Tunic ★★★", +Armor_015_Upper:"Hylian Tunic ★★★★", +Armor_001_Lower:"Hylian Trousers", +Armor_002_Lower:"Hylian Trousers ★", +Armor_003_Lower:"Hylian Trousers ★★", +Armor_004_Lower:"Hylian Trousers ★★★", +Armor_015_Lower:"Hylian Trousers ★★★★", +Armor_005_Head:"Cap of the Wild", +Armor_035_Head:"Cap of the Wild ★", +Armor_039_Head:"Cap of the Wild ★★", +Armor_060_Head:"Cap of the Wild ★★★", +Armor_061_Head:"Cap of the Wild ★★★★", +Armor_005_Upper:"Tunic of the Wild", +Armor_035_Upper:"Tunic of the Wild ★", +Armor_039_Upper:"Tunic of the Wild ★★", +Armor_060_Upper:"Tunic of the Wild ★★★", +Armor_061_Upper:"Tunic of the Wild ★★★★", +Armor_005_Lower:"Trousers of the Wild", +Armor_035_Lower:"Trousers of the Wild ★", +Armor_039_Lower:"Trousers of the Wild ★★", +Armor_060_Lower:"Trousers of the Wild ★★★", +Armor_061_Lower:"Trousers of the Wild ★★★★", +Armor_006_Head:"Zora Helm", +Armor_007_Head:"Zora Helm ★", +Armor_062_Head:"Zora Helm ★★", +Armor_063_Head:"Zora Helm ★★★", +Armor_064_Head:"Zora Helm ★★★★", +Armor_006_Upper:"Zora Armor", +Armor_007_Upper:"Zora Armor ★", +Armor_062_Upper:"Zora Armor ★★", +Armor_063_Upper:"Zora Armor ★★★", +Armor_064_Upper:"Zora Armor ★★★★", +Armor_006_Lower:"Zora Greaves", +Armor_007_Lower:"Zora Greaves ★", +Armor_062_Lower:"Zora Greaves ★★", +Armor_063_Lower:"Zora Greaves ★★★", +Armor_064_Lower:"Zora Greaves ★★★★", +Armor_008_Head:"Desert Voe Headband", +Armor_040_Head:"Desert Voe Headband ★", +Armor_065_Head:"Desert Voe Headband ★★", +Armor_066_Head:"Desert Voe Headband ★★★", +Armor_067_Head:"Desert Voe Headband ★★★★", +Armor_008_Upper:"Desert Voe Spaulder", +Armor_040_Upper:"Desert Voe Spaulder ★", +Armor_065_Upper:"Desert Voe Spaulder ★★", +Armor_066_Upper:"Desert Voe Spaulder ★★★", +Armor_067_Upper:"Desert Voe Spaulder ★★★★", +Armor_008_Lower:"Desert Voe Trousers", +Armor_040_Lower:"Desert Voe Trousers ★", +Armor_065_Lower:"Desert Voe Trousers ★★", +Armor_066_Lower:"Desert Voe Trousers ★★★", +Armor_067_Lower:"Desert Voe Trousers ★★★★", +Armor_009_Head:"Snowquill Headdress", +Armor_036_Head:"Snowquill Headdress ★", +Armor_071_Head:"Snowquill Headdress ★★", +Armor_072_Head:"Snowquill Headdress ★★★", +Armor_073_Head:"Snowquill Headdress ★★★★", +Armor_009_Upper:"Snowquill Tunic", +Armor_036_Upper:"Snowquill Tunic ★", +Armor_071_Upper:"Snowquill Tunic ★★", +Armor_072_Upper:"Snowquill Tunic ★★★", +Armor_073_Upper:"Snowquill Tunic ★★★★", +Armor_009_Lower:"Snowquill Trousers", +Armor_036_Lower:"Snowquill Trousers ★", +Armor_071_Lower:"Snowquill Trousers ★★", +Armor_072_Lower:"Snowquill Trousers ★★★", +Armor_073_Lower:"Snowquill Trousers ★★★★", +Armor_011_Head:"Flamebreaker Helm", +Armor_037_Head:"Flamebreaker Helm ★", +Armor_074_Head:"Flamebreaker Helm ★★", +Armor_075_Head:"Flamebreaker Helm ★★★", +Armor_076_Head:"Flamebreaker Helm ★★★★", +Armor_011_Upper:"Flamebreaker Armor", +Armor_037_Upper:"Flamebreaker Armor ★", +Armor_074_Upper:"Flamebreaker Armor ★★", +Armor_075_Upper:"Flamebreaker Armor ★★★", +Armor_076_Upper:"Flamebreaker Armor ★★★★", +Armor_011_Lower:"Flamebreaker Boots", +Armor_037_Lower:"Flamebreaker Boots ★", +Armor_074_Lower:"Flamebreaker Boots ★★", +Armor_075_Lower:"Flamebreaker Boots ★★★", +Armor_076_Lower:"Flamebreaker Boots ★★★★", +Armor_012_Head:"Stealth Mask", +Armor_042_Head:"Stealth Mask ★", +Armor_077_Head:"Stealth Mask ★★", +Armor_078_Head:"Stealth Mask ★★★", +Armor_079_Head:"Stealth Mask ★★★★", +Armor_012_Upper:"Stealth Chest Guard", +Armor_042_Upper:"Stealth Chest Guard ★", +Armor_077_Upper:"Stealth Chest Guard ★★", +Armor_078_Upper:"Stealth Chest Guard ★★★", +Armor_079_Upper:"Stealth Chest Guard ★★★★", +Armor_012_Lower:"Stealth Tights", +Armor_042_Lower:"Stealth Tights ★", +Armor_077_Lower:"Stealth Tights ★★", +Armor_078_Lower:"Stealth Tights ★★★", +Armor_079_Lower:"Stealth Tights ★★★★", +Armor_014_Head:"Climber's Bandanna", +Armor_083_Head:"Climber's Bandanna ★", +Armor_084_Head:"Climber's Bandanna ★★", +Armor_085_Head:"Climber's Bandanna ★★★", +Armor_086_Head:"Climber's Bandanna ★★★★", +Armor_014_Upper:"Climbing Gear", +Armor_083_Upper:"Climbing Gear ★", +Armor_084_Upper:"Climbing Gear ★★", +Armor_085_Upper:"Climbing Gear ★★★", +Armor_086_Upper:"Climbing Gear ★★★★", +Armor_014_Lower:"Climbing Boots", +Armor_083_Lower:"Climbing Boots ★", +Armor_084_Lower:"Climbing Boots ★★", +Armor_085_Lower:"Climbing Boots ★★★", +Armor_086_Lower:"Climbing Boots ★★★★", +Armor_017_Head:"Radiant Mask", +Armor_087_Head:"Radiant Mask ★", +Armor_088_Head:"Radiant Mask ★★", +Armor_089_Head:"Radiant Mask ★★★", +Armor_090_Head:"Radiant Mask ★★★★", +Armor_017_Upper:"Radiant Shirt", +Armor_087_Upper:"Radiant Shirt ★", +Armor_088_Upper:"Radiant Shirt ★★", +Armor_089_Upper:"Radiant Shirt ★★★", +Armor_090_Upper:"Radiant Shirt ★★★★", +Armor_017_Lower:"Radiant Tights", +Armor_087_Lower:"Radiant Tights ★", +Armor_088_Lower:"Radiant Tights ★★", +Armor_089_Lower:"Radiant Tights ★★★", +Armor_090_Lower:"Radiant Tights ★★★★", +Armor_020_Head:"Soldier's Helm", +Armor_095_Head:"Soldier's Helm ★", +Armor_096_Head:"Soldier's Helm ★★", +Armor_097_Head:"Soldier's Helm ★★★", +Armor_098_Head:"Soldier's Helm ★★★★", +Armor_020_Upper:"Soldier's Armor", +Armor_095_Upper:"Soldier's Armor ★", +Armor_096_Upper:"Soldier's Armor ★★", +Armor_097_Upper:"Soldier's Armor ★★★", +Armor_098_Upper:"Soldier's Armor ★★★★", +Armor_020_Lower:"Soldier's Greaves", +Armor_095_Lower:"Soldier's Greaves ★", +Armor_096_Lower:"Soldier's Greaves ★★", +Armor_097_Lower:"Soldier's Greaves ★★★", +Armor_098_Lower:"Soldier's Greaves ★★★★", +Armor_021_Head:"Ancient Helm", +Armor_099_Head:"Ancient Helm ★", +Armor_100_Head:"Ancient Helm ★★", +Armor_101_Head:"Ancient Helm ★★★", +Armor_102_Head:"Ancient Helm ★★★★", +Armor_021_Upper:"Ancient Cuirass", +Armor_099_Upper:"Ancient Cuirass ★", +Armor_100_Upper:"Ancient Cuirass ★★", +Armor_101_Upper:"Ancient Cuirass ★★★", +Armor_102_Upper:"Ancient Cuirass ★★★★", +Armor_021_Lower:"Ancient Greaves", +Armor_099_Lower:"Ancient Greaves ★", +Armor_100_Lower:"Ancient Greaves ★★", +Armor_101_Lower:"Ancient Greaves ★★★", +Armor_102_Lower:"Ancient Greaves ★★★★", +Armor_022_Head:"Bokoblin Mask", +Armor_043_Upper:"Old Shirt", +Armor_043_Lower:"Well-Worn Trousers", +Armor_044_Upper:"Warm Doublet", +Armor_045_Head:"Moblin Mask", +Armor_046_Head:"Rubber Helm", +Armor_103_Head:"Rubber Helm ★", +Armor_104_Head:"Rubber Helm ★★", +Armor_105_Head:"Rubber Helm ★★★", +Armor_106_Head:"Rubber Helm ★★★★", +Armor_046_Upper:"Rubber Armor", +Armor_103_Upper:"Rubber Armor ★", +Armor_104_Upper:"Rubber Armor ★★", +Armor_105_Upper:"Rubber Armor ★★★", +Armor_106_Upper:"Rubber Armor ★★★★", +Armor_046_Lower:"Rubber Tights", +Armor_103_Lower:"Rubber Tights ★", +Armor_104_Lower:"Rubber Tights ★★", +Armor_105_Lower:"Rubber Tights ★★★", +Armor_106_Lower:"Rubber Tights ★★★★", +Armor_048_Head:"Barbarian Helm", +Armor_111_Head:"Barbarian Helm ★", +Armor_112_Head:"Barbarian Helm ★★", +Armor_113_Head:"Barbarian Helm ★★★", +Armor_114_Head:"Barbarian Helm ★★★★", +Armor_048_Upper:"Barbarian Armor", +Armor_111_Upper:"Barbarian Armor ★", +Armor_112_Upper:"Barbarian Armor ★★", +Armor_113_Upper:"Barbarian Armor ★★★", +Armor_114_Upper:"Barbarian Armor ★★★★", +Armor_048_Lower:"Barbarian Wraps", +Armor_111_Lower:"Barbarian Wraps ★", +Armor_112_Lower:"Barbarian Wraps ★★", +Armor_113_Lower:"Barbarian Wraps ★★★", +Armor_114_Lower:"Barbarian Wraps ★★★★", +Armor_053_Head:"Gerudo Veil", +Armor_053_Upper:"Gerudo Top", +Armor_053_Lower:"Gerudo Sirwal", +Armor_055_Head:"Lizalfos Mask", +Armor_056_Head:"Lynel Mask", +Armor_115_Head:"Thunder Helm", +Armor_024_Head:"Diamond Circlet", +Armor_117_Head:"Diamond Circlet ★", +Armor_118_Head:"Diamond Circlet ★★", +Armor_119_Head:"Diamond Circlet ★★★", +Armor_120_Head:"Diamond Circlet ★★★★", +Armor_025_Head:"Ruby Circlet", +Armor_121_Head:"Ruby Circlet ★", +Armor_122_Head:"Ruby Circlet ★★", +Armor_123_Head:"Ruby Circlet ★★★", +Armor_124_Head:"Ruby Circlet ★★★★", +Armor_026_Head:"Sapphire Circlet", +Armor_125_Head:"Sapphire Circlet ★", +Armor_126_Head:"Sapphire Circlet ★★", +Armor_127_Head:"Sapphire Circlet ★★★", +Armor_128_Head:"Sapphire Circlet ★★★★", +Armor_027_Head:"Topaz Earrings", +Armor_129_Head:"Topaz Earrings ★", +Armor_130_Head:"Topaz Earrings ★★", +Armor_131_Head:"Topaz Earrings ★★★", +Armor_132_Head:"Topaz Earrings ★★★★", +Armor_028_Head:"Opal Earrings", +Armor_133_Head:"Opal Earrings ★", +Armor_134_Head:"Opal Earrings ★★", +Armor_135_Head:"Opal Earrings ★★★", +Armor_136_Head:"Opal Earrings ★★★★", +Armor_029_Head:"Amber Earrings", +Armor_137_Head:"Amber Earrings ★", +Armor_138_Head:"Amber Earrings ★★", +Armor_139_Head:"Amber Earrings ★★★", +Armor_140_Head:"Amber Earrings ★★★★", +Armor_116_Upper:"Champion's Tunic", +Armor_148_Upper:"Champion's Tunic ★", +Armor_149_Upper:"Champion's Tunic ★★", +Armor_150_Upper:"Champion's Tunic ★★★", +Armor_151_Upper:"Champion's Tunic ★★★★", +Armor_049_Lower:"Sand Boots", +Armor_152_Lower:"Sand Boots ★", +Armor_153_Lower:"Sand Boots ★★", +Armor_154_Lower:"Sand Boots ★★★", +Armor_155_Lower:"Sand Boots ★★★★", +Armor_140_Lower:"Snow Boots", +Armor_141_Lower:"Snow Boots", +Armor_156_Lower:"Snow Boots ★", +Armor_157_Lower:"Snow Boots ★★", +Armor_158_Lower:"Snow Boots ★★★", +Armor_159_Lower:"Snow Boots ★★★★", +Armor_160_Head:"Dark Hood", +Armor_160_Upper:"Dark Tunic", +Armor_160_Lower:"Dark Trousers", +Armor_170_Upper:"Nintendo Switch Shirt", +Armor_200_Head:"Cap of Time", +Armor_201_Head:"Cap of Time ★", +Armor_202_Head:"Cap of Time ★★", +Armor_203_Head:"Cap of Time ★★★", +Armor_204_Head:"Cap of Time ★★★★", +Armor_200_Upper:"Tunic of Time", +Armor_201_Upper:"Tunic of Time ★", +Armor_202_Upper:"Tunic of Time ★★", +Armor_203_Upper:"Tunic of Time ★★★", +Armor_204_Upper:"Tunic of Time ★★★★", +Armor_200_Lower:"Trousers of Time", +Armor_201_Lower:"Trousers of Time ★", +Armor_202_Lower:"Trousers of Time ★★", +Armor_203_Lower:"Trousers of Time ★★★", +Armor_204_Lower:"Trousers of Time ★★★★", +Armor_205_Head:"Cap of Wind", +Armor_206_Head:"Cap of Wind ★", +Armor_207_Head:"Cap of Wind ★★", +Armor_208_Head:"Cap of Wind ★★★", +Armor_209_Head:"Cap of Wind ★★★★", +Armor_205_Upper:"Tunic of Wind", +Armor_206_Upper:"Tunic of Wind ★", +Armor_207_Upper:"Tunic of Wind ★★", +Armor_208_Upper:"Tunic of Wind ★★★", +Armor_209_Upper:"Tunic of Wind ★★★★", +Armor_205_Lower:"Trousers of Wind", +Armor_206_Lower:"Trousers of Wind ★", +Armor_207_Lower:"Trousers of Wind ★★", +Armor_208_Lower:"Trousers of Wind ★★★", +Armor_209_Lower:"Trousers of Wind ★★★★", +Armor_210_Head:"Cap of Twilight", +Armor_211_Head:"Cap of Twilight ★", +Armor_212_Head:"Cap of Twilight ★★", +Armor_213_Head:"Cap of Twilight ★★★", +Armor_214_Head:"Cap of Twilight ★★★★", +Armor_210_Upper:"Tunic of Twilight", +Armor_211_Upper:"Tunic of Twilight ★", +Armor_212_Upper:"Tunic of Twilight ★★", +Armor_213_Upper:"Tunic of Twilight ★★★", +Armor_214_Upper:"Tunic of Twilight ★★★★", +Armor_210_Lower:"Trousers of Twilight", +Armor_211_Lower:"Trousers of Twilight ★", +Armor_212_Lower:"Trousers of Twilight ★★", +Armor_213_Lower:"Trousers of Twilight ★★★", +Armor_214_Lower:"Trousers of Twilight ★★★★", +Armor_215_Head:"Cap of the Sky", +Armor_216_Head:"Cap of the Sky ★", +Armor_217_Head:"Cap of the Sky ★★", +Armor_218_Head:"Cap of the Sky ★★★", +Armor_219_Head:"Cap of the Sky ★★★★", +Armor_215_Upper:"Tunic of the Sky", +Armor_216_Upper:"Tunic of the Sky ★", +Armor_217_Upper:"Tunic of the Sky ★★", +Armor_218_Upper:"Tunic of the Sky ★★★", +Armor_219_Upper:"Tunic of the Sky ★★★★", +Armor_215_Lower:"Trousers of the Sky", +Armor_216_Lower:"Trousers of the Sky ★", +Armor_217_Lower:"Trousers of the Sky ★★", +Armor_218_Lower:"Trousers of the Sky ★★★", +Armor_219_Lower:"Trousers of the Sky ★★★★", +Armor_220_Head:"Sheik's Mask", +Armor_221_Head:"Sheik's Mask ★", +Armor_222_Head:"Sheik's Mask ★★", +Armor_223_Head:"Sheik's Mask ★★★", +Armor_224_Head:"Sheik's Mask ★★★★", +Armor_225_Head:"Fierce Deity's Mask", +Armor_226_Head:"Fierce Deity's Mask ★", +Armor_227_Head:"Fierce Deity's Mask ★★", +Armor_228_Head:"Fierce Deity's Mask ★★★", +Armor_229_Head:"Fierce Deity's Mask ★★★★", +Armor_225_Upper:"Fierce Deity's Armor", +Armor_226_Upper:"Fierce Deity's Armor ★", +Armor_227_Upper:"Fierce Deity's Armor ★★", +Armor_228_Upper:"Fierce Deity's Armor ★★★", +Armor_229_Upper:"Fierce Deity's Armor ★★★★", +Armor_225_Lower:"Fierce Deity's Boots", +Armor_226_Lower:"Fierce Deity's Boots ★", +Armor_227_Lower:"Fierce Deity's Boots ★★", +Armor_228_Lower:"Fierce Deity's Boots ★★★", +Armor_229_Lower:"Fierce Deity's Boots ★★★★", +Armor_230_Head:"Cap of the Hero", +Armor_231_Head:"Cap of the Hero ★", +Armor_232_Head:"Cap of the Hero ★★", +Armor_233_Head:"Cap of the Hero ★★★", +Armor_234_Head:"Cap of the Hero ★★★★", +Armor_230_Upper:"Tunic of the Hero", +Armor_231_Upper:"Tunic of the Hero ★", +Armor_232_Upper:"Tunic of the Hero ★★", +Armor_233_Upper:"Tunic of the Hero ★★★", +Armor_234_Upper:"Tunic of the Hero ★★★★", +Armor_230_Lower:"Trousers of the Hero", +Armor_231_Lower:"Trousers of the Hero ★", +Armor_232_Lower:"Trousers of the Hero ★★", +Armor_233_Lower:"Trousers of the Hero ★★★", +Armor_234_Lower:"Trousers of the Hero ★★★★", +Armor_500_Upper:"Mini?", +Armor_501_Lower:"Mini?", +Armor_501_Upper:"Mini?", +Armor_502_Upper:"Mini?" +}}, + +{id:'materials',items:{ +Item_Fruit_A:"Apple", +Item_Fruit_B:"Wildberry", +Item_Fruit_C:"Voltfruit", +Item_Fruit_D:"Hearty Durian", +Item_Fruit_E:"Fleet-Lotus Seeds", +Item_Fruit_E_00:"Fleet-Lotus Seeds x0", +Item_Fruit_F:"Hydromelon", +Item_Fruit_G:"Palm Fruit", +Item_Fruit_H:"Mighty Bananas", +Item_Fruit_I:"Spicy Pepper", +Item_Fruit_J:"Fortified Pumpkin", +Item_Fruit_K:"Acorn", +Item_Fruit_L:"Chickaloo Tree Nut", +Item_Mushroom_A:"Stamella Mushroom", +Item_MushroomGet_A:"Stamella Mushroom", +Item_Mushroom_B:"Chillshroom", +Item_MushroomGet_B:"Chillshroom", +Item_Mushroom_C:"Sunshroom", +Item_MushroomGet_C:"Sunshroom", +Item_Mushroom_D:"Rushroom", +Item_MushroomGet_D:"Rushroom", +Item_Mushroom_E:"Hylian Mushroom", +Item_MushroomGet_E:"Hylian Mushroom", +Item_Mushroom_F:"Hearty Truffle", +Item_Mushroom_F_00:"Hearty Truffle x0", +Item_MushroomGet_F:"Hearty Truffle", +Item_Mushroom_H:"Zapshroom", +Item_MushroomGet_H:"Zapshroom", +Item_Mushroom_J:"Silent Shroom", +Item_MushroomGet_J:"Silent Shroom", +Item_Mushroom_L:"Razorshroom", +Item_MushroomGet_L:"Razorshroom", +Item_Mushroom_M:"Ironshroom", +Item_MushroomGet_M:"Ironshroom", +Item_Mushroom_N:"Big Hearty Truffle", +Item_MushroomGet_N:"Big Hearty Truffle", +Item_Mushroom_N_00:"Big Hearty Truffle x0", +Item_Mushroom_O:"Endura Shroom", +Item_MushroomGet_O:"Endura Shroom", +Item_Plant_A:"Hyrule Herb", +Item_PlantGet_A:"Hyrule Herb", +Item_Plant_B:"Hearty Radish", +Item_PlantGet_B:"Hearty Radish", +Item_Plant_C:"Big Hearty Radish", +Item_PlantGet_C:"Big Hearty Radish", +Item_Plant_E:"Cool Safflina", +Item_PlantGet_E:"Cool Safflina", +Item_Plant_F:"Warm Safflina", +Item_PlantGet_F:"Warm Safflina", +Item_Plant_G:"Mighty Thistle", +Item_PlantGet_G:"Mighty Thistle", +Item_Plant_H:"Armoranth", +Item_PlantGet_H:"Armoranth", +Item_Plant_I:"Blue Nightshade", +Item_PlantGet_I:"Blue Nightshade", +Item_Plant_J:"Silent Princess", +Item_PlantGet_J:"Silent Princess", +Item_Plant_L:"Electric Safflina", +Item_PlantGet_L:"Electric Safflina", +Item_Plant_M:"Swift Carrot", +Item_PlantGet_M:"Swift Carrot", +Item_Plant_O:"Swift Violet", +Item_PlantGet_O:"Swift Violet", +Item_Plant_Q:"Endura Carrot", +Item_PlantGet_Q:"Endura Carrot", +Item_Meat_01:"Raw Meat", +Item_Meat_02:"Raw Prime Meat", +Item_Meat_06:"Raw Bird Drumstick", +Item_Meat_07:"Raw Bird Thigh", +Item_Meat_11:"Raw Gourmet Meat", +Item_Meat_12:"Raw Whole Meat", +Item_FishGet_A:"Hylian Bass", +Item_FishGet_B:"Hearty Bass", +Item_FishGet_C:"Chillfin Trout", +Item_FishGet_D:"Voltfin Trout", +Item_FishGet_E:"Mighty Carp", +Item_FishGet_F:"Mighty Porgy", +Item_FishGet_G:"Armored Porgy", +Item_FishGet_H:"Armored Carp", +Item_FishGet_I:"Hearty Salmon", +Item_FishGet_J:"Sizzlefin Trout", +Item_FishGet_K:"Hearty Blueshell Snail", +Item_FishGet_L:"Staminoka Bass", +Item_FishGet_M:"Sneaky River Snail", +Item_FishGet_X:"Stealthfin Trout", +Item_FishGet_Z:"Sanke Carp", +Animal_Insect_A:"Hot-Footed Frog", +Item_InsectGet_A:"Hot-Footed Frog", +Animal_Insect_B:"Tireless Frog", +Item_InsectGet_B:"Tireless Frog", +Animal_Insect_C:"Cold Darner", +Item_InsectGet_C:"Cold Darner", +Animal_Insect_E:"Sunset Firefly", +Item_InsectGet_E:"Sunset Firefly", +Animal_Insect_F:"Fairy", +Item_InsectGet_F:"Fairy", +Animal_Insect_G:"Bladed Rhino Beetle", +Item_InsectGet_G:"Bladed Rhino Beetle", +Animal_Insect_H:"Restless Cricket", +Item_InsectGet_H:"Restless Cricket", +Animal_Insect_I:"Electric Darner", +Item_InsectGet_I:"Electric Darner", +Animal_Insect_K:"Razorclaw Crab", +Item_InsectGet_K:"Razorclaw Crab", +Animal_Insect_M:"Hearty Lizard", +Item_InsectGet_M:"Hearty Lizard", +Animal_Insect_N:"Winterwing Butterfly", +Item_InsectGet_N:"Winterwing Butterfly", +Animal_Insect_O:"Ironshell Crab", +Item_InsectGet_O:"Ironshell Crab", +Animal_Insect_P:"Rugged Rhino Beetle", +Item_InsectGet_P:"Rugged Rhino Beetle", +Animal_Insect_Q:"Summerwing Butterfly", +Item_InsectGet_Q:"Summerwing Butterfly", +Animal_Insect_R:"Thunderwing Butterfly", +Item_InsectGet_R:"Thunderwing Butterfly", +Animal_Insect_S:"Hightail Lizard", +Item_InsectGet_S:"Hightail Lizard", +Animal_Insect_T:"Warm Darner", +Item_InsectGet_T:"Warm Darner", +Animal_Insect_X:"Fireproof Lizard", +Item_InsectGet_X:"Fireproof Lizard", +Animal_Insect_Z:"Bright-Eyed Crab", +Item_InsectGet_Z:"Bright-Eyed Crab", +Animal_Insect_AA:"Energetic Rhino Beetle", +Item_InsectGet_AA:"Energetic Rhino Beetle", +Animal_Insect_AB:"Smotherwing Butterfly", +Item_InsectGet_AB:"Smotherwing Butterfly", +BeeHome:"Courser Bee Honey", +Obj_FireWoodBundle:"Wood", +Item_Enemy_00:"Bokoblin Horn", +Item_Enemy_01:"Bokoblin Fang", +Item_Enemy_02:"Bokoblin Guts", +Item_Enemy_03:"Lizalfos Horn", +Item_Enemy_04:"Lizalfos Talon", +Item_Enemy_05:"Lizalfos Tail", +Item_Enemy_06:"Moblin Horn", +Item_Enemy_07:"Moblin Fang", +Item_Enemy_08:"Moblin Guts", +Item_Enemy_12:"Lynel Horn", +Item_Enemy_13:"Lynel Hoof", +Item_Enemy_14:"Lynel Guts", +Item_Enemy_15:"Red Chuchu Jelly", +Item_Enemy_16:"Yellow Chuchu Jelly", +Item_Enemy_17:"White Chuchu Jelly", +Item_Enemy_18:"Keese Wing", +Item_Enemy_19:"Keese Eyeball", +Item_Enemy_20:"Octorok Tentacle", +Item_Enemy_21:"Tentacle Eyeball", +Item_Enemy_24:"Molduga Fin", +Item_Enemy_25:"Molduga Guts", +Item_Enemy_26:"Ancient Gear", +Item_Enemy_27:"Ancient Screw", +Item_Enemy_28:"Ancient Spring", +Item_Enemy_29:"Ancient Shaft", +Item_Enemy_30:"Ancient Core", +Item_Enemy_31:"Giant Ancient Core", +Item_Enemy_32:"Hinox Toenail", +Item_Enemy_33:"Hinox Tooth", +Item_Enemy_34:"Hinox Guts", +Item_Enemy_38:"Dinraal's Scale", +Item_Enemy_39:"Dinraal's Claw", +Item_Enemy_40:"Chuchu Jelly", +Item_Enemy_41:"Red Lizalfos Tail", +Item_Enemy_42:"Icy Lizalfos Tail", +Item_Enemy_43:"Yellow Lizalfos Tail", +Item_Enemy_44:"Fire Keese Wing", +Item_Enemy_45:"Electric Keese Wing", +Item_Enemy_46:"Ice Keese Wing", +Item_Enemy_47:"Shard of Dinraal's Fang", +Item_Enemy_48:"Shard of Dinraal's Horn", +Item_Enemy_49:"Naydra's Scale", +Item_Enemy_50:"Naydra's Claw", +Item_Enemy_51:"Shard of Naydra's Fang", +Item_Enemy_52:"Shard of Naydra's Horn", +Item_Enemy_53:"Farosh's Scale", +Item_Enemy_54:"Farosh's Claw", +Item_Enemy_55:"Shard of Farosh's Fang", +Item_Enemy_56:"Shard of Farosh's Horn", +Item_Enemy_57:"Octo Balloon", +Item_Enemy_Put_57:"Octo Balloon", +Item_Material_01:"Cane Sugar", +Item_Material_02:"Goron Spice", +Item_Material_03:"Hylian Rice", +Item_Material_04:"Bird Egg", +Item_Material_05:"Fresh Milk", +Item_Material_06:"Goat Butter", +Item_Material_07:"Tabantha Wheat", +Item_Material_08:"Monster Extract", +Item_Ore_A:"Diamond", +Item_Ore_A_00:"Diamant x0", +Item_Ore_B:"Ruby", +Item_Ore_C:"Sapphire", +Item_Ore_D:"Topaz", +Item_Ore_E:"Opal", +Item_Ore_F:"Amber", +Item_Ore_G:"Luminous Stone", +Item_Ore_H:"Rock Salt", +Item_Ore_I:"Flint", +Item_Ore_J:"Star Fragment" +}}, + +{id:'food',items:{ +Item_Boiled_01:"Hard-Boiled Egg", +Item_ChilledFish_01:"Frozen Bass", +Item_ChilledFish_02:"Frozen Hearty Salmon", +Item_ChilledFish_03:"Frozen Trout", +Item_ChilledFish_04:"Frozen Carp", +Item_ChilledFish_05:"Frozen Porgy", +Item_ChilledFish_06:"Frozen Hearty Bass", +Item_ChilledFish_07:"Frozen Crab", +Item_ChilledFish_08:"Frozen River Snail", +Item_ChilledFish_09:"Icy Hearty Blueshell Snail", +Item_RoastFish_01:"Roasted Bass", +Item_RoastFish_02:"Roasted Hearty Bass", +Item_RoastFish_03:"Roasted Trout", +Item_RoastFish_04:"Roasted Hearty Salmon", +Item_RoastFish_07:"Roasted Carp", +Item_RoastFish_09:"Roasted Porgy", +Item_RoastFish_11:"Blueshell Escargot", +Item_RoastFish_13:"Sneaky River Escargot", +Item_RoastFish_15:"Blackened Crab", +Item_Roast_01:"Seared Steak", +Item_Roast_02:"Roasted Bird Drumstick", +Item_Roast_03:"Baked Apple", +Item_Roast_04:"Toasty Stamella Shroom", +Item_Roast_05:"Toasted Hearty Truffle", +Item_Roast_06:"Toasty Hylian Shroom", +Item_Roast_07:"Roasted Wildberry", +Item_Roast_08:"Roasted Voltfruit", +Item_Roast_09:"Roasted Hearty Durian", +Item_Roast_10:"Baked Palm Fruit", +Item_Roast_11:"Roasted Mighty Bananas", +Item_Roast_12:"Roasted Hydromelon", +Item_Roast_13:"Charred Pepper", +Item_Roast_15:"Baked Fortified Pumpkin", +Item_Roast_16:"Roasted Lotus Seed", +Item_Roast_18:"Roasted Radish", +Item_Roast_19:"Roasted Big Radish", +Item_Roast_24:"Roasted Swift Carrot", +Item_Roast_27:"Roasted Mighty Thistle", +Item_Roast_28:"Roasted Armoranth", +Item_Roast_31:"Toasty Chillshroom", +Item_Roast_32:"Toasty Sunshroom", +Item_Roast_33:"Toasty Zapshroom", +Item_Roast_36:"Toasty Rushroom", +Item_Roast_37:"Toasty Razorshroom", +Item_Roast_38:"Toasty Ironshroom", +Item_Roast_39:"Toasty Silent Shroom", +Item_Roast_40:"Seared Prime Steak", +Item_Roast_41:"Roasted Bird Thigh", +Item_Roast_45:"Seared Gourmet Steak", +Item_Roast_46:"Roasted Whole Bird", +Item_Roast_48:"Roasted Acorn", +Item_Roast_49:"Toasted Big Heart Truffle", +Item_Roast_50:"Roasted Endura Carrot", +Item_Roast_51:"Campfire Egg", +Item_Roast_52:"Roasted Tree Nut", +Item_Roast_53:"Toasty Endura Shroom", +Item_Chilled_01:"Icy Meat", +Item_Chilled_02:"Icy Prime Meat", +Item_Chilled_03:"Icy Gourmet Meat", +Item_Chilled_04:"Frozen Bird Drumstick", +Item_Chilled_05:"Frozen Bird Thigh", +Item_Chilled_06:"Frozen Whole Bird", +Item_Cook_A_01:"Mushroom Skewer", +Item_Cook_A_02:"Steamed Mushrooms", +Item_Cook_A_03:"Steamed Fruit", +Item_Cook_A_04:"Steamed Fish", +Item_Cook_A_05:"Steamed Meat", +Item_Cook_A_07:"Fruit and Mushroom Mix", +Item_Cook_A_08:"Fish and Mushroom Skewer", +Item_Cook_A_09:"Meat and Mushroom Skewer", +Item_Cook_A_10:"Omelet", +Item_Cook_A_11:"Glazed Mushroom", +Item_Cook_A_12:"Glazed Meat", +Item_Cook_A_13:"Glazed Seafood", +Item_Cook_A_14:"Glazed Veggies", +Item_Cook_B_01:"Fried Wild Greens", +Item_Cook_B_02:"Simmered Fruits", +Item_Cook_B_05:"Fish Skewer", +Item_Cook_B_06:"Meat Skewer", +Item_Cook_B_11:"Copious Fried Wild Greens", +Item_Cook_B_12:"Copious Simmered Fruits", +Item_Cook_B_13:"Copious Mushroom Skewers", +Item_Cook_B_15:"Copious Seafood Skewers", +Item_Cook_B_16:"Copious Meat Skewers", +Item_Cook_B_17:"Meat and Seafood Fry", +Item_Cook_B_18:"Prime Meat and Seafood Fry", +Item_Cook_B_19:"Gourmet Meat and Seafood Fry", +Item_Cook_B_20:"Meat-Stuffed Pumpkin", +Item_Cook_B_21:"Sautéed Peppers", +Item_Cook_B_22:"Sautéed Nuts", +Item_Cook_B_23:"Seafood Skewers", +Item_Cook_C_16:"Fairy Tonic", +Item_Cook_C_17:"Elixir", +Item_Cook_D_01:"Salt-Grilled Mushrooms", +Item_Cook_D_02:"Salt-Grilled Greens", +Item_Cook_D_03:"Salt-Grilled Fish", +Item_Cook_D_04:"Salt-Grilled Meat", +Item_Cook_D_05:"Salt-Grilled Prime Meat", +Item_Cook_D_06:"Salt-Grilled Gourmet Meat", +Item_Cook_D_07:"Pepper Steak", +Item_Cook_D_08:"Pepper Seafood", +Item_Cook_D_09:"Salt-Grilled Crab", +Item_Cook_D_10:"Crab Stir-Fry", +Item_Cook_E_01:"Poultry Pilaf", +Item_Cook_E_02:"Prime Poultry Pilaf", +Item_Cook_E_03:"Gourmet Poultry Pilaf", +Item_Cook_E_04:"Fried Egg and Rice", +Item_Cook_F_01:"Creamy Meat Soup", +Item_Cook_F_02:"Creamy Seafood Soup", +Item_Cook_F_03:"Veggie Cream Soup", +Item_Cook_F_04:"Creamy Heart Soup", +Item_Cook_G_02:"Seafood Rice Balls", +Item_Cook_G_03:"Veggie Rice Balls", +Item_Cook_G_04:"Mushroom Rice Balls", +Item_Cook_G_05:"Meat and Rice Bowl", +Item_Cook_G_06:"Prime Meat and Rice Bowl", +Item_Cook_G_09:"Gourmet Meat and Rice Bowl", +Item_Cook_G_10:"Seafood Fried Rice", +Item_Cook_G_11:"Curry Pilaf", +Item_Cook_G_12:"Mushroom Risotto", +Item_Cook_G_13:"Vegetable Risotto", +Item_Cook_G_14:"Salmon Risotto", +Item_Cook_G_15:"Meaty Rice Balls", +Item_Cook_G_16:"Crab Omelet with Rice", +Item_Cook_G_17:"Crab Risotto", +Item_Cook_H_01:"Seafood Meunière", +Item_Cook_H_02:"Porgy Meunière", +Item_Cook_H_03:"Salmon Meunière", +Item_Cook_I_01:"Fruit Pie", +Item_Cook_I_02:"Apple Pie", +Item_Cook_I_03:"Egg Tart", +Item_Cook_I_04:"Meat Pie", +Item_Cook_I_05:"Carrot Cake", +Item_Cook_I_06:"Pumpkin Pie", +Item_Cook_I_07:"Hot Buttered Apple", +Item_Cook_I_08:"Honeyed Apple", +Item_Cook_I_09:"Honeyed Fruits", +Item_Cook_I_10:"Plain Crepe", +Item_Cook_I_11:"Wildberry Crepe", +Item_Cook_I_12:"Nutcake", +Item_Cook_I_13:"Fried Bananas", +Item_Cook_I_14:"Egg Pudding", +Item_Cook_I_15:"Fish Pie", +Item_Cook_I_16:"Honey Candy", +Item_Cook_I_17:"Honey Crepe", +Item_Cook_J_01:"Curry Rice", +Item_Cook_J_02:"Vegetable Curry", +Item_Cook_J_03:"Seafood Curry", +Item_Cook_J_04:"Poultry Curry", +Item_Cook_J_05:"Prime Poultry Curry", +Item_Cook_J_06:"Meat Curry", +Item_Cook_J_07:"Prime Meat Curry", +Item_Cook_J_08:"Gourmet Poultry Curry", +Item_Cook_J_09:"Gourmet Meat Curry", +Item_Cook_K_01:"Meat Stew", +Item_Cook_K_02:"Prime Meat Stew", +Item_Cook_K_03:"Pumpkin Stew", +Item_Cook_K_04:"Clam Chowder", +Item_Cook_K_05:"Gourmet Meat Stew", +Item_Cook_K_06:"Cream of Mushroom Soup", +Item_Cook_K_07:"Cream of Vegetable Soup", +Item_Cook_K_08:"Carrot Stew", +Item_Cook_K_09:"Milk", +Item_Material_05_00:"Milk x0", +Item_Cook_L_01:"Monster Stew", +Item_Cook_L_02:"Monster Soup", +Item_Cook_L_03:"Monster Cake", +Item_Cook_L_04:"Monster Rice Balls", +Item_Cook_L_05:"Monster Curry", +Item_Cook_M_01:"Wheat Bread", +Item_Cook_N_01:"Seafood Paella", +Item_Cook_N_02:"Fruitcake", +Item_Cook_N_03:"Vegetable Omelet", +Item_Cook_N_04:"Mushroom Omelet", +Item_Cook_O_01:"Dubious Food", +Item_Cook_O_02:"Rock-Hard Food", +Item_Cook_P_01:"Fragrant Mushroom Sauté", +Item_Cook_P_02:"Herb Sauté", +Item_Cook_P_03:" Spiced Meat Skewer", +Item_Cook_P_04:"Prime Spiced Meat Skewer", +Item_Cook_P_05:"Gourmet Spiced Meat Skewer" +}}, + +{id:'other',items:{ +Obj_DungeonClearSeal:"Spirit Orb", +Obj_KorokNuts:"Korok Seed", +PlayerStole2:"Paraglider", +Obj_ProofBook:"Classified Envelope", +Obj_DRStone_Get:"Sheikah Slate", +Obj_HeroSoul_Zora:"Mipha's Grace", +Obj_HeroSoul_Gerudo:"Urbosa's Fury", +Obj_HeroSoul_Goron:"Daruk's Protection", +Obj_HeroSoul_Rito:"Revali's Gale", +Obj_Maracas:"Hestu's Maracas", +Obj_ProofKorok:"Hestu's Gift", +Obj_ProofSandwormKiller:"Medal of Honor: Molduga", +Obj_ProofGiantKiller:"Medal of Honor: Hinox", +Obj_ProofGolemKiller:"Medal of Honor: Talus", +KeySmall:"Small Key", +Obj_Armor_115_Head:"Thunder Helm", +GameRomHorseReins_00:"Stable Bridle", +GameRomHorseReins_01:"Traveler's Bridle", +GameRomHorseReins_02:"Royal Reins", +GameRomHorseReins_03:"Knight's Bridle", +GameRomHorseReins_04:"Monster Bridle", +GameRomHorseReins_05:"Extravagant Bridle", +GameRomHorseSaddle_00:"Stable Saddle", +GameRomHorseSaddle_01:"Traveler's Saddle", +GameRomHorseSaddle_02:"Royal Saddle", +GameRomHorseSaddle_03:"Knight's Saddle", +GameRomHorseSaddle_04:"Monster Saddle", +GameRomHorseSaddle_05:"Extravagant Saddle", + +GameRomHorse00S:"Donkey", +GameRomHorseNushi:"Lord of the Mountain", +WolfLink:"Wolf Link", +GameRomHorseEpona:"Epona", +GameRomHorseBone:"Stalhorse", +Animal_Bear_B:"Grizzlemaw Bear", +Animal_Bear_A:"Honeyvore Bear", +GameRomHorse00L:"Giant Horse", +GameRomHorseZelda:"Royal White Stallion", +Obj_HeartUtuwa_A_01:"Heart Container", +Obj_StaminaUtuwa_A_01:"Stamina Vessel", +Obj_Mineral_A_01:"Mineral Deposit", +Obj_Mineral_B_01:"Rare Mineral Deposit", +Obj_Mineral_C_01:"Luminous Stone Deposit", +Dm_Npc_Zelda_Sibyl :"Zelda NPC (White Dress)" +}} +] + +}; + diff --git a/zelda-botw/zelda-botw.js b/zelda-botw/zelda-botw.js new file mode 100644 index 0000000..ebea863 --- /dev/null +++ b/zelda-botw/zelda-botw.js @@ -0,0 +1,402 @@ +/* + The legend of Zelda: Breath of the wild v20170508 + by Marc Robledo 2017 +*/ + +var currentEditingItem=0; +SavegameEditor={ + Name:'The legend of Zelda: Breath of the wild', + Filename:'game_data.sav', + + /* Constants */ + Constants:{ + MAX_ITEMS:410, + STRING_SIZE:0x80 + }, + + /* Offsets */ + OffsetsAll:{ + FILESIZE: [896976, 897160, 897112], + /* header v1.0 v1.1 v1.2 */ + RUPEES: [0x23149bf8, 0x00e0a0, 0x00e110, 0x00e110], + MONS: [0xce7afed3, 0x0bc480, 0x0bc558, 0x0bc538], + ITEMS: [0x5f283289, 0x052828, 0x0528d8, 0x0528c0], + ITEMS_QUANTITY: [0x6a09fc59, 0x063340, 0x0633f0, 0x0633d8], + + MOD_WEAPON_TYPES: [0x57ee221d, 0x050328, 0x0503d8, 0x0503c0], + MOD_WEAPON_VALUES: [0xa6d926bc, 0x0a9ca8, 0x0a9d78, 0x0a9d58], + MOD_BOW_TYPES: [0x0cbf052a, 0x0045f0, 0x0045f8, 0x0045f8], + MOD_BOW_VALUES: [0x1e3fd294, 0x00a8e0, 0x00a940, 0x00a940], + MOD_SHIELD_TYPES: [0xc5238d2b, 0x0b5810, 0x0b58e8, 0x0b58c8], + MOD_SHIELD_VALUES: [0x69f17e8a, 0x063218, 0x0632c8, 0x0632b0], + + HORSE_SADDLES: [0x333aa6e5, 0x03d0e8, 0x03d190, 0x03d190], + HORSE_REINS: [0x6150c6be, 0x060508, 0x0605b8, 0x0605a0], + HORSE_NAMES: [0x7b74e117, 0x070320, 0x0703c0, 0x0703a8], + HORSE_MANES: [0x9c6cfd3f, 0x0a6478, 0x0a6538, 0x0a6520], + HORSE_TYPES: [0xc247b696, 0x0b46f8, 0x0b47d8, 0x0b47b8], + HORSE_BONDS: [0xe1a0ca54, 0x0c3670, 0x0c3738, 0x0c3710], /* max=0x3f80 */ + + KOROK_SEED_COUNTER: [0x8a94e07a, 0x076148, 0x0761f8, 0x0761e0] + }, + + + + /* private functions */ + _searchHeader:function(hdr){ + for(var i=0x14; i'+itemId+'' + }, + _getItemCategory:function(itemId){ + for(var i=0; i#'+i+' '+this._getItemTranslation(itemNameId)+' '), + inputNumber('item'+i, 0, this._getItemMaximumQuantity(itemNameId), tempFile.readInt(this._getItemQuantityOffset(i))) + ) + }, + + addItem:function(){ + var i=0; + while(document.getElementById('number-item'+i)){ + i++; + } + if(i=0x24d7197c && hdr<=0xf450426c + txt+=_toHexInt(hdr)+','; + if((korokCounter+1)%8==0) + txt+='\n'; + korokCounter++; + } + //tempFile.writeInt(offset,1); + } + + txt+='-----\n'; + txt+='found '+korokCounter+' matches\n'; + textarea.value=txt;*/ +} \ No newline at end of file