Commit 8d8866aa authored by Yazawazi's avatar Yazawazi Committed by GitHub
Browse files

Fix fetter system

parent 56a1ab64
...@@ -743,9 +743,14 @@ public class GenshinAvatar { ...@@ -743,9 +743,14 @@ public class GenshinAvatar {
} }
public AvatarInfo toProto() { public AvatarInfo toProto() {
int fetterLevel = this.getFetterLevel();
AvatarFetterInfo.Builder avatarFetter = AvatarFetterInfo.newBuilder() AvatarFetterInfo.Builder avatarFetter = AvatarFetterInfo.newBuilder()
.setExpLevel(this.getFetterLevel()) .setExpLevel(fetterLevel);
.setExpNumber(this.getFetterExp());
if (fetterLevel != 10) {
avatarFetter.setExpNumber(this.getFetterExp());
}
if (this.getFetterList() != null) { if (this.getFetterList() != null) {
for (int i = 0; i < this.getFetterList().size(); i++) { for (int i = 0; i < this.getFetterList().size(); i++) {
...@@ -757,11 +762,10 @@ public class GenshinAvatar { ...@@ -757,11 +762,10 @@ public class GenshinAvatar {
} }
} }
int rewardId = this.getNameCardRewardId();
int cardId = this.getNameCardId(); int cardId = this.getNameCardId();
if (this.getPlayer().getNameCardList().contains(cardId)) { if (this.getPlayer().getNameCardList().contains(cardId)) {
avatarFetter.addRewardedFetterLevelList(rewardId); avatarFetter.addRewardedFetterLevelList(10);
} }
AvatarInfo.Builder avatarInfo = AvatarInfo.newBuilder() AvatarInfo.Builder avatarInfo = AvatarInfo.newBuilder()
......
...@@ -9,6 +9,7 @@ import emu.grasscutter.net.packet.Opcodes; ...@@ -9,6 +9,7 @@ import emu.grasscutter.net.packet.Opcodes;
import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq; import emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq;
import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.game.GameSession;
import emu.grasscutter.server.packet.send.PacketAvatarDataNotify;
import emu.grasscutter.server.packet.send.PacketAvatarFetterDataNotify; import emu.grasscutter.server.packet.send.PacketAvatarFetterDataNotify;
import emu.grasscutter.server.packet.send.PacketAvatarFetterLevelRewardRsp; import emu.grasscutter.server.packet.send.PacketAvatarFetterLevelRewardRsp;
import emu.grasscutter.server.packet.send.PacketItemAddHintNotify; import emu.grasscutter.server.packet.send.PacketItemAddHintNotify;
...@@ -46,8 +47,9 @@ public class HandlerAvatarFetterLevelRewardReq extends PacketHandler { ...@@ -46,8 +47,9 @@ public class HandlerAvatarFetterLevelRewardReq extends PacketHandler {
session.getPlayer().getInventory().addItem(item); session.getPlayer().getInventory().addItem(item);
session.getPlayer().sendPacket(new PacketItemAddHintNotify(item, ActionReason.FetterLevelReward)); session.getPlayer().sendPacket(new PacketItemAddHintNotify(item, ActionReason.FetterLevelReward));
session.getPlayer().sendPacket(new PacketUnlockNameCardNotify(cardId)); session.getPlayer().sendPacket(new PacketUnlockNameCardNotify(cardId));
session.send(new PacketAvatarFetterLevelRewardRsp(avatarGuid, req.getFetterLevel(), rewardId));
session.send(new PacketAvatarFetterDataNotify(avatar)); session.send(new PacketAvatarFetterDataNotify(avatar));
session.send(new PacketAvatarDataNotify(avatar.getPlayer()));
session.send(new PacketAvatarFetterLevelRewardRsp(avatarGuid, req.getFetterLevel(), rewardId));
} }
} }
} }
...@@ -13,9 +13,14 @@ public class PacketAvatarFetterDataNotify extends GenshinPacket { ...@@ -13,9 +13,14 @@ public class PacketAvatarFetterDataNotify extends GenshinPacket {
public PacketAvatarFetterDataNotify(GenshinAvatar avatar) { public PacketAvatarFetterDataNotify(GenshinAvatar avatar) {
super(PacketOpcodes.AvatarFetterDataNotify); super(PacketOpcodes.AvatarFetterDataNotify);
int fetterLevel = avatar.getFetterLevel();
AvatarFetterInfo.Builder avatarFetter = AvatarFetterInfo.newBuilder() AvatarFetterInfo.Builder avatarFetter = AvatarFetterInfo.newBuilder()
.setExpLevel(avatar.getFetterLevel()) .setExpLevel(avatar.getFetterLevel());
.setExpNumber(avatar.getFetterExp());
if (fetterLevel != 10) {
avatarFetter.setExpNumber(avatar.getFetterExp());
}
if (avatar.getFetterList() != null) { if (avatar.getFetterList() != null) {
for (int i = 0; i < avatar.getFetterList().size(); i++) { for (int i = 0; i < avatar.getFetterList().size(); i++) {
...@@ -27,11 +32,10 @@ public class PacketAvatarFetterDataNotify extends GenshinPacket { ...@@ -27,11 +32,10 @@ public class PacketAvatarFetterDataNotify extends GenshinPacket {
} }
} }
int rewardId = avatar.getNameCardRewardId();
int cardId = avatar.getNameCardId(); int cardId = avatar.getNameCardId();
if (avatar.getPlayer().getNameCardList().contains(cardId)) { if (avatar.getPlayer().getNameCardList().contains(cardId)) {
avatarFetter.addRewardedFetterLevelList(rewardId); avatarFetter.addRewardedFetterLevelList(10);
} }
AvatarFetterInfo avatarFetterInfo = avatarFetter.build(); AvatarFetterInfo avatarFetterInfo = avatarFetter.build();
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment