mirror of
https://github.com/theBowja/GenshinData-1.git
synced 2025-04-28 18:18:13 +09:00
no idea what i did
This commit is contained in:
parent
ef09ed084c
commit
6baeb50354
@ -3,7 +3,9 @@ const xgoal = getExcel('AchievementGoalExcelConfigData');
|
||||
const xreward = getExcel('RewardExcelConfigData');
|
||||
const xmat = getExcel('MaterialExcelConfigData');
|
||||
|
||||
|
||||
function collateAchievement(lang) {
|
||||
const dupeCheck = {};
|
||||
const language = getLanguage(lang);
|
||||
let myachievement = xachieve.reduce((accum, obj) => {
|
||||
if(obj.isDisuse === true) {
|
||||
@ -39,14 +41,9 @@ function collateAchievement(lang) {
|
||||
data['stage'+data.stages] = addStage(obj, language);
|
||||
|
||||
|
||||
let filename = makeFileName(getLanguage('EN')[obj.titleTextMapHash]);
|
||||
let filename = makeUniqueFileName(obj.titleTextMapHash, accum, data);
|
||||
if(filename === '') return accum;
|
||||
if(accum[filename] !== undefined) {
|
||||
if(obj.id !== 84004 && obj.id !== 86007)
|
||||
console.log('filename collision: ' + filename + ' disuse: ' + obj.isDisuse);
|
||||
filename+='a';
|
||||
}
|
||||
// if(accum[filename] !== undefined) return accum;
|
||||
checkDupeName(data, dupeCheck);
|
||||
accum[filename] = data;
|
||||
return accum;
|
||||
}, {});
|
||||
|
@ -4,6 +4,7 @@ const xmat = getExcel('MaterialExcelConfigData');
|
||||
|
||||
function collateAchievementGroup(lang) {
|
||||
const language = getLanguage(lang);
|
||||
const dupeCheck = {};
|
||||
let myachievementgroup = xgroup.reduce((accum, obj) => {
|
||||
let data = {};
|
||||
data.id = obj.id;
|
||||
@ -25,9 +26,9 @@ function collateAchievementGroup(lang) {
|
||||
data.nameicon = obj.iconPath;
|
||||
|
||||
|
||||
let filename = makeFileName(getLanguage('EN')[obj.nameTextMapHash]);
|
||||
let filename = makeUniqueFileName(obj.nameTextMapHash, accum);
|
||||
if(filename === '') return accum;
|
||||
if(accum[filename] !== undefined) console.log('filename collision: ' + filename);
|
||||
checkDupeName(data, dupeCheck);
|
||||
accum[filename] = data;
|
||||
return accum;
|
||||
}, {});
|
||||
|
@ -14,6 +14,7 @@ for([key, value] of Object.entries(xcodex[0])) {
|
||||
|
||||
function collateAnimal(lang) {
|
||||
const language = getLanguage(lang);
|
||||
const dupeCheck = {};
|
||||
let mydata = xcodex.reduce((accum, obj) => {
|
||||
if(obj.type === 'CODEX_MONSTER') return accum;
|
||||
if(obj.isDisuse) return accum;
|
||||
@ -33,9 +34,9 @@ function collateAnimal(lang) {
|
||||
data.nameicon = mydescribe.icon;
|
||||
|
||||
|
||||
let filename = makeFileName(getLanguage('EN')[mydescribe.nameTextMapHash]);
|
||||
let filename = makeUniqueFileName(mydescribe.nameTextMapHash, accum);
|
||||
if(filename === '') return accum;
|
||||
if(accum[filename] !== undefined) console.log('filename collision: ' + filename);
|
||||
checkDupeName(data, dupeCheck);
|
||||
accum[filename] = data;
|
||||
return accum;
|
||||
}, {});
|
||||
|
@ -108,20 +108,20 @@ const monsterMap = {
|
||||
"forge trial thunder iii": ['la el slime', 'mu el slime', 'fa el ci mage'],
|
||||
"forge trial thunder iv": ['la el slime', 'mu el slime', 'fa el ci mage'],
|
||||
|
||||
"forge tainted clouds i": ['pyro fungus', 'dendro fungus', 'hydro fungus', 'electro fungus'],
|
||||
"forge tainted clouds ii": ['cryo fungus', 'pyro fungus', 'geo fungus', 'dendro fungus', 'electro fungus'],
|
||||
"forge tainted clouds iii": ['pyro fungus', 'cryo fungus', 'geo fungus', 'electro fungus', 'dendro fungus', 'hydroshroom', 'dendroshroom'],
|
||||
"forge tainted clouds iv": ['hydro fungus', 'dendro fungus', 'hydroshroom', 'dendroshroom'],
|
||||
"forge tainted clouds i": ['str pyro fungus', 'fl dendro fungus', 'fl hydro fungus', 'wh electro fungus'],
|
||||
"forge tainted clouds ii": ['wh cryo fungus', 'str pyro fungus', 'str geo fungus', 'fl dendro fungus', 'wh electro fungus'],
|
||||
"forge tainted clouds iii": ['str pyro fungus', 'wh cryo fungus', 'str geo fungus', 'wh electro fungus', 'fl dendro fungus', 'g hydroshroom', 'w dendroshroom'],
|
||||
"forge tainted clouds iv": ['f hydro fungus', 'f dendro fungus', 'g hydroshroom', 'w dendroshroom'],
|
||||
|
||||
"forge obsession i": ['pyro fungus', 'dendro fungus', 'hydro fungus', 'electro fungus'],
|
||||
"forge obsession ii": ['cryo fungus', 'pyro fungus', 'geo fungus', 'dendro fungus', 'electro fungus'],
|
||||
"forge obsession iii": ['pyro fungus', 'cryo fungus', 'geo fungus', 'electro fungus', 'dendro fungus', 'hydroshroom', 'dendroshroom'],
|
||||
"forge obsession iv": ['hydro fungus', 'dendro fungus', 'hydroshroom', 'dendroshroom'],
|
||||
"forge obsession i": ['str pyro fungus', 'f dendro fungus', 'f hydro fungus', 'wh electro fungus'],
|
||||
"forge obsession ii": ['wh cryo fungus', 'str pyro fungus', 'str geo fungus', 'f dendro fungus', 'wh electro fungus'],
|
||||
"forge obsession iii": ['str pyro fungus', 'wh cryo fungus', 'str geo fungus', 'electro fungus', 'f dendro fungus', 'g hydroshroom', 'w dendroshroom'],
|
||||
"forge obsession iv": ['f hydro fungus', 'f dendro fungus', 'g hydroshroom', 'w dendroshroom'],
|
||||
|
||||
"forge lead karma i": ['pyro fungus', 'dendro fungus', 'hydro fungus', 'electro fungus'],
|
||||
"forge lead karma ii": ['cryo fungus', 'pyro fungus', 'geo fungus', 'dendro fungus', 'electro fungus'],
|
||||
"forge lead karma iii": ['pyro fungus', 'cryo fungus', 'geo fungus', 'electro fungus', 'dendro fungus', 'hydroshroom', 'dendroshroom'],
|
||||
"forge lead karma iv": ['hydro fungus', 'dendro fungus', 'hydroshroom', 'dendroshroom'],
|
||||
"forge lead karma i": ['str pyro fungus', 'f dendro fungus', 'f hydro fungus', 'wh electro fungus'],
|
||||
"forge lead karma ii": ['wh cryo fungus', 'str pyro fungus', 'str geo fungus', 'f dendro fungus', 'wh electro fungus'],
|
||||
"forge lead karma iii": ['str pyro fungus', 'wh cryo fungus', 'str geo fungus', 'wh electro fungus', 'f dendro fungus', 'g hydroshroom', 'w dendroshroom'],
|
||||
"forge lead karma iv": ['f hydro fungus', 'f dendro fungus', 'g hydroshroom', 'w dendroshroom'],
|
||||
|
||||
"maste alt flame i": ['py slime', 'la py slime', 'py ab mage'],
|
||||
"maste alt flame ii": ['py slime', 'la py slime', 'py ab mage'],
|
||||
|
@ -27,6 +27,7 @@ if(out === null) console.log('enemy null resistance rounding');
|
||||
function collateEnemy(lang) {
|
||||
const language = getLanguage(lang);
|
||||
const xmat = getExcel('MaterialExcelConfigData');
|
||||
const dupeCheck = {};
|
||||
|
||||
let mymonster = xcodex.reduce((accum, obj) => {
|
||||
if(obj.type !== 'CODEX_MONSTER') return accum;
|
||||
@ -64,9 +65,6 @@ function collateEnemy(lang) {
|
||||
// Abyss Lector: Violet Lightning, Abyss Herald: Wicked Torrents, Abyss Lector: Fathomless Flames
|
||||
// Hydro Cicin, Electro Cicin, Cryo Cicin
|
||||
data.rewardpreview = [];
|
||||
} else if(obj.Id === 26090101) { // Floating Hydro Fungus
|
||||
let rewardpreview = xpreview.find(pre => pre.id === 16012).previewItems.filter(pre => pre.id);
|
||||
data.rewardpreview = mapRewardList(rewardpreview, language);
|
||||
} else if(obj.Id === 29010104) { // dvalin lvl90
|
||||
let rewardpreview = xpreview.find(pre => pre.id === 15005).previewItems.filter(pre => pre.id);
|
||||
data.rewardpreview = mapRewardList(rewardpreview, language);
|
||||
@ -145,6 +143,7 @@ function collateEnemy(lang) {
|
||||
|
||||
let filename = makeFileName(getLanguage('EN')[des.nameTextMapHash]);
|
||||
if(filename === '') return accum;
|
||||
checkDupeName(data, dupeCheck);
|
||||
|
||||
accum[filename] = data;
|
||||
return accum;
|
||||
@ -169,7 +168,14 @@ const noRewardListMonsterMap = {
|
||||
25030101: 25010201, // Treasure Hoarders: Carmen
|
||||
25040101: 25010201, // Treasure Hoarders: Boss
|
||||
25050101: 25010201, // Millelith Soldier
|
||||
25050201: 25010201 // Millelith Sergeant
|
||||
25050201: 25010201, // Millelith Sergeant
|
||||
25410201: 25210301, // Eremite Galehunter
|
||||
25410101: 25210301, // Eremite Stone Enchanter
|
||||
26090101: 26090201, // Floating Hydro Fungus
|
||||
26090301: 26090201, // Floating Anemo Fungus
|
||||
26090601: 26090401, // Whirling Pyro Fungus
|
||||
26091001: 26090901, // Stretch Electro Fungus
|
||||
26120401: 26120301 // Grounded Geoshroom
|
||||
}
|
||||
|
||||
// makes sure each monster has a corresponding "investigation" data
|
||||
|
@ -20,6 +20,7 @@ const mapQualityToProp = {
|
||||
|
||||
function collateFood(lang) {
|
||||
const language = getLanguage(lang);
|
||||
const dupeCheck = {};
|
||||
|
||||
let myfood = xrecipe.reduce((accum, obj) => {
|
||||
//if(obj.id !== 1003) return accum;
|
||||
@ -61,7 +62,11 @@ function collateFood(lang) {
|
||||
// data.source =
|
||||
data.imagename = obj.icon;
|
||||
|
||||
accum[makeFileName(getLanguage('EN')[obj.nameTextMapHash])] = data;
|
||||
|
||||
let filename = makeFileName(getLanguage('EN')[obj.nameTextMapHash]);
|
||||
if(accum[filename] !== undefined) console.log('filename collision: ' + filename);
|
||||
checkDupeName(data, dupeCheck)
|
||||
accum[filename] = data;
|
||||
|
||||
// check if there is a specialty
|
||||
let myspec = getSpecialty(obj.id);
|
||||
@ -90,7 +95,11 @@ function collateFood(lang) {
|
||||
spdata.ingredients = ingredients;
|
||||
spdata.imagename = xd.icon;
|
||||
|
||||
accum[makeFileName(getLanguage('EN')[xd.nameTextMapHash])] = spdata;
|
||||
filename = makeFileName(getLanguage('EN')[xd.nameTextMapHash]);
|
||||
if(accum[filename] !== undefined) console.log('filename collision: ' + filename);
|
||||
checkDupeName(spdata, dupeCheck);
|
||||
accum[filename] = spdata;
|
||||
|
||||
return accum;
|
||||
}, {});
|
||||
// console.log(myfood);
|
||||
|
@ -5,6 +5,7 @@ const xarea = getExcel('WorldAreaConfigData');
|
||||
|
||||
function collageGeography(lang) {
|
||||
const language = getLanguage(lang);
|
||||
const dupeCheck = {};
|
||||
let mygeography = xview.reduce((accum, obj) => {
|
||||
|
||||
let data = {};
|
||||
@ -24,6 +25,7 @@ function collageGeography(lang) {
|
||||
let filename = makeFileName(getLanguage('EN')[obj.nameTextMapHash]);
|
||||
if(filename === '') return accum;
|
||||
if(accum[filename] !== undefined) console.log('filename collision: ' + filename);
|
||||
checkDupeName(data, dupeCheck);
|
||||
accum[filename] = data;
|
||||
return accum;
|
||||
}, {});
|
||||
|
@ -57,6 +57,7 @@ function collateMaterial(lang) {
|
||||
const xpool = getExcel('FishPoolExcelConfigData');
|
||||
|
||||
let sortOrder = 0;
|
||||
const dupeCheck = {};
|
||||
|
||||
let mymaterial = xmat.reduce((accum, obj) => {
|
||||
sortOrder++;
|
||||
@ -111,9 +112,10 @@ function collateMaterial(lang) {
|
||||
data.imagename = obj.icon;
|
||||
if(!data.imagename) console.log(data.name+' has no icon');
|
||||
|
||||
let filename = makeUniqueFileName(obj.nameTextMapHash, accum);
|
||||
let filename = makeUniqueFileName(obj.nameTextMapHash, accum, data);
|
||||
if(filename === '') return accum;
|
||||
if(filename.includes('shrineofdepthskey')) return accum;
|
||||
checkDupeName(data, dupeCheck);
|
||||
accum[filename] = data;
|
||||
return accum;
|
||||
}, {});
|
||||
|
@ -15,16 +15,18 @@ const xplayableWeapon = xweapon.filter(obj => {
|
||||
|
||||
function collateWeapon(lang) {
|
||||
const language = getLanguage(lang);
|
||||
const dupeCheck = {};
|
||||
const xsubstat = getExcel('WeaponPromoteExcelConfigData');
|
||||
let myweapon = xplayableWeapon.reduce((accum, obj) => {
|
||||
|
||||
let data = {};
|
||||
data.id = obj.id;
|
||||
let filename = makeUniqueFileName(obj.nameTextMapHash, accum);
|
||||
let filename = makeUniqueFileName(obj.nameTextMapHash, accum, data);
|
||||
if(filename === "") return accum;
|
||||
if(accum[filename] !== undefined) console.log(filename+' IS NOT UNIQUE');
|
||||
|
||||
data.name = language[obj.nameTextMapHash];
|
||||
checkDupeName(data, dupeCheck);
|
||||
data.description = sanitizeDescription(language[obj.descTextMapHash]);
|
||||
data.weapontype = language[weaponTextMapHash[obj.weaponType]];
|
||||
data.rarity = ''+obj.rankLevel;
|
||||
|
@ -4,6 +4,7 @@ const xfly = getExcel('AvatarFlycloakExcelConfigData');
|
||||
|
||||
function collateWindGlider(lang) {
|
||||
const language = getLanguage(lang);
|
||||
const dupeCheck = {};
|
||||
let mydata = xfly.reduce((accum, obj) => {
|
||||
let data = {};
|
||||
data.id = obj.flycloakId;
|
||||
@ -28,6 +29,7 @@ function collateWindGlider(lang) {
|
||||
let filename = makeFileName(getLanguage('EN')[obj.nameTextMapHash]);
|
||||
if(filename === '') return accum;
|
||||
if(accum[filename] !== undefined) console.log('filename collision: ' + filename);
|
||||
checkDupeName(data, dupeCheck);
|
||||
accum[filename] = data;
|
||||
return accum;
|
||||
}, {});
|
||||
|
@ -27,7 +27,7 @@ global.isPlayer = function(data) { return data.candSkillDepotIds && data.candSki
|
||||
global.getPlayerElement = function(SkillDepotId) { let tmp = xskilldepot.find(ele => ele.id === SkillDepotId); return tmp === undefined ? tmp : tmp.talentStarName.split('_').pop(); }
|
||||
global.getLanguage = function(abbriev) { return getTextMap(abbriev.toUpperCase()); }
|
||||
global.normalizeStr = function(str) { return str.normalize('NFD').replace(/[\u0300-\u036f]/g, ''); }
|
||||
global.makeFileName = function(str, lang) { return normalizeStr(str).toLowerCase().replace(/[^a-z]/g,''); }
|
||||
global.makeFileName = function(str, lang) { return normalizeStr(str).toLowerCase().replace(/[^a-z0-9]/g,''); }
|
||||
global.convertBold = function(str) { return str.replace(/<color=#FFD780FF>(.*?)<\/color>/gi, '**$1**'); }
|
||||
global.stripHTML = function(str) { return (str || '').replace(/(<([^>]+)>)/gi, ''); }
|
||||
global.capitalizeFirst = function(str) { return str[0].toUpperCase() + str.toLowerCase().slice(1); }
|
||||
@ -70,6 +70,7 @@ global.dayOfWeek = function(num) {
|
||||
return xmanualtext.find(ele => ele.textMapId === 'UI_ABYSSUS_DATE'+num).textMapContentTextMapHash;
|
||||
}
|
||||
|
||||
const uniqueLog = {};
|
||||
// if it isn't unique, then appends "a" to end. or "b". all the way to "z".
|
||||
global.makeUniqueFileName = function(textmaphash, map) {
|
||||
let name = getLanguage('EN')[textmaphash];
|
||||
@ -77,11 +78,34 @@ global.makeUniqueFileName = function(textmaphash, map) {
|
||||
let filename = makeFileName(name);
|
||||
if(map[filename] === undefined) return filename;
|
||||
|
||||
let charset = "abcdefghijklmnopqrstuvwxyz";
|
||||
let i = 0;
|
||||
while(map[filename+charset[i]] !== undefined) { i++; }
|
||||
if(i === 26) console.log("cannot make unique filename for " + name);
|
||||
else return filename+charset[i];
|
||||
let i = 1;
|
||||
while(map[filename+"-"+("0" + i).slice(-2)] !== undefined) { i++; }
|
||||
if(i > 99) console.log("cannot make unique filename for " + name);
|
||||
else {
|
||||
// if (!uniqueLog[name + ' ' + i])
|
||||
// console.log(' dupe made: '+name + ' ' + i)
|
||||
return filename+"-"+("0" + i).slice(-2);
|
||||
}
|
||||
}
|
||||
|
||||
const dupelogskip = [118002, 11419, 100934, 28030501, 80032, 82010];
|
||||
global.checkDupeName = function(data, namemap) {
|
||||
let name = data.name;
|
||||
let key = name.toLowerCase().replace(/[ ["'·\.「」…!\!?\?(\)。,,《》—『』«»<>\]#{\}]/g, '');
|
||||
let id;
|
||||
if (namemap[key]) {
|
||||
namemap[key].dupealias = namemap[key].name + ' 0';
|
||||
id = namemap[key].id || namemap[key].id[0] || -1;
|
||||
} else {
|
||||
namemap[key] = data;
|
||||
return false;
|
||||
}
|
||||
let i = 1;
|
||||
while (namemap[key+i]) { i++; }
|
||||
data.dupealias = name+' '+i;
|
||||
if(!dupelogskip.includes(id)) console.log(" dupealias added " + id + ": "+data.dupealias);
|
||||
namemap[key+i] = data;
|
||||
return true;
|
||||
}
|
||||
|
||||
const xcity = getExcel('CityConfigData');
|
||||
@ -155,9 +179,9 @@ function exportData(folder, collateFunc, englishonly, skipwrite) {
|
||||
// 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('achievementgroups', require('./collateAchievementGroup'));
|
||||
exportData('adventureranks', require('./collateAdventureRank'));
|
||||
// exportData('crafts', require('./collateCraft'));
|
||||
|
||||
// exportData('commissions', require('./collateCommission'), true); // unfinished
|
||||
// exportData('voiceovers', require('./collateVoiceover'), true); // unfinished
|
||||
|
28
myscripts/template.js
Normal file
28
myscripts/template.js
Normal file
@ -0,0 +1,28 @@
|
||||
const xmat = getExcel('MaterialExcelConfigData');
|
||||
|
||||
|
||||
|
||||
function collate(lang) {
|
||||
const language = getLanguage(lang);
|
||||
const dupeCheck = {};
|
||||
let mydata = xmat.reduce((accum, obj) => {
|
||||
let data = {};
|
||||
data.id = obj.Id;
|
||||
|
||||
data.name = language[obj.nameTextMapHash];
|
||||
data.description = sanitizeDescription(language[obj.descTextMapHash]);
|
||||
|
||||
|
||||
|
||||
let filename = makeUniqueFileName(obj.nameTextMapHash, accum);
|
||||
if(filename === '') return accum;
|
||||
checkDupeName(data, dupeCheck);
|
||||
accum[filename] = data;
|
||||
|
||||
return accum;
|
||||
}, {});
|
||||
|
||||
return mydata;
|
||||
}
|
||||
|
||||
module.exports = collate;
|
Loading…
x
Reference in New Issue
Block a user