Implement stories export

This commit is contained in:
anunknowperson 2022-11-30 15:09:20 +07:00
parent 3068dd2329
commit 4fe9d947ec
4 changed files with 44 additions and 21 deletions

View File

@ -1,6 +1,9 @@
// object map that converts relic EquipType to a property name // 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'}; 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) { function collateArtifact(lang) {
const language = getLanguage(lang); const language = getLanguage(lang);
const xsets = getExcel('ReliquarySetExcelConfigData'); const xsets = getExcel('ReliquarySetExcelConfigData');
@ -38,6 +41,7 @@ function collateArtifact(lang) {
} }
data.images = {}; data.images = {};
// relic pieces // relic pieces
obj.containsList.forEach(ele => { obj.containsList.forEach(ele => {
let relic = xrelics.find(e => e.id === 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 = xmanualtext.find(ele => ele.textMapId === relic.equipType).textMapContentTextMapHash;
relicdata.relictype = language[relicdata.relictype]; relicdata.relictype = language[relicdata.relictype];
relicdata.description = language[relic.descTextMapHash]; relicdata.description = language[relic.descTextMapHash];
relicdata.story = getReadable(`Relic${obj.setId}_${relicTypeToIndex[relic.equipType]}${(lang != 'CHS') ? ('_' + lang) : ''}`, lang);
data[relicTypeToPropertyName[relic.equipType]] = relicdata; data[relicTypeToPropertyName[relic.equipType]] = relicdata;
data.images['name'+relicTypeToPropertyName[relic.equipType]] = relic.icon; 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.images[relicTypeToPropertyName[relic.equipType]] = `https://upload-os-bbs.mihoyo.com/game_record/genshin/equip/${relic.icon}.png`;
}); });
data.name = setname; data.name = setname;
accum[filename] = data; accum[filename] = data;
return accum; return accum;

View File

@ -31,6 +31,8 @@ function collateWeapon(lang) {
data.weapontype = language[weaponTextMapHash[obj.weaponType]]; data.weapontype = language[weaponTextMapHash[obj.weaponType]];
data.rarity = ''+obj.rankLevel; 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'); 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; data.baseatk = obj.weaponProp.find(obj => obj.propType === 'FIGHT_PROP_BASE_ATTACK').initValue;

View File

@ -12,6 +12,8 @@ function collateWindGlider(lang) {
data.name = language[obj.nameTextMapHash]; data.name = language[obj.nameTextMapHash];
data.description = sanitizeDescription(language[obj.descTextMapHash]); 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) || {}; let flymat = xmat.find(ele => ele.id === obj.materialId) || {};
data.rarity = flymat.rankLevel+""; data.rarity = flymat.rankLevel+"";

View File

@ -1,8 +1,20 @@
const fs = require('fs'); const fs = require('fs');
global.getExcel = function(file) { return require(`../ExcelBinOutput/${file}.json`); } global.getExcel = function(file) { return require(`../ExcelBinOutput/${file}.json`); }
global.getTextMap = function(langcode) { return require(`../TextMap/TextMap${langcode}.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 const xavatar = getExcel('AvatarExcelConfigData'); // array
global.xskilldepot = getExcel('AvatarSkillDepotExcelConfigData'); global.xskilldepot = getExcel('AvatarSkillDepotExcelConfigData');
@ -158,30 +170,30 @@ function exportData(folder, collateFunc, englishonly, skipwrite) {
console.log("done "+folder); console.log("done "+folder);
} }
// exportData('characters', require('./collateCharacter.js')); exportData('characters', require('./collateCharacter.js'));
// exportCurve('characters', 'AvatarCurveExcelConfigData'); exportCurve('characters', 'AvatarCurveExcelConfigData');
// exportData('constellations', require('./collateConstellation')); exportData('constellations', require('./collateConstellation'));
// exportData('talents', require('./collateTalent.js')); exportData('talents', require('./collateTalent.js'));
// exportData('weapons', require('./collateWeapon.js')); exportData('weapons', require('./collateWeapon.js'));
// exportCurve('weapons', 'WeaponCurveExcelConfigData') exportCurve('weapons', 'WeaponCurveExcelConfigData')
// exportData('artifacts', require('./collateArtifact.js')); exportData('artifacts', require('./collateArtifact.js'));
// exportData('foods', require('./collateFood')); exportData('foods', require('./collateFood'));
// exportData('materials', require('./collateMaterial')); // change: used both TextList/JumpList. exportData('materials', require('./collateMaterial')); // change: used both TextList/JumpList.
exportData('domains', require('./collateDomain')); // run twice exportData('domains', require('./collateDomain')); // run twice
// exportData('enemies', require('./collateEnemy')); exportData('enemies', require('./collateEnemy'));
// exportCurve('enemies', 'MonsterCurveExcelConfigData'); 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('outfits', require('./collateOutfit'));
// exportData('windgliders', require('./collateWindGlider')); exportData('windgliders', require('./collateWindGlider'));
// exportData('animals', require('./collateAnimal')); exportData('animals', require('./collateAnimal'));
// exportData('namecards', require('./collateNamecard')); exportData('namecards', require('./collateNamecard'));
// exportData('geographies', require('./collateGeography')); exportData('geographies', require('./collateGeography'));
// exportData('achievements', require('./collateAchievement')); exportData('achievements', require('./collateAchievement'));
// exportData('achievementgroups', require('./collateAchievementGroup')); exportData('achievementgroups', require('./collateAchievementGroup'));
// exportData('adventureranks', require('./collateAdventureRank')); exportData('adventureranks', require('./collateAdventureRank'));
// exportData('crafts', require('./collateCraft')); exportData('crafts', require('./collateCraft'));
// exportData('commissions', require('./collateCommission'), true); // unfinished // exportData('commissions', require('./collateCommission'), true); // unfinished
// exportData('voiceovers', require('./collateVoiceover'), true); // unfinished // exportData('voiceovers', require('./collateVoiceover'), true); // unfinished