function countGeneItems(geneItems, items_crew, items_stamp, items_subbg, items_bgm, items_nemsys) { let obtained = 0, total = 0; if('crew' in geneItems.items) { obtained += items_crew.filter(crew => geneItems.items.crew.includes(crew['id'])).length total += geneItems.items['crew'].length } if('stamp' in geneItems.items) { obtained += items_stamp.filter(stamp => geneItems.items.stamp.includes(stamp['id'] / 4)).length total += geneItems.items['stamp'].length } if('subbg' in geneItems.items) { obtained += items_subbg.filter(subbg => geneItems.items.subbg.includes(subbg['id'])).length total += geneItems.items['subbg'].length } if('bgm' in geneItems.items) { obtained += items_bgm.filter(bgm => geneItems.items.bgm.includes(bgm['id'])).length total += geneItems.items['bgm'].length } if('nemsys' in geneItems.items) { obtained += items_nemsys.filter(nemsys => geneItems.items.nemsys.includes(nemsys['id'])).length total += geneItems.items['nemsys'].length } return [obtained, total] } function loadImages(itemList, itemType, userItems) { itemList.forEach(item => { let itemBrightness = userItems.find(userItem => userItem.id == ((itemType !== 'stamp') ? item : (item * 4))) != undefined ? 1 : 0.25 let imageUrl = 'static/asset/valgene_item/item_' + itemType + '_' + item + '.png' $.get(imageUrl, function(data, textStatus) { if (textStatus == "success") { $('.' + itemType + '-items').append('') } }) }) } async function getGeneratorEditionItems(gene_edition, itemSet) { let valGeneData = await $.getJSON( "static/asset/json/valgene_data.json", function(data) { return data }) if(gene_edition === 'valkyrie') { return valGeneData.valgene.find(valgene => valgene.id === itemSet) } else { return valGeneData.pregene.find(pregene => pregene.id === itemSet) } } async function loadItems(itemSet, gene_edition, items_crew, items_stamp, items_subbg, items_bgm, items_nemsys) { let geneItems = await getGeneratorEditionItems(gene_edition, itemSet) let itemCounts = countGeneItems(geneItems, items_crew, items_stamp, items_subbg, items_bgm, items_nemsys) if(itemCounts[0] >= itemCounts[1]) $('#pregene-roll').attr('disabled', 'disabled') $('.count').text('Unlocked items: ' + itemCounts[0] + "/" + itemCounts[1]) if(itemSet === 0) { $('.setinfo').append('

These items are only usable in Japan. Change region to Japan in the ea3-config.xml file.

') } else { $('.jpn-excl').remove() } if('crew' in geneItems.items) { $('.item_banners').append('

Nemsys Crew

') $('.item_banners').append('

') loadImages(geneItems.items['crew'].sort(function(a, b){return parseInt(a.id) - parseInt(b.id)}), 'crew', items_crew) } if('stamp' in geneItems.items) { $('.item_banners').append('

Appeal Stamp

') $('.item_banners').append('

') loadImages(geneItems.items['stamp'].sort(function(a, b){return parseInt(a.id) - parseInt(b.id)}), 'stamp', items_stamp) } if('subbg' in geneItems.items) { $('.item_banners').append('

Submonitor BG

') $('.item_banners').append('

') loadImages(geneItems.items['subbg'].sort(function(a, b){return parseInt(a.id) - parseInt(b.id)}), 'bg', items_subbg) } if('bgm' in geneItems.items) { $('.item_banners').append('

BGM

') $('.item_banners').append('

') loadImages(geneItems.items['bgm'].sort(function(a, b){return parseInt(a.id) - parseInt(b.id)}), 'bgm', items_bgm) } if('nemsys' in geneItems.items) { $('.item_banners').append('

Nemsys

') $('.item_banners').append('

') loadImages(geneItems.items['nemsys'].sort(function(a, b){return parseInt(a.id) - parseInt(b.id)}), 'nemsys', items_nemsys) } } async function loadValgeneData(gene_edition) { let valGeneData = await $.getJSON( "static/asset/json/valgene_data.json", function(data) { return data }) if(gene_edition === 'valkyrie') { for(const valGeneDataIndex in valGeneData.valgene) { $('#set_select').append('') } } else { for(const pregeneDataIndex in valGeneData.pregene) { $('#set_select').append('') } } $('#set_select').val($("#set_select option").length - 1) } $(document).ready(function() { if(document.getElementById("data-pass-unlock-all").innerText === 'true') { $('.card-content').text("The \"Unlock All Valkyrie and Premium Items\" option is enabled. You wouldn't need this.") $('#pregene-roll').attr('disabled') return 0; } $('#roll-result').on('click', function(){location.reload()}) $('html').keypress(function(e){ if([13, 27, 32].includes(e.keyCode) && $('.modal.is-active').length > 0) { location.reload() } }) $('.input').hide() $('.button').addClass('is-link') let refid = document.getElementsByName("refid")[0].value let items_crew = JSON.parse(document.getElementById("data-pass-crew").innerText); let items_stamp = JSON.parse(document.getElementById("data-pass-stamp").innerText); let items_subbg = JSON.parse(document.getElementById("data-pass-subbg").innerText); let items_bgm = JSON.parse(document.getElementById("data-pass-bgm").innerText); let items_nemsys = JSON.parse(document.getElementById("data-pass-nemsys").innerText); let gene_edition = document.getElementById("generator-edition").innerText; loadValgeneData(gene_edition) loadItems(1, gene_edition, items_crew, items_stamp, items_subbg, items_bgm, items_nemsys) $('#set_select').change(function() { $('.count').text('') $('.item_banners').empty() loadItems(parseInt($('#set_select').val()), gene_edition, items_crew, items_stamp, items_subbg, items_bgm, items_nemsys) }) $('#pregene-roll').on('click', async function() { $('#pregene-roll').attr('disabled', 'disabled') if(gene_edition === 'premium' && window.location.search.match(/(premium)/g) != undefined) { let geneItems = await getGeneratorEditionItems(gene_edition, parseInt($('#set_select').val())) console.log(geneItems) if(countGeneItems(geneItems, items_crew, items_stamp, items_subbg, items_bgm, items_nemsys)[0] >= countGeneItems(geneItems, items_crew, items_stamp, items_subbg, items_bgm, items_nemsys)[1]) { alert("All items have been unlocked already.") } else { emit('preGeneRoll', { set: parseInt(document.getElementById('set_select').value), refid: refid, items: items_crew.concat(items_stamp, items_subbg, items_bgm, items_nemsys) }).then( function() { $.getJSON("static/asset/logs/preGeneRollResult.json", function(data) { $('.modal-card-head').append('') $('.modal-card-body').append('') $('.modal-card-foot').append('') $('.modal').addClass('is-active') }) }) } } else { alert("Not premium generator: a precaution") } }) })