mirror of
https://github.com/Melledy/LunarCore.git
synced 2025-12-13 13:54:37 +01:00
Update leave challenge logic
This commit is contained in:
@@ -43,6 +43,7 @@ import emu.lunarcore.proto.RogueVirtualItemInfoOuterClass.RogueVirtualItemInfo;
|
||||
import emu.lunarcore.server.game.GameServer;
|
||||
import emu.lunarcore.server.game.GameSession;
|
||||
import emu.lunarcore.server.packet.BasePacket;
|
||||
import emu.lunarcore.server.packet.CmdId;
|
||||
import emu.lunarcore.server.packet.SessionState;
|
||||
import emu.lunarcore.server.packet.send.*;
|
||||
import emu.lunarcore.util.Position;
|
||||
@@ -359,6 +360,13 @@ public class Player {
|
||||
this.battle = battle;
|
||||
}
|
||||
|
||||
public void forceQuitBattle() {
|
||||
if (this.battle != null) {
|
||||
this.battle = null;
|
||||
this.getSession().send(CmdId.QuitBattleScNotify);
|
||||
}
|
||||
}
|
||||
|
||||
public void addStamina(int amount) {
|
||||
this.stamina += amount;
|
||||
this.sendPacket(new PacketStaminaInfoScNotify(this));
|
||||
@@ -670,4 +678,5 @@ public class Player {
|
||||
|
||||
return proto;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package emu.lunarcore.server.packet.recv;
|
||||
|
||||
import emu.lunarcore.GameConstants;
|
||||
import emu.lunarcore.game.enums.PlaneType;
|
||||
import emu.lunarcore.server.game.GameSession;
|
||||
import emu.lunarcore.server.packet.CmdId;
|
||||
import emu.lunarcore.server.packet.Opcodes;
|
||||
@@ -11,9 +12,17 @@ public class HandlerLeaveChallengeCsReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] data) throws Exception {
|
||||
// TODO make sure client is in a challenge mode map
|
||||
session.getPlayer().getLineupManager().setCurrentExtraLineup(0, false);
|
||||
session.getPlayer().enterScene(GameConstants.CHALLENGE_ENTRANCE, 0, true);
|
||||
// Make sure client is in a challenge scene
|
||||
if (session.getPlayer().getScene() != null && session.getPlayer().getScene().getPlaneType() == PlaneType.Challenge) {
|
||||
// As of 1.5.0, the server now has to handle the player leaving battle too
|
||||
session.getPlayer().forceQuitBattle();
|
||||
|
||||
// Leave scene
|
||||
session.getPlayer().getLineupManager().setCurrentExtraLineup(0, false);
|
||||
session.getPlayer().enterScene(GameConstants.CHALLENGE_ENTRANCE, 0, true);
|
||||
}
|
||||
|
||||
// Send rsp packet to keep the client happy
|
||||
session.send(CmdId.LeaveChallengeScRsp);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user