premium generator roll feature + added valkyrie generator page
This commit is contained in:
@@ -18,7 +18,8 @@ import {
|
||||
saveValgene,
|
||||
} from './handlers/profiles';
|
||||
import {
|
||||
copyResourcesFromGame
|
||||
copyResourcesFromGame,
|
||||
preGeneRoll
|
||||
} from './utils'
|
||||
import {
|
||||
ARENA
|
||||
@@ -45,6 +46,7 @@ export function register() {
|
||||
R.Config('use_asphyxia_gameover',{ type: 'boolean', default: true, name:'Use Asphyxia Gameover', desc:'Enable the Asphyxia gameover message after ending the game.'})
|
||||
|
||||
R.WebUIEvent('copyResourcesFromGame', copyResourcesFromGame);
|
||||
R.WebUIEvent('preGeneRoll', preGeneRoll);
|
||||
R.WebUIEvent('updateProfile', updateProfile);
|
||||
R.WebUIEvent('updateMix', updateMix);
|
||||
R.WebUIEvent('importMix', importMix);
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import {Counter} from './models/counter';
|
||||
import {PREGENE} from './data/exg';
|
||||
|
||||
export function IDToCode(id: number) {
|
||||
const padded = _.padStart(id.toString(), 8);
|
||||
@@ -329,3 +330,61 @@ export const copyResourcesFromGame = async (data: {}) => {
|
||||
errors: runErrors
|
||||
}))
|
||||
}
|
||||
|
||||
export const preGeneRoll = async (data: {
|
||||
set: number,
|
||||
refid: string,
|
||||
items: []
|
||||
}) => {
|
||||
// prem_items_crew: DB.Find(refid, {collection:"item",type:11})
|
||||
// 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 })
|
||||
|
||||
let itemId = {
|
||||
'crew': 11,
|
||||
'stamp': 17,
|
||||
'subbg': 18,
|
||||
'bgm': 19,
|
||||
'nemsys': 20
|
||||
}
|
||||
let preGeneSet = PREGENE.find(itemSet => itemSet.id === data.set)
|
||||
let finishedRolling = false
|
||||
if(preGeneSet != undefined) {
|
||||
while(!finishedRolling) {
|
||||
let rollWhat = 0
|
||||
let probability = Math.random();
|
||||
console.log("Rolling Premium Generator")
|
||||
for(const probIndex in preGeneSet.probability) {
|
||||
if(probability <= preGeneSet.probability[probIndex]) {
|
||||
rollWhat = parseInt(probIndex);
|
||||
break;
|
||||
}
|
||||
if(parseInt(probIndex) === preGeneSet.probability.length - 1) rollWhat = parseInt(probIndex);
|
||||
}
|
||||
|
||||
let unobtainedItems = preGeneSet.items[Object.keys(preGeneSet.items)[rollWhat]].map((x) => x)
|
||||
data.items.forEach(item => {
|
||||
if(item['type'] == itemId[Object.keys(preGeneSet.items)[rollWhat]] && preGeneSet.items[Object.keys(preGeneSet.items)[rollWhat]].includes(item['id'])) {
|
||||
unobtainedItems.splice(unobtainedItems.indexOf(item['id']), 1)
|
||||
}
|
||||
})
|
||||
if(unobtainedItems.length > 0) {
|
||||
let randomItemIndex = Math.floor(Math.random() * unobtainedItems.length);
|
||||
console.log("Rolled item id: " + unobtainedItems[randomItemIndex] + " | item type: " + itemId[Object.keys(preGeneSet.items)[rollWhat]])
|
||||
DB.Insert(data.refid, {
|
||||
"collection": "item",
|
||||
"type": itemId[Object.keys(preGeneSet.items)[rollWhat]],
|
||||
"id": unobtainedItems[randomItemIndex],
|
||||
"param": 1
|
||||
})
|
||||
let finalItemType = (Object.keys(preGeneSet.items)[rollWhat] === 'subbg') ? 'bg' : Object.keys(preGeneSet.items)[rollWhat]
|
||||
await IO.WriteFile('webui/asset/logs/preGeneRollResult.json', JSON.stringify({'id': unobtainedItems[randomItemIndex], 'type': finalItemType}))
|
||||
finishedRolling = true
|
||||
} else {
|
||||
console.log("No more " + Object.keys(preGeneSet.items)[rollWhat] + " items to get, will re-roll.")
|
||||
}
|
||||
}
|
||||
} else console.log('pregeneset none')
|
||||
}
|
||||
@@ -0,0 +1,158 @@
|
||||
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'])).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 == item) != 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('<img style="width: 350px; padding: 10px; filter: brightness(' + itemBrightness + ')" src=' + imageUrl + '>')
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
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('crew' in geneItems.items) {
|
||||
$('.item_banners').append('<div style="padding: 5px"><h3>Nemsys Crew</h3></div>')
|
||||
$('.item_banners').append('<div class=crew-items style="text-align: center; background-color: #3a3a3a; padding: 20px; border-radius: 6px;"></div><br>')
|
||||
loadImages(geneItems.items['crew'], 'crew', items_crew)
|
||||
}
|
||||
|
||||
if('stamp' in geneItems.items) {
|
||||
$('.item_banners').append('<div style="padding: 5px"><h3>Appeal Stamp</h3></div>')
|
||||
$('.item_banners').append('<div class=stamp-items style="text-align: center; background-color: #3a3a3a; padding: 20px; border-radius: 6px;"></div><br>')
|
||||
loadImages(geneItems.items['stamp'], 'stamp', items_stamp)
|
||||
}
|
||||
|
||||
if('subbg' in geneItems.items) {
|
||||
$('.item_banners').append('<div style="padding: 5px"><h3>Submonitor BG</h3></div>')
|
||||
$('.item_banners').append('<div class=bg-items style="text-align: center; background-color: #3a3a3a; padding: 20px; border-radius: 6px;"></div><br>')
|
||||
loadImages(geneItems.items['subbg'], 'bg', items_subbg)
|
||||
}
|
||||
|
||||
if('bgm' in geneItems.items) {
|
||||
$('.item_banners').append('<div style="padding: 5px"><h3>BGM</h3></div>')
|
||||
$('.item_banners').append('<div class=bgm-items style="text-align: center; background-color: #3a3a3a; padding: 20px; border-radius: 6px;"></div><br>')
|
||||
loadImages(geneItems.items['bgm'], 'bgm', items_bgm)
|
||||
}
|
||||
|
||||
if('nemsys' in geneItems.items) {
|
||||
$('.item_banners').append('<div style="padding: 5px"><h3>Nemsys</h3></div>')
|
||||
$('.item_banners').append('<div class=nemsys-items style="text-align: center; background-color: #3a3a3a; padding: 20px; border-radius: 6px;"></div><br>')
|
||||
loadImages(geneItems.items['nemsys'], '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('<option value=' + valGeneData.valgene[valGeneDataIndex].id + '>' + valGeneData.valgene[valGeneDataIndex].name + '</option>')
|
||||
}
|
||||
} else {
|
||||
for(const pregeneDataIndex in valGeneData.pregene) {
|
||||
$('#set_select').append('<option value=' + valGeneData.pregene[pregeneDataIndex].id + '>' + valGeneData.pregene[pregeneDataIndex].name + '</option>')
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$(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 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)
|
||||
})
|
||||
|
||||
$('#roll-result').on('click', function(){location.reload()})
|
||||
|
||||
$('#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('<p class="modal-card-title">Rolled item!</p>')
|
||||
$('.modal-card-body').append('<img style="width: 400px; padding: 10px;" src="static/asset/valgene_item/item_' + data.type + '_' + data.id + '.png">')
|
||||
$('.modal-card-foot').append('<button onclick=location.reload(); class="button is-primary">Close</button>')
|
||||
$('.modal').addClass('is-active')
|
||||
})
|
||||
})
|
||||
}
|
||||
} else {
|
||||
alert("Not premium generator: a precaution")
|
||||
}
|
||||
})
|
||||
})
|
||||
@@ -0,0 +1,113 @@
|
||||
{
|
||||
"pregene": [
|
||||
{
|
||||
"id": 1,
|
||||
"name": "Premium Generator 1 (Aqua Set)",
|
||||
"items": {
|
||||
"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]
|
||||
}
|
||||
}
|
||||
],
|
||||
"valgene":[
|
||||
{
|
||||
"id": 1,
|
||||
"name": "Valkyrie Generator Vol. 1",
|
||||
"items":{
|
||||
"crew": [117],
|
||||
"stamp": [1, 2, 3, 4, 5],
|
||||
"subbg": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
|
||||
"bgm": [1, 2, 3, 4, 5, 6, 7, 8],
|
||||
"nemsys": [1, 2, 3, 4]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"name": "Valkyrie Generator Vol. 2",
|
||||
"items":{
|
||||
"crew": [119],
|
||||
"stamp": [6, 7, 8, 9, 10],
|
||||
"subbg": [16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33],
|
||||
"bgm": [9, 10, 11, 12, 13, 14],
|
||||
"nemsys": [5, 6, 7]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"name": "Valkyrie Generator Vol. 3",
|
||||
"items":{
|
||||
"crew": [120],
|
||||
"stamp": [11, 12, 13, 14, 15, 16],
|
||||
"subbg": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56],
|
||||
"bgm": [15, 16, 17],
|
||||
"nemsys": [12, 13, 14]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"name": "Valkyrie Generator Vol. 4",
|
||||
"items":{
|
||||
"crew": [121],
|
||||
"stamp": [17, 18, 19, 20, 21],
|
||||
"subbg": [57, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79],
|
||||
"bgm": [18, 19, 20, 21],
|
||||
"nemsys": [15, 16, 17]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"name": "Valkyrie Generator Vol. 5",
|
||||
"items":{
|
||||
"crew": [124],
|
||||
"stamp": [22, 23, 24, 25, 26, 27],
|
||||
"subbg": [80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102],
|
||||
"bgm": [22, 23, 24, 25],
|
||||
"nemsys": [18, 19, 20]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"name": "Valkyrie Generator Vol. 6",
|
||||
"items":{
|
||||
"crew": [129],
|
||||
"stamp": [28, 29, 30, 31, 32],
|
||||
"subbg": [103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127],
|
||||
"bgm": [26, 27, 28, 29],
|
||||
"nemsys": [21, 22, 23, 24, 25]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"name": "Valkyrie Generator Vol. 7",
|
||||
"items":{
|
||||
"stamp": [33, 34, 35, 36, 37],
|
||||
"subbg": [129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151],
|
||||
"bgm": [30, 31, 32, 33, 34, 35, 36, 37],
|
||||
"nemsys": [26, 27, 28, 29, 30]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 8,
|
||||
"name": "Valkyrie Generator Vol. 8",
|
||||
"items":{
|
||||
"crew": [130],
|
||||
"stamp": [38, 39, 40, 41, 42],
|
||||
"subbg": [152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165],
|
||||
"bgm": [38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68],
|
||||
"nemsys": [31]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 9,
|
||||
"name": "Valkyrie Generator Vol. 9",
|
||||
"items":{
|
||||
"crew": [133],
|
||||
"stamp": [79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109],
|
||||
"subbg": [186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199],
|
||||
"bgm": [43, 44, 45, 46, 47],
|
||||
"nemsys": [32]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
//DATA//
|
||||
prem_items_crew: DB.Find(refid, {collection:"item",type:11})
|
||||
|
||||
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
|
||||
div.modal(id="roll-result")
|
||||
div(class="modal-background jb-modal-close")
|
||||
div(class="modal-card")
|
||||
header(class="modal-card-head")
|
||||
section(class="modal-card-body" style="text-align: center;")
|
||||
footer(class="modal-card-foot")
|
||||
.card
|
||||
.card-header
|
||||
p.card-header-title
|
||||
span.icon
|
||||
i.mdi.mdi-star
|
||||
| Premium Generator
|
||||
.card-content
|
||||
.field
|
||||
.control
|
||||
.select
|
||||
select(name="set_select" id="set_select")
|
||||
// option(value="1") Premium Generator 1 (Aqua Set)
|
||||
div(style="padding: 15px; text-align: center;")
|
||||
div(style="padding: 5px")
|
||||
h3.count()
|
||||
input.input(type="text" name="refid", value=refid readonly)
|
||||
button.button(id="pregene-roll" style="font-size: 20px") Roll
|
||||
br()
|
||||
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}
|
||||
div(hidden id='generator-edition') premium
|
||||
script(src="static/asset/js/generator.js")
|
||||
@@ -0,0 +1,45 @@
|
||||
//DATA//
|
||||
prem_items_crew: DB.Find(refid, {collection:"item",type:11})
|
||||
|
||||
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-star
|
||||
| Valkyrie Generator
|
||||
.card-content
|
||||
.field
|
||||
.control
|
||||
.select
|
||||
select(name="set_select" id="set_select")
|
||||
div(style="padding: 15px; text-align: center;")
|
||||
div(style="padding: 5px")
|
||||
h3.count()
|
||||
input.input(type="text" name="refid", value=refid readonly)
|
||||
br()
|
||||
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}
|
||||
div(hidden id='generator-edition') valkyrie
|
||||
script(src="static/asset/js/generator.js")
|
||||
Reference in New Issue
Block a user