mirror of
https://github.com/Melledy/LunarCore.git
synced 2025-12-23 10:44:36 +01:00
Fix some event(at least it wont get stuck in anybody)
This commit is contained in:
@@ -166,7 +166,7 @@ public class BattleService extends BaseGameService {
|
||||
player.sendPacket(new PacketSceneCastSkillScRsp(attackedGroupId));
|
||||
}
|
||||
|
||||
public void startBattle(Player player, int stageId) {
|
||||
public void startBattle(Player player, int stageId) { // TODO: should send SceneEnterStageScRsp instead of SceneCastSkillScRsp
|
||||
// Sanity check to make sure player isnt in a battle
|
||||
if (player.isInBattle()) {
|
||||
return;
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package emu.lunarcore.game.rogue;
|
||||
|
||||
import emu.lunarcore.LunarCore;
|
||||
import emu.lunarcore.data.GameData;
|
||||
import emu.lunarcore.data.GameDepot;
|
||||
import emu.lunarcore.data.config.GroupInfo;
|
||||
@@ -23,7 +22,6 @@ import emu.lunarcore.server.packet.send.PacketSyncRogueDialogueEventDataScNotify
|
||||
import emu.lunarcore.util.Utils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class RogueEntityLoader extends SceneEntityLoader {
|
||||
|
||||
|
||||
@@ -555,7 +555,7 @@ public class RogueInstance {
|
||||
|
||||
public RogueAeon toAeonProto() {
|
||||
var proto = RogueAeon.newInstance()
|
||||
.setOFBCBEIEAEC(this.getAeonId());
|
||||
.setAeonId(this.getAeonId());
|
||||
|
||||
return proto;
|
||||
}
|
||||
|
||||
@@ -22,7 +22,8 @@ public class EntityNpc implements GameEntity {
|
||||
private final Position pos;
|
||||
private final Position rot;
|
||||
|
||||
@Setter private int rogueNpcId;
|
||||
@Setter private int rogueNpcId;
|
||||
@Setter private boolean isDialogueFinished = false;
|
||||
|
||||
public EntityNpc(Scene scene, GroupInfo group, NpcInfo npcInfo) {
|
||||
this.scene = scene;
|
||||
@@ -43,7 +44,7 @@ public class EntityNpc implements GameEntity {
|
||||
if (this.rogueNpcId > 0) {
|
||||
var rogue = NpcRogueInfo.newInstance()
|
||||
.setRogueNpcId(this.rogueNpcId)
|
||||
.setBHPGGEOBJHM(false);
|
||||
.setFinishDialogue(isDialogueFinished);
|
||||
|
||||
npc.getMutableExtraInfo().setRogueInfo(rogue);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
package emu.lunarcore.server.packet.recv;
|
||||
|
||||
import emu.lunarcore.game.scene.entity.GameEntity;
|
||||
import emu.lunarcore.proto.RogueNpcDisappearCsReqOuterClass.RogueNpcDisappearCsReq;
|
||||
import emu.lunarcore.server.game.GameSession;
|
||||
import emu.lunarcore.server.packet.CmdId;
|
||||
import emu.lunarcore.server.packet.Opcodes;
|
||||
import emu.lunarcore.server.packet.PacketHandler;
|
||||
import emu.lunarcore.server.packet.send.PacketSceneGroupRefreshScNotify;
|
||||
|
||||
@Opcodes(CmdId.RogueNpcDisappearCsReq)
|
||||
public class HandleRogueNpcDisappearCsReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] data) throws Exception {
|
||||
var req = RogueNpcDisappearCsReq.parseFrom(data);
|
||||
|
||||
GameEntity entity = session.getPlayer().getScene().getEntityById(req.getEntityId());
|
||||
|
||||
if (entity != null) {
|
||||
session.send(CmdId.RogueNpcDisappearScRsp);
|
||||
session.send(new PacketSceneGroupRefreshScNotify(null, entity));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,14 +1,24 @@
|
||||
package emu.lunarcore.server.packet.recv;
|
||||
|
||||
import emu.lunarcore.game.scene.entity.EntityNpc;
|
||||
import emu.lunarcore.proto.FinishRogueDialogueGroupCsReqOuterClass.FinishRogueDialogueGroupCsReq;
|
||||
import emu.lunarcore.server.game.GameSession;
|
||||
import emu.lunarcore.server.packet.CmdId;
|
||||
import emu.lunarcore.server.packet.Opcodes;
|
||||
import emu.lunarcore.server.packet.PacketHandler;
|
||||
import emu.lunarcore.server.packet.send.PacketSceneGroupRefreshScNotify;
|
||||
|
||||
@Opcodes(CmdId.FinishRogueDialogueGroupCsReq)
|
||||
public class HandlerFinishRogueDialogueGroupCsReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] data) throws Exception {
|
||||
var req = FinishRogueDialogueGroupCsReq.parseFrom(data);
|
||||
|
||||
EntityNpc npc = (EntityNpc)session.getPlayer().getScene().getEntityById(req.getEntityId());
|
||||
if (npc == null) return;
|
||||
npc.setDialogueFinished(true);
|
||||
session.send(new PacketSceneGroupRefreshScNotify(npc, null));
|
||||
|
||||
session.send(CmdId.FinishRogueDialogueGroupScRsp);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package emu.lunarcore.server.packet.recv;
|
||||
|
||||
import emu.lunarcore.game.scene.entity.EntityNpc;
|
||||
import emu.lunarcore.proto.FinishRogueDialogueGroupCsReqOuterClass.FinishRogueDialogueGroupCsReq;
|
||||
import emu.lunarcore.proto.SelectRogueDialogueEventCsReqOuterClass.SelectRogueDialogueEventCsReq;
|
||||
import emu.lunarcore.server.game.GameSession;
|
||||
import emu.lunarcore.server.packet.CmdId;
|
||||
@@ -17,9 +19,13 @@ public class HandlerSelectRogueDialogueEventCsReq extends PacketHandler {
|
||||
if (session.getPlayer().getRogueInstance() != null) {
|
||||
session.getPlayer().getRogueInstance().onSelectDialogue(req.getDialogueEventId());
|
||||
}
|
||||
|
||||
EntityNpc npc = (EntityNpc)session.getPlayer().getScene().getEntityById(req.getEntityId());
|
||||
|
||||
session.send(new PacketSelectRogueDialogueEventScRsp(req.getDialogueEventId(), req.getEntityId(), session.getPlayer()));
|
||||
session.send(CmdId.FinishRogueDialogueGroupScRsp);
|
||||
session.send(new PacketSelectRogueDialogueEventScRsp(req.getDialogueEventId(), npc));
|
||||
new HandlerFinishRogueDialogueGroupCsReq().handle(session, FinishRogueDialogueGroupCsReq.newInstance() // using it before the event is implemented
|
||||
.setEntityId(req.getEntityId())
|
||||
.toByteArray());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ import java.util.ArrayList;
|
||||
|
||||
public class PacketSelectRogueDialogueEventScRsp extends BasePacket {
|
||||
|
||||
public PacketSelectRogueDialogueEventScRsp(int dialogueEventId, int entityId, Player player) {
|
||||
public PacketSelectRogueDialogueEventScRsp(int dialogueEventId, EntityNpc npc) {
|
||||
super(CmdId.SelectRogueDialogueEventScRsp);
|
||||
|
||||
var data = SelectRogueDialogueEventScRsp.newInstance()
|
||||
@@ -25,6 +25,7 @@ public class PacketSelectRogueDialogueEventScRsp extends BasePacket {
|
||||
RogueNPCExcel rogueNpcExcel = Utils.randomElement(GameDepot.getRogueRandomNpcList());
|
||||
var params = new ArrayList<RogueDialogueEventParam>();
|
||||
var start = rogueNpcExcel.getId();
|
||||
|
||||
while (true) {
|
||||
var event = GameData.getRogueDialogueEventList().get(start);
|
||||
if (event == null) break;
|
||||
@@ -33,8 +34,9 @@ public class PacketSelectRogueDialogueEventScRsp extends BasePacket {
|
||||
.setIsValid(true));
|
||||
start++;
|
||||
}
|
||||
|
||||
var event = RogueDialogueEvent.newInstance()
|
||||
.setNpcId(((EntityNpc)player.getScene().getEntityById(entityId)).getRogueNpcId())
|
||||
.setNpcId(npc.getRogueNpcId())
|
||||
.setGameModeType(5)
|
||||
.addAllNNOHLEAOJPP(dialogueEventId)
|
||||
.addAllRogueDialogueEventParam(params.toArray(RogueDialogueEventParam[]::new));
|
||||
|
||||
Reference in New Issue
Block a user