no idea what i did

This commit is contained in:
theBowja 2022-11-01 19:49:15 -04:00
parent ef09ed084c
commit 6baeb50354
12 changed files with 114 additions and 40 deletions

View File

@ -3,7 +3,9 @@ const xgoal = getExcel('AchievementGoalExcelConfigData');
const xreward = getExcel('RewardExcelConfigData'); const xreward = getExcel('RewardExcelConfigData');
const xmat = getExcel('MaterialExcelConfigData'); const xmat = getExcel('MaterialExcelConfigData');
function collateAchievement(lang) { function collateAchievement(lang) {
const dupeCheck = {};
const language = getLanguage(lang); const language = getLanguage(lang);
let myachievement = xachieve.reduce((accum, obj) => { let myachievement = xachieve.reduce((accum, obj) => {
if(obj.isDisuse === true) { if(obj.isDisuse === true) {
@ -39,14 +41,9 @@ function collateAchievement(lang) {
data['stage'+data.stages] = addStage(obj, language); 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(filename === '') return accum;
if(accum[filename] !== undefined) { checkDupeName(data, dupeCheck);
if(obj.id !== 84004 && obj.id !== 86007)
console.log('filename collision: ' + filename + ' disuse: ' + obj.isDisuse);
filename+='a';
}
// if(accum[filename] !== undefined) return accum;
accum[filename] = data; accum[filename] = data;
return accum; return accum;
}, {}); }, {});

View File

@ -4,6 +4,7 @@ const xmat = getExcel('MaterialExcelConfigData');
function collateAchievementGroup(lang) { function collateAchievementGroup(lang) {
const language = getLanguage(lang); const language = getLanguage(lang);
const dupeCheck = {};
let myachievementgroup = xgroup.reduce((accum, obj) => { let myachievementgroup = xgroup.reduce((accum, obj) => {
let data = {}; let data = {};
data.id = obj.id; data.id = obj.id;
@ -25,9 +26,9 @@ function collateAchievementGroup(lang) {
data.nameicon = obj.iconPath; data.nameicon = obj.iconPath;
let filename = makeFileName(getLanguage('EN')[obj.nameTextMapHash]); let filename = makeUniqueFileName(obj.nameTextMapHash, accum);
if(filename === '') return accum; if(filename === '') return accum;
if(accum[filename] !== undefined) console.log('filename collision: ' + filename); checkDupeName(data, dupeCheck);
accum[filename] = data; accum[filename] = data;
return accum; return accum;
}, {}); }, {});

View File

@ -14,6 +14,7 @@ for([key, value] of Object.entries(xcodex[0])) {
function collateAnimal(lang) { function collateAnimal(lang) {
const language = getLanguage(lang); const language = getLanguage(lang);
const dupeCheck = {};
let mydata = xcodex.reduce((accum, obj) => { let mydata = xcodex.reduce((accum, obj) => {
if(obj.type === 'CODEX_MONSTER') return accum; if(obj.type === 'CODEX_MONSTER') return accum;
if(obj.isDisuse) return accum; if(obj.isDisuse) return accum;
@ -33,9 +34,9 @@ function collateAnimal(lang) {
data.nameicon = mydescribe.icon; data.nameicon = mydescribe.icon;
let filename = makeFileName(getLanguage('EN')[mydescribe.nameTextMapHash]); let filename = makeUniqueFileName(mydescribe.nameTextMapHash, accum);
if(filename === '') return accum; if(filename === '') return accum;
if(accum[filename] !== undefined) console.log('filename collision: ' + filename); checkDupeName(data, dupeCheck);
accum[filename] = data; accum[filename] = data;
return accum; return accum;
}, {}); }, {});

View File

@ -108,20 +108,20 @@ const monsterMap = {
"forge trial thunder iii": ['la el slime', 'mu el slime', 'fa el ci mage'], "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 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 i": ['str pyro fungus', 'fl dendro fungus', 'fl hydro fungus', 'wh electro fungus'],
"forge tainted clouds ii": ['cryo fungus', 'pyro fungus', 'geo fungus', 'dendro fungus', '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": ['pyro fungus', 'cryo fungus', 'geo fungus', 'electro fungus', 'dendro fungus', 'hydroshroom', 'dendroshroom'], "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": ['hydro fungus', 'dendro fungus', 'hydroshroom', '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 i": ['str pyro fungus', 'f dendro fungus', 'f hydro fungus', 'wh electro fungus'],
"forge obsession ii": ['cryo fungus', 'pyro fungus', 'geo fungus', 'dendro fungus', 'electro fungus'], "forge obsession ii": ['wh cryo fungus', 'str pyro fungus', 'str geo fungus', 'f dendro fungus', 'wh electro fungus'],
"forge obsession iii": ['pyro fungus', 'cryo fungus', 'geo fungus', 'electro fungus', 'dendro fungus', 'hydroshroom', 'dendroshroom'], "forge obsession iii": ['str pyro fungus', 'wh cryo fungus', 'str geo fungus', 'electro fungus', 'f dendro fungus', 'g hydroshroom', 'w dendroshroom'],
"forge obsession iv": ['hydro fungus', 'dendro fungus', 'hydroshroom', '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 i": ['str pyro fungus', 'f dendro fungus', 'f hydro fungus', 'wh electro fungus'],
"forge lead karma ii": ['cryo fungus', 'pyro fungus', 'geo fungus', 'dendro fungus', '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": ['pyro fungus', 'cryo fungus', 'geo fungus', 'electro fungus', 'dendro fungus', 'hydroshroom', 'dendroshroom'], "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": ['hydro fungus', 'dendro fungus', 'hydroshroom', '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 i": ['py slime', 'la py slime', 'py ab mage'],
"maste alt flame ii": ['py slime', 'la py slime', 'py ab mage'], "maste alt flame ii": ['py slime', 'la py slime', 'py ab mage'],

View File

@ -27,6 +27,7 @@ if(out === null) console.log('enemy null resistance rounding');
function collateEnemy(lang) { function collateEnemy(lang) {
const language = getLanguage(lang); const language = getLanguage(lang);
const xmat = getExcel('MaterialExcelConfigData'); const xmat = getExcel('MaterialExcelConfigData');
const dupeCheck = {};
let mymonster = xcodex.reduce((accum, obj) => { let mymonster = xcodex.reduce((accum, obj) => {
if(obj.type !== 'CODEX_MONSTER') return accum; 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 // Abyss Lector: Violet Lightning, Abyss Herald: Wicked Torrents, Abyss Lector: Fathomless Flames
// Hydro Cicin, Electro Cicin, Cryo Cicin // Hydro Cicin, Electro Cicin, Cryo Cicin
data.rewardpreview = []; 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 } else if(obj.Id === 29010104) { // dvalin lvl90
let rewardpreview = xpreview.find(pre => pre.id === 15005).previewItems.filter(pre => pre.id); let rewardpreview = xpreview.find(pre => pre.id === 15005).previewItems.filter(pre => pre.id);
data.rewardpreview = mapRewardList(rewardpreview, language); data.rewardpreview = mapRewardList(rewardpreview, language);
@ -145,6 +143,7 @@ function collateEnemy(lang) {
let filename = makeFileName(getLanguage('EN')[des.nameTextMapHash]); let filename = makeFileName(getLanguage('EN')[des.nameTextMapHash]);
if(filename === '') return accum; if(filename === '') return accum;
checkDupeName(data, dupeCheck);
accum[filename] = data; accum[filename] = data;
return accum; return accum;
@ -169,7 +168,14 @@ const noRewardListMonsterMap = {
25030101: 25010201, // Treasure Hoarders: Carmen 25030101: 25010201, // Treasure Hoarders: Carmen
25040101: 25010201, // Treasure Hoarders: Boss 25040101: 25010201, // Treasure Hoarders: Boss
25050101: 25010201, // Millelith Soldier 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 // makes sure each monster has a corresponding "investigation" data

View File

@ -20,6 +20,7 @@ const mapQualityToProp = {
function collateFood(lang) { function collateFood(lang) {
const language = getLanguage(lang); const language = getLanguage(lang);
const dupeCheck = {};
let myfood = xrecipe.reduce((accum, obj) => { let myfood = xrecipe.reduce((accum, obj) => {
//if(obj.id !== 1003) return accum; //if(obj.id !== 1003) return accum;
@ -61,7 +62,11 @@ function collateFood(lang) {
// data.source = // data.source =
data.imagename = obj.icon; 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 // check if there is a specialty
let myspec = getSpecialty(obj.id); let myspec = getSpecialty(obj.id);
@ -90,7 +95,11 @@ function collateFood(lang) {
spdata.ingredients = ingredients; spdata.ingredients = ingredients;
spdata.imagename = xd.icon; 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; return accum;
}, {}); }, {});
// console.log(myfood); // console.log(myfood);

View File

@ -5,6 +5,7 @@ const xarea = getExcel('WorldAreaConfigData');
function collageGeography(lang) { function collageGeography(lang) {
const language = getLanguage(lang); const language = getLanguage(lang);
const dupeCheck = {};
let mygeography = xview.reduce((accum, obj) => { let mygeography = xview.reduce((accum, obj) => {
let data = {}; let data = {};
@ -24,6 +25,7 @@ function collageGeography(lang) {
let filename = makeFileName(getLanguage('EN')[obj.nameTextMapHash]); let filename = makeFileName(getLanguage('EN')[obj.nameTextMapHash]);
if(filename === '') return accum; if(filename === '') return accum;
if(accum[filename] !== undefined) console.log('filename collision: ' + filename); if(accum[filename] !== undefined) console.log('filename collision: ' + filename);
checkDupeName(data, dupeCheck);
accum[filename] = data; accum[filename] = data;
return accum; return accum;
}, {}); }, {});

View File

@ -57,6 +57,7 @@ function collateMaterial(lang) {
const xpool = getExcel('FishPoolExcelConfigData'); const xpool = getExcel('FishPoolExcelConfigData');
let sortOrder = 0; let sortOrder = 0;
const dupeCheck = {};
let mymaterial = xmat.reduce((accum, obj) => { let mymaterial = xmat.reduce((accum, obj) => {
sortOrder++; sortOrder++;
@ -111,9 +112,10 @@ function collateMaterial(lang) {
data.imagename = obj.icon; data.imagename = obj.icon;
if(!data.imagename) console.log(data.name+' has no 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 === '') return accum;
if(filename.includes('shrineofdepthskey')) return accum; if(filename.includes('shrineofdepthskey')) return accum;
checkDupeName(data, dupeCheck);
accum[filename] = data; accum[filename] = data;
return accum; return accum;
}, {}); }, {});

View File

@ -15,16 +15,18 @@ const xplayableWeapon = xweapon.filter(obj => {
function collateWeapon(lang) { function collateWeapon(lang) {
const language = getLanguage(lang); const language = getLanguage(lang);
const dupeCheck = {};
const xsubstat = getExcel('WeaponPromoteExcelConfigData'); const xsubstat = getExcel('WeaponPromoteExcelConfigData');
let myweapon = xplayableWeapon.reduce((accum, obj) => { let myweapon = xplayableWeapon.reduce((accum, obj) => {
let data = {}; let data = {};
data.id = obj.id; data.id = obj.id;
let filename = makeUniqueFileName(obj.nameTextMapHash, accum); let filename = makeUniqueFileName(obj.nameTextMapHash, accum, data);
if(filename === "") return accum; if(filename === "") return accum;
if(accum[filename] !== undefined) console.log(filename+' IS NOT UNIQUE'); if(accum[filename] !== undefined) console.log(filename+' IS NOT UNIQUE');
data.name = language[obj.nameTextMapHash]; data.name = language[obj.nameTextMapHash];
checkDupeName(data, dupeCheck);
data.description = sanitizeDescription(language[obj.descTextMapHash]); data.description = sanitizeDescription(language[obj.descTextMapHash]);
data.weapontype = language[weaponTextMapHash[obj.weaponType]]; data.weapontype = language[weaponTextMapHash[obj.weaponType]];
data.rarity = ''+obj.rankLevel; data.rarity = ''+obj.rankLevel;

View File

@ -4,6 +4,7 @@ const xfly = getExcel('AvatarFlycloakExcelConfigData');
function collateWindGlider(lang) { function collateWindGlider(lang) {
const language = getLanguage(lang); const language = getLanguage(lang);
const dupeCheck = {};
let mydata = xfly.reduce((accum, obj) => { let mydata = xfly.reduce((accum, obj) => {
let data = {}; let data = {};
data.id = obj.flycloakId; data.id = obj.flycloakId;
@ -28,6 +29,7 @@ function collateWindGlider(lang) {
let filename = makeFileName(getLanguage('EN')[obj.nameTextMapHash]); let filename = makeFileName(getLanguage('EN')[obj.nameTextMapHash]);
if(filename === '') return accum; if(filename === '') return accum;
if(accum[filename] !== undefined) console.log('filename collision: ' + filename); if(accum[filename] !== undefined) console.log('filename collision: ' + filename);
checkDupeName(data, dupeCheck);
accum[filename] = data; accum[filename] = data;
return accum; return accum;
}, {}); }, {});

View File

@ -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.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.getLanguage = function(abbriev) { return getTextMap(abbriev.toUpperCase()); }
global.normalizeStr = function(str) { return str.normalize('NFD').replace(/[\u0300-\u036f]/g, ''); } 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.convertBold = function(str) { return str.replace(/<color=#FFD780FF>(.*?)<\/color>/gi, '**$1**'); }
global.stripHTML = function(str) { return (str || '').replace(/(<([^>]+)>)/gi, ''); } global.stripHTML = function(str) { return (str || '').replace(/(<([^>]+)>)/gi, ''); }
global.capitalizeFirst = function(str) { return str[0].toUpperCase() + str.toLowerCase().slice(1); } 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; 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". // if it isn't unique, then appends "a" to end. or "b". all the way to "z".
global.makeUniqueFileName = function(textmaphash, map) { global.makeUniqueFileName = function(textmaphash, map) {
let name = getLanguage('EN')[textmaphash]; let name = getLanguage('EN')[textmaphash];
@ -77,11 +78,34 @@ global.makeUniqueFileName = function(textmaphash, map) {
let filename = makeFileName(name); let filename = makeFileName(name);
if(map[filename] === undefined) return filename; if(map[filename] === undefined) return filename;
let charset = "abcdefghijklmnopqrstuvwxyz"; let i = 1;
let i = 0; while(map[filename+"-"+("0" + i).slice(-2)] !== undefined) { i++; }
while(map[filename+charset[i]] !== undefined) { i++; } if(i > 99) console.log("cannot make unique filename for " + name);
if(i === 26) console.log("cannot make unique filename for " + name); else {
else return filename+charset[i]; // 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'); const xcity = getExcel('CityConfigData');
@ -155,9 +179,9 @@ function exportData(folder, collateFunc, englishonly, skipwrite) {
// 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

28
myscripts/template.js Normal file
View 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;