manually add domains haha

This commit is contained in:
theBowja 2022-04-02 15:48:41 -04:00
parent 7126cfa04d
commit a6df2b6178
9 changed files with 3518 additions and 20 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
const xdungeon = getExcel('DungeonExcelConfigData');
let xdungeon = getExcel('DungeonExcelConfigData');
const xpreview = getExcel('RewardPreviewExcelConfigData');
const xdungeonentry = getExcel('DungeonEntryExcelConfigData'); // adventure handbook
const xdisplay = getExcel('DisplayItemExcelConfigData');
@ -30,6 +30,8 @@ function getDomainTypeTextMapHash(domaintype) {
"UI_DUNGEON_ENTRY_361", // "Momiji-Dyed Court"
"UI_DUNGEON_ENTRY_310", // "Violet Court"
"UI_DUNGEON_ENTRY_368", // "Court of Flowing Sand"
"UI_DUNGEON_ENTRY_433", // "Slumbering Court"
"UI_DUNGEON_ENTRY_516", // "The Lost Valley"
*/
function getDomainEntranceTextMapHash(englishname) {
englishname = englishname.toLowerCase();
@ -64,7 +66,9 @@ function getDomainEntranceTextMapHash(englishname) {
else if(englishname.includes('sunken sands') || englishname.includes('altar of sands') || englishname.includes('sand burial'))
return mapping("UI_DUNGEON_ENTRY_368");
else if(englishname.includes('necropolis'))
return mapping("UI_DUNGEON_ENTRY_433")
return mapping("UI_DUNGEON_ENTRY_433");
else if(englishname.includes('machine nest'))
return mapping("UI_DUNGEON_ENTRY_516");
else
console.log('no domain entrance mapping found for '+englishname);
}
@ -79,7 +83,7 @@ function isSundaySpecial(englishname) {
function collateDomain(lang) {
const language = getLanguage(lang);
const xmat = getExcel('MaterialExcelConfigData');
xdungeon = moredungeons.concat(xdungeon);
let mydomain = xdungeon.reduce((accum, obj) => {
if(obj.Type !== "DUNGEON_DAILY_FIGHT" || obj.StateType !== "DUNGEON_STATE_RELEASE") return accum;
if(isSundaySpecial(getLanguage('EN')[obj.NameTextMapHash])) return accum;
@ -99,7 +103,8 @@ function collateDomain(lang) {
data.region = language[xcity.find(city => city.CityId === obj.CityID).CityNameTextMapHash];
data.recommendedlevel = obj.ShowLevel;
// data.recommendedelements = obj.RecommendElementTypes.filter(ele => ele !== 'None').map(ele => language[xmanualtext.find(man => man.TextMapId === ele).TextMapContentTextMapHash]);
if(typeof obj.RecommendElementTypes[0] === 'string')
data.recommendedelements = obj.RecommendElementTypes.filter(ele => ele !== 'None').map(ele => language[xmanualtext.find(man => man.TextMapId === ele).TextMapContentTextMapHash]);
data.daysofweek = getDayWeekList(obj.Id, language);
if(data.daysofweek.length === 0) delete data.daysofweek;
@ -122,7 +127,8 @@ function collateDomain(lang) {
return { name: language[disp.NameTextMapHash], rarity: disp.RankLevel+'' };
}
});
// data.disorder = xdisorder.filter(d => d.Id+'' === Object.keys(obj.LevelConfigMap)[0]).map(d => language[d.DescTextMapHash]);
if(obj.disorderoverride) data.disorder = language[obj.disorderoverride];
//data.disorder = xdisorder.filter(d => d.Id+'' === Object.keys(obj.LevelConfigMap)[0]).map(d => language[d.DescTextMapHash]);
data.imagename = obj.EntryPicPath;
let filename = makeFileName(getLanguage('EN')[obj.NameTextMapHash]);
@ -158,3 +164,64 @@ function cleanupDungeonFile() {
}
cleanupDungeonFile();
// Fire, Water, Ice, Rock, Electric, Wind, Grass
let moredungeons = [
{ // machine nest 1
Id: 99991,
Type: "DUNGEON_DAILY_FIGHT",
StateType: "DUNGEON_STATE_RELEASE",
NameTextMapHash: 4233644080,
DescTextMapHash: 1269716077,
CityID: 2,
ShowLevel: 59,
RecommendElementTypes: ['Fire', 'Electric', 'Rock', 'Wind'],
LimitLevel: 30,
PassRewardPreviewID: 22443,
EntryPicPath: 'UI_DungeonPic_CycleDungeonChasm',
disorderoverride: 4145618250
},
{ // machine nest 2
Id: 99992,
Type: "DUNGEON_DAILY_FIGHT",
StateType: "DUNGEON_STATE_RELEASE",
NameTextMapHash: 1948966872,
DescTextMapHash: 1269716077,
CityID: 2,
ShowLevel: 59,
RecommendElementTypes: ['Fire', 'Electric', 'Rock', 'Wind'],
LimitLevel: 35,
PassRewardPreviewID: 22444,
EntryPicPath: 'UI_DungeonPic_CycleDungeonChasm',
disorderoverride: 4145618250
},
{ // machine nest 3
Id: 99993,
Type: "DUNGEON_DAILY_FIGHT",
StateType: "DUNGEON_STATE_RELEASE",
NameTextMapHash: 2797186184,
DescTextMapHash: 1269716077,
CityID: 2,
ShowLevel: 59,
RecommendElementTypes: ['Fire', 'Electric', 'Rock', 'Wind'],
LimitLevel: 40,
PassRewardPreviewID: 22445,
EntryPicPath: 'UI_DungeonPic_CycleDungeonChasm',
disorderoverride: 4145618250
},
{ // machine nest 4
Id: 99994,
Type: "DUNGEON_DAILY_FIGHT",
StateType: "DUNGEON_STATE_RELEASE",
NameTextMapHash: 1531297112,
DescTextMapHash: 1269716077,
CityID: 2,
ShowLevel: 59,
RecommendElementTypes: ['Fire', 'Electric', 'Rock', 'Wind'],
LimitLevel: 45,
PassRewardPreviewID: 22446,
EntryPicPath: 'UI_DungeonPic_CycleDungeonChasm',
disorderoverride: 4145618250
},
];

View File

@ -53,6 +53,11 @@ const monsterMap = {
"bless necropolis iii": ['thunder hound', 'thunder hound whelp', 'el hili shooter'],
"bless necropolis iv": ['thunder hound', 'thunder hound whelp', 'crack axe mita'],
"bless machine nest i": ['ru guard', 'ru destroy'],
"bless machine nest ii": ['ru guard', 'ru scout', 'ru cruiser', 'ru destroy'],
"bless machine nest iii": ['ru scout', 'ru cruiser', 'ru destroy'],
"bless machine nest iv": ['ru grader', 'ru cruiser', 'ru destroy'],
"forge alt sand i": ['hy slime', 'la hy slime', 'py slime', 'la py slime'],
"forge alt sand ii": ['la hy slime', 'la py slime'],
"forge alt sand iii": ['la hy slime', 'la py slime', 'hy ab mage', 'py ab mage'],

View File

@ -31,6 +31,7 @@ function collateEnemy(lang) {
let mymonster = xcodex.reduce((accum, obj) => {
if(obj.Type !== 'CODEX_MONSTER') return accum;
if(obj.IsDeleteWatcherAfterFinish) return accum;
if(obj.Id === 29010101) obj.Id = 29010104; // use correct stormterror
let mon = xmonster.find(m => m.Id === obj.Id);
let des = xdescribe.find(d => d.Id === obj.DescribeId);
let spe = xspecial.find(s => s.SpecialNameLabID === des.SpecialNameLabID);
@ -63,7 +64,7 @@ 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 === 29010101) { // dvalin lvl90
} 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);
} else if(obj.Id === 29020101) { // wolfboss lvl90
@ -93,6 +94,7 @@ function collateEnemy(lang) {
let sub = obj.SubType || 'CODEX_SUBTYPE_ELEMENTAL';
sub = sub.slice(sub.lastIndexOf('_')+1);
// console.log(obj.Id);
// console.log(sub);
sub = xmanualtext.find(m => m.TextMapId === `UI_CODEX_ANIMAL_CATEGORY_${sub}`).TextMapContentTextMapHash;
data.enemytype = mon.SecurityLevel || 'COMMON';
@ -128,6 +130,7 @@ function collateEnemy(lang) {
stats.base.defense = mon.DefenseBase;
stats.curve = {};
try {
// if(obj.Id === 29010101) console.log(mon.PropGrowCurves);
stats.curve.hp = mon.PropGrowCurves.find(ele => ele.Type === 'FIGHT_PROP_BASE_HP').GrowCurve;
stats.curve.attack = mon.PropGrowCurves.find(ele => ele.Type === 'FIGHT_PROP_BASE_ATTACK').GrowCurve;
stats.curve.defense = mon.PropGrowCurves.find(ele => ele.Type === 'FIGHT_PROP_BASE_DEFENSE').GrowCurve;
@ -236,6 +239,11 @@ function fixAnimalCodexSubType() {
let match = out.find(ele => ele.Id === ob.KABAHENDGOO); // replace with ID
match.SubType = ob.JKOLEMPKHMI; // replace with CODEX_SUBTYPE_HILICHURL
}
// manual fixes for 2.6 update
out.find(ele => ele.Id === 22080101).SubType = "CODEX_SUBTYPE_ABYSS";
out.find(ele => ele.Id === 24010401).SubType = "CODEX_SUBTYPE_AUTOMATRON";
out.find(ele => ele.Id === 26090101).SubType = "CODEX_SUBTYPE_BEAST";
out = JSON.stringify(out, null, '\t');
fs.writeFileSync('../ExcelBinOutput/AnimalCodexExcelConfigData.json', out);
}

View File

@ -1,6 +1,26 @@
/*
MATERIAL_AVATAR_MATERIAL is talent level-up material, etc.
check MaterialSourceDataExcelConfigData should have
{
Id: 114007,
DungeonList: [
4320,
4321,
4322,
4323
],
TextList: [
4083257751,
4201531456,
3807357581,
2886122308,
3675025673,
2276455088
]
}
*/
const filter = ['MATERIAL_EXCHANGE', 'MATERIAL_WOOD', 'MATERIAL_AVATAR_MATERIAL', 'MATERIAL_EXP_FRUIT',
@ -60,8 +80,10 @@ function collateMaterial(lang) {
let dungeonlist = tmp.DungeonList.filter(ele => ele !== 0);
if(dungeonlist > 0) {
if(dungeonlist.length > 1) console.log(`${data.name} drops from more than one dungeon!`);
data.dropdomain = language[xdungeon.find(ele => ele.Id === dungeonlist[0]).DisplayNameTextMapHash]; // artifact domains don't have DisplayNameTextMapHash
data.daysofweek = getDayWeekList(dungeonlist[0], language);
if(xdungeon.find(ele => ele.Id === dungeonlist[0])) {
// data.dropdomain = language[xdungeon.find(ele => ele.Id === dungeonlist[0]).DisplayNameTextMapHash]; // artifact domains don't have DisplayNameTextMapHash
// data.daysofweek = getDayWeekList(dungeonlist[0], language);
}
}
// get fishing locations
if(getLanguage('EN')[obj.TypeDescTextMapHash] === 'Fish') {
@ -78,7 +100,8 @@ function collateMaterial(lang) {
return poolAccum;
}, []);
}
data.source = tmp.TextList.map(ele => language[ele]).filter(ele => ele !== '');
const sourcelist = tmp.TextList.concat(tmp.JumpList);
data.source = sourcelist.map(ele => language[ele]).filter(ele => ele !== ''); // TextList/JumpList
data.imagename = obj.Icon;
if(!data.imagename) console.log(data.name+' has no icon');
@ -116,4 +139,4 @@ function cleanupMaterialSourceFile() {
fs.writeFileSync('../ExcelBinOutput/MaterialSourceDataExcelConfigData.json', data);
}
cleanupMaterialSourceFile();
// cleanupMaterialSourceFile();

View File

@ -12,6 +12,7 @@ function collateNamecard(lang) {
data.name = language[obj.NameTextMapHash];
data.description = sanitizeDescription(language[obj.DescTextMapHash]);
data.sortorder = obj.Id;
let sauce = xsource.find(ele => ele.Id === obj.Id);
data.source = sauce.TextList.map(ele => language[ele]).filter(ele => ele !== '');

View File

@ -5,9 +5,9 @@ const xavatar = getExcel('AvatarExcelConfigData');
// for AvatarCostumeExcelConfigData
const propertyMap = {
Id: 'KBBEOGFDOOL',
AvatarId: 'LDPMEMMAELP', // 10000003
IconName: 'BBPJLOILMEA' // UI_AvatarIcon_QinCostumeSea
Id: 'OBACDKHOCAM', // 200301
AvatarId: 'BPAMNILGFPK', // 10000003
IconName: 'DANEMGDCNIM' // UI_AvatarIcon_QinCostumeSea
}
// taken from collateCharacter.js

View File

@ -108,17 +108,18 @@ function exportData(folder, collateFunc, englishonly, skipwrite) {
// exportCurve('weapons', 'WeaponCurveExcelConfigData')
// exportData('artifacts', require('./collateArtifact.js'));
// exportData('foods', require('./collateFood'));
// exportData('materials', require('./collateMaterial')); // run twice
// exportData('materials', require('./collateMaterial'), false); // change: used both TextList/JumpList. temp removed dropdomain/daysofweek
exportData('domains', require('./collateDomain')); // run twice // remember to add back recommendedelements and disorder and entrypicpath
// exportData('enemies', require('./collateEnemy'));
// exportData('domains', require('./collateDomainMonsterList')); // run only after both domains and enemies have run. sync. must do after domain
// exportData('enemies', require('./collateEnemy'), true);
// exportCurve('enemies', 'MonsterCurveExcelConfigData');
// exportData('outfits', require('./collateOutfit'));
exportData('domains', require('./collateDomainMonsterList')); // MUST do run only after both domains and enemies have run. sync.
// exportData('outfits', require('./collateOutfit')); // Fix obfuscated keys!
// exportData('windgliders', require('./collateWindGlider'));
// exportData('animals', require('./collateAnimal'));
// exportData('namecards', require('./collateNamecard')); // not done
// exportData('geographies', require('./collateGeography')); // not done
// exportData('namecards', require('./collateNamecard'));
// exportData('geographies', require('./collateGeography'));
// exportData('achievements', require('./collateAchievement'));
// exportData('achievementgroups', require('./collateAchievementGroup'));
// exportData('commissions', require('./collateCommission'), true);