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..4d597fb
--- /dev/null
+++ b/sdvx@asphyxia/webui/asset/js/premiumgenerator.js
@@ -0,0 +1,80 @@
+function countPreGeneItems(preGeneItems, items_crew, items_stamp, items_subbg, items_bgm, items_nemsys) {
+ let totalItemsGot = 0
+ console.log(totalItemsGot)
+ totalItemsGot += items_crew.filter(crew => preGeneItems['crew'].includes(crew['id'])).length
+ console.log(totalItemsGot)
+ totalItemsGot += items_stamp.filter(stamp => preGeneItems['stamp'].includes(stamp['id'])).length
+ console.log(totalItemsGot)
+ totalItemsGot += items_subbg.filter(subbg => preGeneItems['subbg'].includes(subbg['id'])).length
+ console.log(totalItemsGot)
+ return totalItemsGot
+}
+
+$(document).ready(function() {
+ // let profile_data = JSON.parse(document.getElementById("data-pass").innerText);
+ let preGeneImageFetchURL = 'https://eacache.s.konaminet.jp/game/sdvx/common/images/pregene_item/'
+ 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 unlock_all = (document.getElementById("data-pass-unlock-all").innerText === 'true');
+ 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]
+ }
+
+ console.log('crew')
+ $('.item_banners').append('
')
+ preGeneItems['crew'].forEach(crew => {
+ let itemBrightness = items_crew.find(item => item.id == subbg) != undefined ? 1 : 0.5
+ $.get('/static/asset/pregene_item/crew/item_crew_' + crew + '.png', function(data, textStatus) {
+ if (textStatus == "success") {
+ console.log(crew + " loaded");
+ }
+ }).fail(function(){
+ console.log(crew + " not loaded. file not exist")
+ $('.crew-items').append('
')
+ });
+ })
+
+ console.log('stamp')
+ $('.item_banners').append('
')
+ preGeneItems['stamp'].forEach(stamp => {
+ let itemBrightness = items_stamp.find(item => item.id == stamp) != undefined ? 1 : 0.5
+ $.get('/static/asset/pregene_item/stamp/item_stamp_' + stamp + '.png', function(data, textStatus) {
+ if (textStatus == "success") {
+ console.log(stamp + " loaded");
+ }
+ }).fail(function(){
+ console.log(stamp + " not loaded. file not exist")
+ $('.stamp-items').append('
')
+ });
+ })
+
+ console.log('subbg')
+ $('.item_banners').append('
')
+ preGeneItems['subbg'].forEach(subbg => {
+ let itemBrightness = items_subbg.find(item => item.id == subbg) != undefined ? 1 : 0.5
+ $.get('/static/asset/pregene_item/bg/item_bg_' + subbg + '.png', function(data, textStatus) {
+ if (textStatus == "success") {
+ console.log(subbg + " loaded");
+ }
+ }).fail(function(){
+ console.log(subbg + " not loaded. file not exist")
+ $('.subbg-items').append('
')
+ });
+ })
+
+ if(!unlock_all) {
+ $('.count').text(countPreGeneItems(preGeneItems, items_crew, items_stamp, items_subbg, items_bgm, items_nemsys) + "/" + (preGeneItems['crew'].length + preGeneItems['stamp'].length + preGeneItems['subbg'].length))
+ } else {
+ $('.card-content').text("Unlock all enabled.")
+ $('#pregene-roll').attr('disabled')
+ }
+
+ $('#pregene-roll').on('click', function() {
+ console.log('clique')
+ })
+})
\ No newline at end of file
diff --git a/sdvx@asphyxia/webui/profile_-premium generator.pug b/sdvx@asphyxia/webui/profile_-premium generator.pug
new file mode 100644
index 0000000..f442d51
--- /dev/null
+++ b/sdvx@asphyxia/webui/profile_-premium generator.pug
@@ -0,0 +1,38 @@
+//DATA//
+ prem_items_crew: DB.Find(refid, {collection:"item",type:11,id:131})
+
+ prem_items_stamp: DB.Find(refid, { collection:"item",type:17 })
+
+ prem_items_subbg: DB.Find(refid, { collection:"item",type:18 })
+
+ prem_items_bgm: DB.Find(refid, { collection:"item",type:19 })
+
+ prem_items_nemsys: DB.Find(refid, { collection:"item",type:20 })
+
+ unlock_all: U.GetConfig('unlock_all_valk_items')
+
+-
+ //const padded = _.padStart(profile.id.toString(), 8);
+ //const sdvxid = `${padded.slice(0, 4)}-${padded.slice(4)}`;
+
+link(rel="stylesheet" href="static/asset/css/datatables.css")
+div
+ .card
+ .card-header
+ p.card-header-title
+ span.icon
+ i.mdi.mdi-account-edit
+ | Premium Generator
+ .card-content
+ input.input(type="text" name="refid", value=refid readonly)
+ button(id="pregene-roll") Roll
+ div.count()
+ div.item_banners()
+
+div(hidden id='data-pass-crew') !{JSON.stringify(prem_items_crew)}
+div(hidden id='data-pass-stamp') !{JSON.stringify(prem_items_stamp)}
+div(hidden id='data-pass-subbg') !{JSON.stringify(prem_items_subbg)}
+div(hidden id='data-pass-bgm') !{JSON.stringify(prem_items_bgm)}
+div(hidden id='data-pass-nemsys') !{JSON.stringify(prem_items_nemsys)}
+div(hidden id='data-pass-unlock-all') !{unlock_all}
+script(src="static/asset/js/premiumgenerator.js")
\ No newline at end of file