8f4da00d03
Subzero icons are only available in low quality so I upscaled them with Waifu2x. Result is... well, good enough
47 lines
No EOL
1.9 KiB
JavaScript
47 lines
No EOL
1.9 KiB
JavaScript
let path = "../extra/"
|
|
|
|
let files = ["AchievementsDesc", "AchievementsDescMD", null, "AchievementsDescSZ"]
|
|
let gameNames = ["gd", "meltdown", "world", "subzero"]
|
|
let achString = "geometry.ach."
|
|
let rewardTypes = { color: "color1", icon: "cube", bird: "ufo", dart: "wave", special: "trail", death: "deathEffect" }
|
|
let games = { "md": "meltdown", "world.": "world", "subzero.": "subzero" }
|
|
|
|
const plist = require('plist');
|
|
const fs = require('fs');
|
|
|
|
let achArray = []
|
|
|
|
files.forEach((file, fileNum) => {
|
|
if (!file) return
|
|
let data = plist.parse(fs.readFileSync(path + file + '.plist', 'utf8'));
|
|
|
|
console.log(`Converting ${file}.plist...`)
|
|
|
|
for (let key in data) {
|
|
if (!achArray.find(x => x.trueID == key)) {
|
|
let fileData = data[key];
|
|
let reward = fileData.icon ? fileData.icon.split("_") : []
|
|
let achObj = {
|
|
id: key.slice(achString.length),
|
|
game: gameNames[fileNum],
|
|
name: fileData.title,
|
|
rewardType: rewardTypes[reward[0]] || reward[0] || "misc",
|
|
rewardID: +reward[1] || -1,
|
|
description: fileData.unachievedDescription,
|
|
achievedDescription: fileData.achievedDescription,
|
|
trueID: key
|
|
}
|
|
Object.keys(games).forEach(x => { if (key.startsWith(achString + x)) achObj.game = games[x] })
|
|
if (key == achString + "rate") achObj.id = "rating"
|
|
if (achObj.id.startsWith("subzero.coins")) achObj.id = achObj.id.replace("subzero.coins", "szcoin")
|
|
if (achObj.id.includes("demoncoin")) achObj.id = achObj.id.replace("demoncoin", "ultimatedemon")
|
|
achArray.push(achObj)
|
|
}}
|
|
})
|
|
|
|
achArray = achArray.filter(x => !x.id.startsWith("lite"))
|
|
let final = achArray.filter(x => x.game == "gd")
|
|
gameNames.slice(1).forEach(g => final = final.concat(achArray.filter(x => x.game == g)))
|
|
|
|
fs.writeFileSync('achievements.json', JSON.stringify(final, null, 2).replace(/\[\n.+?(-?\d+),\n.+?(-?\d+)\n.+]/g, "[$1, $2]")); // regex to make it easier to read
|
|
console.log("Successfully converted!") |