From 4fe9d947ecd9bd130ee5c39ffe32def1ddf54980 Mon Sep 17 00:00:00 2001 From: anunknowperson Date: Wed, 30 Nov 2022 15:09:20 +0700 Subject: [PATCH] Implement stories export --- myscripts/collateArtifact.js | 7 +++++ myscripts/collateWeapon.js | 2 ++ myscripts/collateWindGlider.js | 2 ++ myscripts/myscript.js | 54 +++++++++++++++++++++------------- 4 files changed, 44 insertions(+), 21 deletions(-) diff --git a/myscripts/collateArtifact.js b/myscripts/collateArtifact.js index 7368a485f..b686cd8a1 100644 --- a/myscripts/collateArtifact.js +++ b/myscripts/collateArtifact.js @@ -1,6 +1,9 @@ // object map that converts relic EquipType to a property name const relicTypeToPropertyName = { 'EQUIP_BRACER': 'flower', 'EQUIP_NECKLACE': 'plume', 'EQUIP_SHOES': 'sands', 'EQUIP_RING': 'goblet', 'EQUIP_DRESS': 'circlet'}; +// convert artifact type to index in readables +const relicTypeToIndex = {'EQUIP_BRACER': '4', 'EQUIP_NECKLACE': '2', 'EQUIP_SHOES': '5', 'EQUIP_RING': '1', 'EQUIP_DRESS': '3'} + function collateArtifact(lang) { const language = getLanguage(lang); const xsets = getExcel('ReliquarySetExcelConfigData'); @@ -38,6 +41,7 @@ function collateArtifact(lang) { } data.images = {}; + // relic pieces obj.containsList.forEach(ele => { let relic = xrelics.find(e => e.id === ele); @@ -46,11 +50,14 @@ function collateArtifact(lang) { relicdata.relictype = xmanualtext.find(ele => ele.textMapId === relic.equipType).textMapContentTextMapHash; relicdata.relictype = language[relicdata.relictype]; relicdata.description = language[relic.descTextMapHash]; + relicdata.story = getReadable(`Relic${obj.setId}_${relicTypeToIndex[relic.equipType]}${(lang != 'CHS') ? ('_' + lang) : ''}`, lang); data[relicTypeToPropertyName[relic.equipType]] = relicdata; data.images['name'+relicTypeToPropertyName[relic.equipType]] = relic.icon; data.images[relicTypeToPropertyName[relic.equipType]] = `https://upload-os-bbs.mihoyo.com/game_record/genshin/equip/${relic.icon}.png`; }); + + data.name = setname; accum[filename] = data; return accum; diff --git a/myscripts/collateWeapon.js b/myscripts/collateWeapon.js index 1c8860686..1d41cd132 100644 --- a/myscripts/collateWeapon.js +++ b/myscripts/collateWeapon.js @@ -31,6 +31,8 @@ function collateWeapon(lang) { data.weapontype = language[weaponTextMapHash[obj.weaponType]]; data.rarity = ''+obj.rankLevel; + data.story = getReadable(`Weapon${obj.id}${(lang != 'CHS') ? ('_' + lang) : ''}`, lang); + if(obj.weaponProp[0].propType !== 'FIGHT_PROP_BASE_ATTACK') console.log(obj,'weapon did not find base atk'); data.baseatk = obj.weaponProp.find(obj => obj.propType === 'FIGHT_PROP_BASE_ATTACK').initValue; diff --git a/myscripts/collateWindGlider.js b/myscripts/collateWindGlider.js index 3a4606fb9..448a6493d 100644 --- a/myscripts/collateWindGlider.js +++ b/myscripts/collateWindGlider.js @@ -12,6 +12,8 @@ function collateWindGlider(lang) { data.name = language[obj.nameTextMapHash]; data.description = sanitizeDescription(language[obj.descTextMapHash]); + data.story = getReadable(`Wings${obj.flycloakId}${(lang != 'CHS') ? ('_' + lang) : ''}`, lang); + let flymat = xmat.find(ele => ele.id === obj.materialId) || {}; data.rarity = flymat.rankLevel+""; diff --git a/myscripts/myscript.js b/myscripts/myscript.js index cf637115a..ee7e6c07f 100644 --- a/myscripts/myscript.js +++ b/myscripts/myscript.js @@ -1,8 +1,20 @@ const fs = require('fs'); + + global.getExcel = function(file) { return require(`../ExcelBinOutput/${file}.json`); } global.getTextMap = function(langcode) { return require(`../TextMap/TextMap${langcode}.json`); } +global.getReadable = function(name, langcode) { + let path = `../Readable/${langcode}/${name}.txt` + + if (fs.existsSync(path)) { + return fs.readFileSync(path, 'utf8') + } else { + return ''; + } +} + const xavatar = getExcel('AvatarExcelConfigData'); // array global.xskilldepot = getExcel('AvatarSkillDepotExcelConfigData'); @@ -158,30 +170,30 @@ function exportData(folder, collateFunc, englishonly, skipwrite) { console.log("done "+folder); } -// exportData('characters', require('./collateCharacter.js')); -// exportCurve('characters', 'AvatarCurveExcelConfigData'); -// exportData('constellations', require('./collateConstellation')); -// exportData('talents', require('./collateTalent.js')); -// exportData('weapons', require('./collateWeapon.js')); -// exportCurve('weapons', 'WeaponCurveExcelConfigData') -// exportData('artifacts', require('./collateArtifact.js')); -// exportData('foods', require('./collateFood')); -// exportData('materials', require('./collateMaterial')); // change: used both TextList/JumpList. +exportData('characters', require('./collateCharacter.js')); +exportCurve('characters', 'AvatarCurveExcelConfigData'); +exportData('constellations', require('./collateConstellation')); +exportData('talents', require('./collateTalent.js')); +exportData('weapons', require('./collateWeapon.js')); +exportCurve('weapons', 'WeaponCurveExcelConfigData') +exportData('artifacts', require('./collateArtifact.js')); +exportData('foods', require('./collateFood')); +exportData('materials', require('./collateMaterial')); // change: used both TextList/JumpList. exportData('domains', require('./collateDomain')); // run twice -// exportData('enemies', require('./collateEnemy')); -// exportCurve('enemies', 'MonsterCurveExcelConfigData'); +exportData('enemies', require('./collateEnemy')); +exportCurve('enemies', 'MonsterCurveExcelConfigData'); -// exportData('domains', require('./collateDomainMonsterList')); // MUST do run only after both domains and enemies have run. sync. +exportData('domains', require('./collateDomainMonsterList')); // MUST do run only after both domains and enemies have run. sync. -// exportData('outfits', require('./collateOutfit')); -// exportData('windgliders', require('./collateWindGlider')); -// exportData('animals', require('./collateAnimal')); -// exportData('namecards', require('./collateNamecard')); -// exportData('geographies', require('./collateGeography')); -// exportData('achievements', require('./collateAchievement')); -// exportData('achievementgroups', require('./collateAchievementGroup')); -// exportData('adventureranks', require('./collateAdventureRank')); -// exportData('crafts', require('./collateCraft')); +exportData('outfits', require('./collateOutfit')); +exportData('windgliders', require('./collateWindGlider')); +exportData('animals', require('./collateAnimal')); +exportData('namecards', require('./collateNamecard')); +exportData('geographies', require('./collateGeography')); +exportData('achievements', require('./collateAchievement')); +exportData('achievementgroups', require('./collateAchievementGroup')); +exportData('adventureranks', require('./collateAdventureRank')); +exportData('crafts', require('./collateCraft')); // exportData('commissions', require('./collateCommission'), true); // unfinished // exportData('voiceovers', require('./collateVoiceover'), true); // unfinished