diff --git a/Common/Data/Excel/RoleLevelExcel.cs b/Common/Data/Excel/RoleLevelExcel.cs new file mode 100644 index 0000000..fddf417 --- /dev/null +++ b/Common/Data/Excel/RoleLevelExcel.cs @@ -0,0 +1,14 @@ +namespace MikuSB.Data.Excel; + +[ResourceEntity("challenge/role/level.json")] +public class RoleLevelExcel : ExcelResource +{ + public uint ID { get; set; } + + public override uint GetId() => ID; + + public override void Loaded() + { + GameData.RoleLevelData[ID] = this; + } +} diff --git a/Common/Data/GameData.cs b/Common/Data/GameData.cs index 1b785a9..2293ea0 100644 --- a/Common/Data/GameData.cs +++ b/Common/Data/GameData.cs @@ -13,6 +13,7 @@ public static class GameData public static Dictionary BreakLevelLimitData { get; private set; } = []; public static Dictionary RecycleData { get; private set; } = []; public static Dictionary ChapterLevelData { get; private set; } = []; + public static Dictionary RoleLevelData { get; private set; } = []; public static Dictionary ArItemData { get; private set; } = []; public static Dictionary ManifestationData { get; private set; } = []; public static Dictionary Rogue3DDifficultData { get; private set; } = []; diff --git a/GameServer/Game/Player/PlayerInstance.cs b/GameServer/Game/Player/PlayerInstance.cs index 7fc72f0..0269f3f 100644 --- a/GameServer/Game/Player/PlayerInstance.cs +++ b/GameServer/Game/Player/PlayerInstance.cs @@ -425,6 +425,14 @@ public class PlayerInstance(PlayerGameData data) yield return (22, levelId, 1_700_000_000); } + // Role fragment chapters use Condition.PRE_LEVEL against Launch.GPASSID as well. + // Mark every role level as cleared so character-specific stages beyond the first one unlock. + foreach (var levelId in GameData.RoleLevelData.Keys) + { + yield return (21, levelId, 7); + yield return (22, levelId, 1_700_000_000); + } + foreach (var guide in GameData.GuideData.Values) { yield return (4, guide.ID, 999); diff --git a/version.txt b/version.txt index 90f5e6c..a555906 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -v=3.5 \ No newline at end of file +v=3.6 \ No newline at end of file