Fix return to ascension

This commit is contained in:
Melledy
2025-12-25 17:29:43 -08:00
parent 957d3a9ac3
commit fba1dfccd6
7 changed files with 66 additions and 0 deletions
@@ -249,6 +249,10 @@ public class StarTowerGame {
return Utils.randomElement(this.getCharIds());
}
public void setHp(int hp) {
this.charHp = hp;
}
public StarTowerStageDef getStageData(int stageNum, int stageFloor) {
var stageId = (this.getId() * 10000) + (stageNum * 100) + stageFloor;
return GameData.getStarTowerStageDataTable().get(stageId);
@@ -792,7 +796,13 @@ public class StarTowerGame {
// Handle interaction with tower case
if (towerCase != null) {
// Interact with case
rsp = towerCase.interact(req, rsp);
// Remove case
if (towerCase.removeAfterInteract()) {
this.getRoom().getCases().remove(req.getId());
}
} else {
rsp.getMutableNilResp();
}
@@ -29,6 +29,10 @@ public abstract class StarTowerBaseCase {
}
public abstract CaseType getType();
public boolean removeAfterInteract() {
return true;
}
public void register(StarTowerBaseRoom room) {
this.game = room.getGame();
@@ -30,6 +30,11 @@ public class StarTowerHawkerCase extends StarTowerBaseCase {
return CaseType.Hawker;
}
@Override
public boolean removeAfterInteract() {
return false;
}
@Override
public void onRegister() {
this.initGoods();
@@ -251,6 +256,10 @@ public class StarTowerHawkerCase extends StarTowerBaseCase {
info.setCharPos(goods.getCharPos());
}
if (goods.isSold()) {
hawker.addPurchase(sid);
}
hawker.addList(info);
}
@@ -24,6 +24,13 @@ public class StarTowerNpcRecoveryHPCase extends StarTowerBaseCase {
@Override
public StarTowerInteractResp interact(StarTowerInteractReq req, StarTowerInteractResp rsp) {
// Get hp
int hp = req.getRecoveryHPReq().getHp();
// Sync with game
this.getGame().setHp(hp);
// Complete
return rsp;
}
@@ -14,6 +14,11 @@ public class StarTowerStrengthenMachineCase extends StarTowerBaseCase {
private int discount;
private int times;
@Override
public boolean removeAfterInteract() {
return false;
}
@Override
public void onRegister() {
// Set strengthen price
@@ -15,6 +15,13 @@ public class StarTowerSyncHPCase extends StarTowerBaseCase {
@Override
public StarTowerInteractResp interact(StarTowerInteractReq req, StarTowerInteractResp rsp) {
// Get hp
int hp = req.getRecoveryHPReq().getHp();
// Sync with game
this.getGame().setHp(hp);
// Complete
return rsp;
}
@@ -0,0 +1,24 @@
package emu.nebula.server.handlers;
import emu.nebula.net.NetHandler;
import emu.nebula.net.NetMsgId;
import emu.nebula.net.HandlerId;
import emu.nebula.net.GameSession;
@HandlerId(NetMsgId.star_tower_info_req)
public class HandlerStarTowerInfoReq extends NetHandler {
@Override
public byte[] handle(GameSession session, byte[] message) throws Exception {
// Get star tower game
var game = session.getPlayer().getStarTowerManager().getGame();
if (game == null) {
return session.encodeMsg(NetMsgId.star_tower_info_failed_ack);
}
// Encode and send
return session.encodeMsg(NetMsgId.star_tower_info_succeed_ack, game.toProto());
}
}