quest fix & personal line impl

This commit is contained in:
Akka
2022-07-05 20:41:07 +08:00
committed by Luke H-W
Unverified
parent 7bae35f51b
commit 910008216f
51 changed files with 917 additions and 193 deletions
@@ -0,0 +1,35 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.data.GameData;
import emu.grasscutter.game.quest.GameMainQuest;
import emu.grasscutter.game.quest.GameQuest;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.PersonalLineAllDataRspOuterClass;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class PacketPersonalLineAllDataRsp extends BasePacket {
public PacketPersonalLineAllDataRsp(Collection<GameMainQuest> gameMainQuestList) {
super(PacketOpcodes.PersonalLineAllDataRsp);
var proto = PersonalLineAllDataRspOuterClass.PersonalLineAllDataRsp.newBuilder();
var questList = gameMainQuestList.stream()
.map(GameMainQuest::getChildQuests)
.map(Map::values)
.flatMap(Collection::stream)
.map(GameQuest::getQuestId)
.collect(Collectors.toSet());
GameData.getPersonalLineDataMap().values().stream()
.filter(i -> !questList.contains(i.getStartQuestId()))
.forEach(i -> proto.addCanBeUnlockedPersonalLineList(i.getId()));
this.setData(proto);
}
}