diff --git a/sdvx@asphyxia/index.ts b/sdvx@asphyxia/index.ts
index c822d4b..05bbb1b 100644
--- a/sdvx@asphyxia/index.ts
+++ b/sdvx@asphyxia/index.ts
@@ -31,7 +31,7 @@ export function register() {
R.GameCode('KFC');
R.Config('sdvx_eg_root_dir', { type: 'string', needRestart: true, default: '', name: 'Exceed Gear Data Directory', desc: 'The root directory of your SDVX Exceed Gear game files (for asset copying)'});
- R.Config('unlock_all_valk_items', { type: 'boolean', default: false, name:'Unlock All Valkyrie Items', desc: 'Unlock Nemsys, BGM, Submonitor BG and Stamp Items (Valk crews not included; check \'unlock all navigators\' option)'});
+ R.Config('unlock_all_valk_items', { type: 'boolean', default: false, name:'Unlock All Valkyrie and Premium Items', desc: 'Unlock Nemsys, BGM, Submonitor BG and Stamp Items (Valk crews not included; check \'unlock all navigators\' option)'});
R.Config('enable_valk_songs' ,{ type: 'boolean', default: false, name:'Enable Valkyrie Model Songs', desc:'Unlock the valkyrie model songs on non-valkyrie mode.'});
R.Config('arena_szn',{ type: 'string', options: Object.keys(ARENA), default: 'Set 1 (04/25/22)', name: 'Arena Station Item Set', desc: 'Choose which season set of items in the arena station you want to show up in arena station'});
R.Config('x_record', {type: 'boolean', default: false, name: 'X-Record', desc: 'Activates X-record. 10 VM and 1 LM points per play.'})
diff --git a/sdvx@asphyxia/webui/asset/js/premiumgenerator.js b/sdvx@asphyxia/webui/asset/js/premiumgenerator.js
new file mode 100644
index 0000000..d3993fd
--- /dev/null
+++ b/sdvx@asphyxia/webui/asset/js/premiumgenerator.js
@@ -0,0 +1,58 @@
+function countPreGeneItems(preGeneItems, items_crew, items_stamp, items_subbg, items_bgm, items_nemsys) {
+ return items_crew.filter(crew => preGeneItems['crew'].includes(crew['id'])).length +
+ items_stamp.filter(stamp => preGeneItems['stamp'].includes(stamp['id'])).length +
+ items_subbg.filter(subbg => preGeneItems['subbg'].includes(subbg['id'])).length
+}
+
+function loadImages(itemList, itemType, userItems) {
+ itemList.forEach(item => {
+ let itemBrightness = userItems.find(userItem => userItem.id == item) != undefined ? 1 : 0.5
+ let imageUrl = 'static/asset/valgene_item/item_' + itemType + '_' + item + '.png'
+ $.get(imageUrl, function(data, textStatus) {
+ if (textStatus == "success") {
+ $('.' + itemType + '-items').append('')
+ }
+ })
+ })
+}
+
+$(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;
+ }
+
+ $('.input').hide()
+ $('.button').addClass('is-link')
+ 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 preGeneItems = {
+ 'crew': [131],
+ 'stamp': [69, 70, 71, 72, 73, 74, 75, 76, 77, 78],
+ 'subbg': [166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185]
+ }
+
+ $('.count').text('Unlocked items: ' + countPreGeneItems(preGeneItems, items_crew, items_stamp, items_subbg, items_bgm, items_nemsys) + "/" + (preGeneItems['crew'].length + preGeneItems['stamp'].length + preGeneItems['subbg'].length))
+ $('.item_banners').append('