mirror of
https://github.com/Melledy/LunarCore.git
synced 2025-12-14 06:14:45 +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.GameServer;
|
||||||
import emu.lunarcore.server.game.GameSession;
|
import emu.lunarcore.server.game.GameSession;
|
||||||
import emu.lunarcore.server.packet.BasePacket;
|
import emu.lunarcore.server.packet.BasePacket;
|
||||||
|
import emu.lunarcore.server.packet.CmdId;
|
||||||
import emu.lunarcore.server.packet.SessionState;
|
import emu.lunarcore.server.packet.SessionState;
|
||||||
import emu.lunarcore.server.packet.send.*;
|
import emu.lunarcore.server.packet.send.*;
|
||||||
import emu.lunarcore.util.Position;
|
import emu.lunarcore.util.Position;
|
||||||
@@ -359,6 +360,13 @@ public class Player {
|
|||||||
this.battle = battle;
|
this.battle = battle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void forceQuitBattle() {
|
||||||
|
if (this.battle != null) {
|
||||||
|
this.battle = null;
|
||||||
|
this.getSession().send(CmdId.QuitBattleScNotify);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void addStamina(int amount) {
|
public void addStamina(int amount) {
|
||||||
this.stamina += amount;
|
this.stamina += amount;
|
||||||
this.sendPacket(new PacketStaminaInfoScNotify(this));
|
this.sendPacket(new PacketStaminaInfoScNotify(this));
|
||||||
@@ -670,4 +678,5 @@ public class Player {
|
|||||||
|
|
||||||
return proto;
|
return proto;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
package emu.lunarcore.server.packet.recv;
|
package emu.lunarcore.server.packet.recv;
|
||||||
|
|
||||||
import emu.lunarcore.GameConstants;
|
import emu.lunarcore.GameConstants;
|
||||||
|
import emu.lunarcore.game.enums.PlaneType;
|
||||||
import emu.lunarcore.server.game.GameSession;
|
import emu.lunarcore.server.game.GameSession;
|
||||||
import emu.lunarcore.server.packet.CmdId;
|
import emu.lunarcore.server.packet.CmdId;
|
||||||
import emu.lunarcore.server.packet.Opcodes;
|
import emu.lunarcore.server.packet.Opcodes;
|
||||||
@@ -11,9 +12,17 @@ public class HandlerLeaveChallengeCsReq extends PacketHandler {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handle(GameSession session, byte[] header, byte[] data) throws Exception {
|
public void handle(GameSession session, byte[] header, byte[] data) throws Exception {
|
||||||
// TODO make sure client is in a challenge mode map
|
// 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().getLineupManager().setCurrentExtraLineup(0, false);
|
||||||
session.getPlayer().enterScene(GameConstants.CHALLENGE_ENTRANCE, 0, true);
|
session.getPlayer().enterScene(GameConstants.CHALLENGE_ENTRANCE, 0, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Send rsp packet to keep the client happy
|
||||||
session.send(CmdId.LeaveChallengeScRsp);
|
session.send(CmdId.LeaveChallengeScRsp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user