Files
Grasscutter/src/main/java/emu/grasscutter/server/packet/recv/HandlerQuestUpdateQuestVarReq.java
T
KingRainbow44 d32f6982be Run spotlessApply
also set line endings to native, no more line conflict errors!
2023-05-07 22:53:55 -04:00

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));
}
}