Skill upgrade, more commands, fixes (#21)

* add BuyWallpaper

* added partial stage clear info handling, no longer fails get check

the creation of the clear info still has imperfections, so I've left it disabled for now. no point in letting it clutter the DB until the info is at least accurate in the UI.

* unfinished CP calculation stuff

still need to impl other tables (equipment), need a better way to capture outputs and compare them to retail, not really worth the excess work currently since CP calc isn't used anywhere critical right now

* AddItem command

* AddCharacter command

* finishalltutorials command

* addallmaterials command

also load the material items table

* skill upgrade impl

* update README

* potential fix for bodies not being removed properly on limit breaks and core upgrades

the client seems to be smart enough to deal with zero count item entries, so there's no real reason to remove zero count item entries from the DB

* check to make sure we have the character before adding a body

* use CreateWholeUserDataFromDbUser instead of doing a manual copy
This commit is contained in:
Kyle873
2024-12-20 14:39:21 -05:00
committed by GitHub
parent 6c58b3e137
commit b022eb688c
15 changed files with 947 additions and 440 deletions

View File

@@ -32,8 +32,9 @@ namespace EpinelPS.StaticInfo
private Dictionary<int, CampaignChapterRecord> chapterCampaignData;
private JArray characterCostumeTable;
public Dictionary<int, CharacterRecord> characterTable;
private Dictionary<int, ClearedTutorialData> tutorialTable;
private Dictionary<int, ItemEquipRecord> itemEquipTable;
public Dictionary<int, ClearedTutorialData> tutorialTable;
public Dictionary<int, ItemEquipRecord> itemEquipTable;
public Dictionary<int, ItemMaterialRecord> itemMaterialTable;
private Dictionary<string, JArray> FieldMapData = new Dictionary<string, JArray>(); // Fixed initialization
private Dictionary<int, CharacterLevelData> LevelData = new Dictionary<int, CharacterLevelData>(); // Fixed initialization
private Dictionary<int, TacticAcademyLessonRecord> TacticAcademyLessons = new Dictionary<int, TacticAcademyLessonRecord>(); // Fixed initialization
@@ -54,6 +55,9 @@ namespace EpinelPS.StaticInfo
public Dictionary<int, ArchiveEventDungeonStageRecord> archiveEventDungeonStageRecords = new Dictionary<int, ArchiveEventDungeonStageRecord>();
public Dictionary<int, UserTitleRecord> userTitleRecords = new Dictionary<int, UserTitleRecord>();
public Dictionary<int, ArchiveMessengerConditionRecord> archiveMessengerConditionRecords;
public Dictionary<int, CharacterStatRecord> characterStatTable;
public Dictionary<int, SkillInfoRecord> skillInfoTable;
public Dictionary<int, CostRecord> costTable;
@@ -90,6 +94,10 @@ namespace EpinelPS.StaticInfo
ZipStream = new();
tutorialTable = new();
itemEquipTable = new();
itemMaterialTable = new();
characterStatTable = new();
skillInfoTable = new();
costTable = new();
// Initialize Jukebox data dictionaries
jukeboxListDataRecords = new Dictionary<int, JukeboxListRecord>();
@@ -320,6 +328,12 @@ namespace EpinelPS.StaticInfo
this.itemEquipTable.Add(obj.id, obj);
}
var itemMaterialTable = await LoadZip<ItemMaterialTable>("ItemMaterialTable.json", progress);
foreach (var obj in itemMaterialTable.records)
{
this.itemMaterialTable.Add(obj.id, obj);
}
var characterLevelTable = await LoadZip("CharacterLevelTable.json", progress);
foreach (JToken item in characterLevelTable)
@@ -460,6 +474,24 @@ namespace EpinelPS.StaticInfo
// Load Jukebox data
await LoadJukeboxListData(progress);
await LoadJukeboxThemeData(progress);
var characterStatTable = await LoadZip<CharacterStatTable>("CharacterStatTable.json", progress);
foreach (var obj in characterStatTable.records)
{
this.characterStatTable.Add(obj.id, obj);
}
var skillinfoTable = await LoadZip<SkillInfoTable>("SkillInfoTable.json", progress);
foreach (var obj in skillinfoTable.records)
{
this.skillInfoTable.Add(obj.id, obj);
}
var costTable = await LoadZip<CostTable>("CostTable.json", progress);
foreach (var obj in costTable.records)
{
this.costTable.Add(obj.id, obj);
}
}
public async Task LoadJukeboxListData(ProgressBar bar)