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
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;

View File

@ -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;

View File

@ -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+"";

View File

@ -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