mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2026-05-19 21:59:50 +08:00
d32f6982be
also set line endings to native, no more line conflict errors!
53 lines
2.1 KiB
Java
53 lines
2.1 KiB
Java
package emu.grasscutter.server.packet.recv;
|
|
|
|
import emu.grasscutter.Grasscutter;
|
|
import emu.grasscutter.net.packet.Opcodes;
|
|
import emu.grasscutter.net.packet.PacketHandler;
|
|
import emu.grasscutter.net.packet.PacketOpcodes;
|
|
import emu.grasscutter.net.proto.QuestUpdateQuestVarReqOuterClass.QuestUpdateQuestVarReq;
|
|
import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode;
|
|
import emu.grasscutter.server.game.GameSession;
|
|
import emu.grasscutter.server.packet.send.PacketQuestUpdateQuestVarRsp;
|
|
|
|
@Opcodes(PacketOpcodes.QuestUpdateQuestVarReq)
|
|
public class HandlerQuestUpdateQuestVarReq extends PacketHandler {
|
|
|
|
@Override
|
|
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
|
// Client sends packets. One with the value, and one with the index and the new value to
|
|
// set/inc/dec
|
|
var req = QuestUpdateQuestVarReq.parseFrom(payload);
|
|
var questManager = session.getPlayer().getQuestManager();
|
|
var subQuest = questManager.getQuestById(req.getQuestId());
|
|
var mainQuest = questManager.getMainQuestById(req.getParentQuestId());
|
|
if (mainQuest == null && subQuest != null) {
|
|
mainQuest = subQuest.getMainQuest();
|
|
}
|
|
|
|
if (mainQuest == null) {
|
|
session.send(new PacketQuestUpdateQuestVarRsp(req, Retcode.RET_QUEST_NOT_EXIST));
|
|
Grasscutter.getLogger()
|
|
.debug(
|
|
"trying to update QuestVar for non existing quest s{} m{}",
|
|
req.getQuestId(),
|
|
req.getParentQuestId());
|
|
return;
|
|
}
|
|
|
|
for (var questVar : req.getQuestVarOpListList()) {
|
|
var value = questVar.getValue();
|
|
if (questVar.getIsAdd()) {
|
|
if (value >= 0) {
|
|
mainQuest.incQuestVar(questVar.getIndex(), value);
|
|
} else {
|
|
mainQuest.decQuestVar(questVar.getIndex(), value);
|
|
}
|
|
} else {
|
|
mainQuest.setQuestVar(questVar.getIndex(), value);
|
|
}
|
|
}
|
|
|
|
session.send(new PacketQuestUpdateQuestVarRsp(req));
|
|
}
|
|
}
|