mirror of
https://github.com/EpinelPS/EpinelPS.git
synced 2025-12-13 07:24:52 +01:00
Add SetCoreLevel command
This commit is contained in:
@@ -212,6 +212,7 @@ namespace EpinelPS
|
||||
Console.WriteLine(" SetLevel (level) - Set all characters' level (between 1 and 999 takes effect on game and server restart)");
|
||||
Console.WriteLine(" SetSkillLevel (level) - Set all characters' skill levels between 1 and 10 (takes effect on game and server restart)");
|
||||
Console.WriteLine(" addallcharacters - Add all missing characters to the selected user with default levels and skills (takes effect on game and server restart)");
|
||||
Console.WriteLine(" SetGrade (grade) - Set all characters' grades based on the input (from 0 to 11)");
|
||||
|
||||
}
|
||||
else if (input == "ls /users")
|
||||
@@ -299,6 +300,129 @@ namespace EpinelPS
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (input.StartsWith("SetCoreLevel"))
|
||||
{
|
||||
if (selectedUser == 0)
|
||||
{
|
||||
Console.WriteLine("No user selected");
|
||||
}
|
||||
else
|
||||
{
|
||||
var user = JsonDb.Instance.Users.FirstOrDefault(x => x.ID == selectedUser);
|
||||
if (user == null)
|
||||
{
|
||||
Console.WriteLine("Selected user does not exist");
|
||||
selectedUser = 0;
|
||||
prompt = "# ";
|
||||
}
|
||||
else if (args.Length == 2 && int.TryParse(args[1], out int inputGrade) && inputGrade >= 0 && inputGrade <= 11)
|
||||
{
|
||||
foreach (var character in user.Characters)
|
||||
{
|
||||
// Get current character's Tid
|
||||
int tid = character.Tid;
|
||||
|
||||
// Get the character data from the character table
|
||||
if (!GameData.Instance.characterTable.TryGetValue(tid, out var charData))
|
||||
{
|
||||
Console.WriteLine($"Character data not found for Tid {tid}");
|
||||
continue;
|
||||
}
|
||||
|
||||
int currentGradeCoreId = charData.grade_core_id;
|
||||
int nameCode = charData.name_code;
|
||||
string originalRare = charData.original_rare;
|
||||
|
||||
// Skip characters with original_rare == "R"
|
||||
if (originalRare == "R" || nameCode == 3999)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// Now handle normal SR and SSR characters
|
||||
int maxGradeCoreId = 0;
|
||||
|
||||
// If the character is "SSR", it can have a grade_core_id from 1 to 11
|
||||
if (originalRare == "SSR")
|
||||
{
|
||||
maxGradeCoreId = 11; // SSR characters can go from 1 to 11
|
||||
|
||||
// Calculate the new grade_core_id within the bounds
|
||||
int newGradeCoreId = Math.Min(inputGrade + 1, maxGradeCoreId); // +1 because inputGrade starts from 0 for SSRs
|
||||
|
||||
// Find the character with the same name_code and new grade_core_id
|
||||
var newCharData = GameData.Instance.characterTable.Values.FirstOrDefault(c =>
|
||||
c.name_code == nameCode && c.grade_core_id == newGradeCoreId);
|
||||
|
||||
if (newCharData != null)
|
||||
{
|
||||
// Update the character's Tid and Grade
|
||||
character.Tid = newCharData.id;
|
||||
character.Grade = inputGrade;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// If the character is "SR", it can have a grade_core_id from 101 to 103
|
||||
else if (originalRare == "SR")
|
||||
{
|
||||
maxGradeCoreId = 103; // SR characters can go from 101 to 103
|
||||
|
||||
// Start from 101 and increment based on inputGrade (inputGrade 0 -> grade_core_id 101)
|
||||
int newGradeCoreId = Math.Min(101 + inputGrade, maxGradeCoreId); // Starts at 101
|
||||
|
||||
// Find the character with the same name_code and new grade_core_id
|
||||
var newCharData = GameData.Instance.characterTable.Values.FirstOrDefault(c =>
|
||||
c.name_code == nameCode && c.grade_core_id == newGradeCoreId);
|
||||
|
||||
if (newCharData != null)
|
||||
{
|
||||
// Update the character's Tid and Grade
|
||||
character.Tid = newCharData.id;
|
||||
character.Grade = inputGrade;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Console.WriteLine($"Core level of all characters have been set to {inputGrade}");
|
||||
JsonDb.Save();
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("Invalid argument. Core level must be between 0 and 11.");
|
||||
}
|
||||
}
|
||||
//code above WILL change tids in user.characters so this will update them in representation team
|
||||
foreach (var user in JsonDb.Instance.Users)
|
||||
{
|
||||
// Check if RepresentationTeamData exists and has slots
|
||||
if (user.RepresentationTeamData != null && user.RepresentationTeamData.Slots != null)
|
||||
{
|
||||
// Iterate through RepresentationTeamData slots
|
||||
foreach (var slot in user.RepresentationTeamData.Slots)
|
||||
{
|
||||
// Find the character in user's character list that matches the slot's Csn
|
||||
var correspondingCharacter = user.Characters.FirstOrDefault(c => c.Csn == slot.Csn);
|
||||
|
||||
if (correspondingCharacter != null)
|
||||
{
|
||||
// Update the Tid value if it differs
|
||||
if (slot.Tid != correspondingCharacter.Tid)
|
||||
{
|
||||
slot.Tid = correspondingCharacter.Tid;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Save the updated data
|
||||
JsonDb.Save();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
else if (input == "sickpulls")
|
||||
{
|
||||
@@ -364,6 +488,32 @@ namespace EpinelPS
|
||||
Console.WriteLine("Invalid argument. Level must be between 1 and 999.");
|
||||
}
|
||||
}
|
||||
//code above WILL change levels in user.characters so this will update them in representation team
|
||||
foreach (var user in JsonDb.Instance.Users)
|
||||
{
|
||||
// Check if RepresentationTeamData exists and has slots
|
||||
if (user.RepresentationTeamData != null && user.RepresentationTeamData.Slots != null)
|
||||
{
|
||||
// Iterate through RepresentationTeamData slots
|
||||
foreach (var slot in user.RepresentationTeamData.Slots)
|
||||
{
|
||||
// Find the character in user's character list that matches the slot's Csn
|
||||
var correspondingCharacter = user.Characters.FirstOrDefault(c => c.Csn == slot.Csn);
|
||||
|
||||
if (correspondingCharacter != null)
|
||||
{
|
||||
// Update the Level value if it differs
|
||||
if (slot.Level != correspondingCharacter.Level)
|
||||
{
|
||||
slot.Level = correspondingCharacter.Level;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Save the updated data
|
||||
JsonDb.Save();
|
||||
}
|
||||
else if (input.StartsWith("SetSkillLevel"))
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user