From ed448a9f8471d2f4379cb379216e5f3997e2d85b Mon Sep 17 00:00:00 2001 From: SpikeHD Date: Tue, 19 Apr 2022 02:06:58 -0700 Subject: [PATCH] properly add ascension-locked talents --- .../emu/grasscutter/commands/PlayerCommands.java | 7 +++++++ .../grasscutter/game/avatar/GenshinAvatar.java | 15 +++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/src/main/java/emu/grasscutter/commands/PlayerCommands.java b/src/main/java/emu/grasscutter/commands/PlayerCommands.java index 53b558755..42317e63b 100644 --- a/src/main/java/emu/grasscutter/commands/PlayerCommands.java +++ b/src/main/java/emu/grasscutter/commands/PlayerCommands.java @@ -4,6 +4,7 @@ import emu.grasscutter.Grasscutter; import emu.grasscutter.data.GenshinData; import emu.grasscutter.data.def.ItemData; import emu.grasscutter.data.def.AvatarData; +import emu.grasscutter.data.def.AvatarSkillDepotData; import emu.grasscutter.data.def.MonsterData; import emu.grasscutter.game.GenshinPlayer; import emu.grasscutter.game.World; @@ -254,6 +255,9 @@ public final class PlayerCommands { GenshinAvatar avatar = new GenshinAvatar(avatarID); avatar.setLevel(level); avatar.setPromoteLevel(ascension); + + // This will handle stats and talents + avatar.recalcStats(); targetPlayer.addAvatar(avatar); } @@ -291,6 +295,9 @@ public final class PlayerCommands { GenshinAvatar avatar = new GenshinAvatar(avatarID); avatar.setLevel(level); avatar.setPromoteLevel(ascension); + + // This will handle stats and talents + avatar.recalcStats(); targetPlayer.addAvatar(avatar); } catch (NumberFormatException ignored) { diff --git a/src/main/java/emu/grasscutter/game/avatar/GenshinAvatar.java b/src/main/java/emu/grasscutter/game/avatar/GenshinAvatar.java index 414c73cfa..7c08d4bbc 100644 --- a/src/main/java/emu/grasscutter/game/avatar/GenshinAvatar.java +++ b/src/main/java/emu/grasscutter/game/avatar/GenshinAvatar.java @@ -510,6 +510,21 @@ public class GenshinAvatar { } } + // Add proud skills and unlock them if needed + AvatarSkillDepotData skillDepot = GenshinData.getAvatarSkillDepotDataMap().get(this.getSkillDepotId()); + this.getProudSkillList().clear(); + for (InherentProudSkillOpens openData : skillDepot.getInherentProudSkillOpens()) { + if (openData.getProudSkillGroupId() == 0) { + continue; + } + if (openData.getNeedAvatarPromoteLevel() <= this.getPromoteLevel()) { + int proudSkillId = (openData.getProudSkillGroupId() * 100) + 1; + if (GenshinData.getProudSkillDataMap().containsKey(proudSkillId)) { + this.getProudSkillList().add(proudSkillId); + } + } + } + // Proud skills for (int proudSkillId : this.getProudSkillList()) { ProudSkillData proudSkillData = GenshinData.getProudSkillDataMap().get(proudSkillId);