mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-12-22 03:45:10 +01:00
quest fix & personal line impl
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.game.quest.enums.QuestTrigger;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.AddQuestContentProgressReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketAddQuestContentProgressRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.AddQuestContentProgressReq)
|
||||
public class HandlerAddQuestContentProgressReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
var req = AddQuestContentProgressReqOuterClass.AddQuestContentProgressReq.parseFrom(payload);
|
||||
|
||||
session.getPlayer().getQuestManager().triggerEvent(QuestTrigger.getContentTriggerByValue(req.getContentType()), req.getParam());
|
||||
|
||||
session.send(new PacketAddQuestContentProgressRsp(req.getContentType()));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.game.quest.enums.QuestTrigger;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.ChangeGameTimeReqOuterClass.ChangeGameTimeReq;
|
||||
@@ -9,12 +10,15 @@ import emu.grasscutter.server.packet.send.PacketChangeGameTimeRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.ChangeGameTimeReq)
|
||||
public class HandlerChangeGameTimeReq extends PacketHandler {
|
||||
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
ChangeGameTimeReq req = ChangeGameTimeReq.parseFrom(payload);
|
||||
|
||||
|
||||
session.getPlayer().getScene().changeTime(req.getGameTime());
|
||||
session.getPlayer().getQuestManager().triggerEvent(QuestTrigger.QUEST_CONTENT_GAME_TIME_TICK,
|
||||
req.getGameTime() / 60 , // hours
|
||||
req.getExtraDays()); //days
|
||||
session.getPlayer().sendPacket(new PacketChangeGameTimeRsp(session.getPlayer()));
|
||||
}
|
||||
|
||||
|
||||
@@ -32,6 +32,12 @@ public class HandlerEnterSceneDoneReq extends PacketHandler {
|
||||
|
||||
// spawn NPC
|
||||
session.getPlayer().getScene().loadNpcForPlayerEnter(session.getPlayer());
|
||||
|
||||
// notify client to load the npc for quest
|
||||
var questGroupSuites = session.getPlayer().getQuestManager().getSceneGroupSuite(session.getPlayer().getSceneId());
|
||||
session.getPlayer().getScene().loadGroupForQuest(questGroupSuites);
|
||||
session.send(new PacketGroupSuiteNotify(questGroupSuites));
|
||||
|
||||
// Reset timer for sending player locations
|
||||
session.getPlayer().resetSendPlayerLocTime();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.EvtEntityRenderersChangedNotifyOuterClass;
|
||||
import emu.grasscutter.net.proto.ForwardTypeOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketEvtEntityRenderersChangedNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketWorldPlayerLocationNotify;
|
||||
|
||||
@Opcodes(PacketOpcodes.EvtEntityRenderersChangedNotify)
|
||||
public class HandlerEvtEntityRenderersChangedNotify extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
var req = EvtEntityRenderersChangedNotifyOuterClass.EvtEntityRenderersChangedNotify.parseFrom(payload);
|
||||
|
||||
switch (req.getForwardType()) {
|
||||
case FORWARD_TYPE_TO_ALL ->
|
||||
session.getPlayer().getScene().broadcastPacket(new PacketEvtEntityRenderersChangedNotify(req));
|
||||
case FORWARD_TYPE_TO_ALL_EXCEPT_CUR ->
|
||||
session.getPlayer().getScene().broadcastPacketToOthers(session.getPlayer(), new PacketEvtEntityRenderersChangedNotify(req));
|
||||
case FORWARD_TYPE_TO_HOST ->
|
||||
session.getPlayer().getScene().getWorld().getHost().sendPacket(new PacketEvtEntityRenderersChangedNotify(req));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.game.quest.enums.QuestTrigger;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.GadgetInteractReqOuterClass.GadgetInteractReq;
|
||||
@@ -8,11 +9,12 @@ import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.GadgetInteractReq)
|
||||
public class HandlerGadgetInteractReq extends PacketHandler {
|
||||
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
GadgetInteractReq req = GadgetInteractReq.parseFrom(payload);
|
||||
|
||||
|
||||
session.getPlayer().getQuestManager().triggerEvent(QuestTrigger.QUEST_CONTENT_INTERACT_GADGET, req.getGadgetId());
|
||||
session.getPlayer().interactWith(req.getGadgetEntityId(), req);
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketPersonalLineAllDataRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.PersonalLineAllDataReq)
|
||||
public class HandlerPersonalLineAllDataReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
session.send(new PacketPersonalLineAllDataRsp(session.getPlayer().getQuestManager().getQuests().values()));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,5 +1,7 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.game.props.SceneType;
|
||||
import emu.grasscutter.game.quest.enums.QuestTrigger;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
@@ -8,9 +10,13 @@ import emu.grasscutter.server.packet.send.PacketPostEnterSceneRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.PostEnterSceneReq)
|
||||
public class HandlerPostEnterSceneReq extends PacketHandler {
|
||||
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
if(session.getPlayer().getScene().getSceneType() == SceneType.SCENE_ROOM){
|
||||
session.getPlayer().getQuestManager().triggerEvent(QuestTrigger.QUEST_CONTENT_ENTER_ROOM, session.getPlayer().getSceneId());
|
||||
}
|
||||
|
||||
session.send(new PacketPostEnterSceneRsp(session.getPlayer()));
|
||||
}
|
||||
|
||||
|
||||
@@ -3,14 +3,21 @@ package emu.grasscutter.server.packet.recv;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.proto.QueryPathReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketQueryPathRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.QueryPathReq)
|
||||
public class HandlerQueryPathReq extends PacketHandler {
|
||||
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
// Auto template
|
||||
var req = QueryPathReqOuterClass.QueryPathReq.parseFrom(payload);
|
||||
|
||||
/**
|
||||
* It is not the actual work
|
||||
*/
|
||||
session.send(new PacketQueryPathRsp(req));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.UnlockPersonalLineReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketUnlockPersonalLineRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.UnlockPersonalLineReq)
|
||||
public class HandlerUnlockPersonalLineReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
var req = UnlockPersonalLineReqOuterClass.UnlockPersonalLineReq.parseFrom(payload);
|
||||
var data = GameData.getPersonalLineDataMap().get(req.getPersonalLineId());
|
||||
if(data == null){
|
||||
return;
|
||||
}
|
||||
|
||||
session.getPlayer().getQuestManager().addQuest(data.getStartQuestId());
|
||||
session.getPlayer().useLegendaryKey(1);
|
||||
|
||||
session.send(new PacketUnlockPersonalLineRsp(data.getId(), 1, data.getChapterId()));
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user