fix some events (most events are available) prepare for rogue DLC

This commit is contained in:
Somebody
2024-02-05 13:56:01 +08:00
committed by Melledy
parent 4f49d996b1
commit 678d41701e
26 changed files with 2819 additions and 490 deletions

View File

@@ -58,6 +58,9 @@ public class GameConstants {
public static final int ROGUE_ENTRANCE = 801120102;
public static final int ROGUE_TALENT_POINT_ITEM_ID = 32;
// Activity
public static final int[] ENABLE_ACTIVITY_TYPES = { 18, 34 };
// Custom
public static final int SERVER_CONSOLE_UID = 99;
public static final int EQUIPMENT_SLOT_ID = 100;

View File

@@ -59,6 +59,7 @@ public class GameData {
@Getter private static Int2ObjectMap<RogueBuffExcel> rogueBuffTagExcelMap = new Int2ObjectOpenHashMap<>();
@Getter private static Int2ObjectMap<RogueBuffGroupExcel> rogueBuffGroupExcelMap = new Int2ObjectOpenHashMap<>();
@Getter private static Int2ObjectMap<RogueDLCAreaExcel> rogueDLCAreaExcelMap = new Int2ObjectOpenHashMap<>();
@Getter private static Int2ObjectMap<RogueNousMainStoryExcel> rogueNousMainStoryExcelMap = new Int2ObjectOpenHashMap<>();
@Getter private static Int2ObjectMap<RogueNousSubStoryExcel> rogueNousSubStoryExcelMap = new Int2ObjectOpenHashMap<>();
@Getter private static Int2ObjectMap<RogueNousDiceBranchExcel> rogueNousDiceBranchExcelMap = new Int2ObjectOpenHashMap<>();

View File

@@ -12,6 +12,9 @@ import lombok.Getter;
// Game data that is parsed by the server goes here
public class GameDepot {
// Activity
@Getter private static List<ActivitySchedulingExcel> activityScheduleExcels = new ArrayList<>();
// Exp
@Getter private static List<AvatarExpItemExcel> avatarExpExcels = new ArrayList<>();
@Getter private static List<EquipmentExpItemExcel> equipmentExpExcels = new ArrayList<>();

View File

@@ -7,6 +7,7 @@ import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Stream;
import emu.lunarcore.data.config.*;
import emu.lunarcore.data.excel.ActivitySchedulingExcel;
import org.reflections.Reflections;
import com.google.gson.Gson;
@@ -43,6 +44,8 @@ public class ResourceLoader {
loadMazeAbilities();
// Load rogue maps
loadRogueMapGen();
// Load activity schedule config
loadActivityScheduleConfig();
// Load rogue dialogue events
loadRogueDialogueEvent();
@@ -339,4 +342,16 @@ public class ResourceLoader {
e.printStackTrace();
}
}
private static void loadActivityScheduleConfig() {
File file = new File(LunarCore.getConfig().getDataDir() + "/ActivityScheduling.json");
if (!file.exists()) return;
try (FileReader reader = new FileReader(file)) {
List<ActivitySchedulingExcel> activityScheduleConfig = gson.fromJson(reader, TypeToken.getParameterized(List.class, ActivitySchedulingExcel.class).getType());
GameDepot.getActivityScheduleExcels().addAll(activityScheduleConfig);
} catch (Exception e) {
e.printStackTrace();
}
}
}

View File

@@ -0,0 +1,13 @@
package emu.lunarcore.data.excel;
import lombok.Getter;
import java.util.List;
@Getter
public class ActivitySchedulingExcel {
private int activityId;
private long beginTime;
private long endTime;
private int moduleId;
}

View File

@@ -0,0 +1,38 @@
package emu.lunarcore.data.excel;
import com.google.gson.annotations.SerializedName;
import emu.lunarcore.data.GameData;
import emu.lunarcore.data.GameResource;
import emu.lunarcore.data.ResourceType;
import lombok.Getter;
import java.util.List;
@Getter
@ResourceType(name = { "RogueDLCArea.json" })
public class RogueDLCAreaExcel extends GameResource {
private int AreaID;
private String SubType;
private List<Integer> DifficultyID;
private List<Integer> LayerIDList;
private List<RogueDLCAreaScoreMap> AreaScoreMap;
@Getter
public static class RogueDLCAreaScoreMap {
@SerializedName("FJBAFMJHNCA") private int LayerID;
@SerializedName("LHKHLPFAKGD") private int Score;
@SerializedName("NDPIHCHCLGA") private int FinishedScore;
}
@Override
public int getId() {
return AreaID;
}
@Override
public void onLoad() {
GameData.getRogueDLCAreaExcelMap().put(AreaID, this);
}
}

View File

@@ -177,7 +177,7 @@ public class RogueManager extends BasePlayerManager {
var score = RogueScoreRewardInfo.newInstance()
.setPoolId(20 + getPlayer().getWorldLevel()) // TODO pool ids should not change when world level changes
//.setPoolRefreshed(true)
.setPoolRefreshed(true)
.setHasTakenInitialScore(true)
.setBeginTime(beginTime)
.setEndTime(endTime);
@@ -210,17 +210,6 @@ public class RogueManager extends BasePlayerManager {
// Rogue data
RogueInstance instance = this.getPlayer().getRogueInstance();
// if (instance != null) {
// proto.setStatus(instance.getStatus());
// proto.setRogueProgress(this.getPlayer().getRogueInstance().toProto());
// proto.setRoomMap(proto.getRogueProgress().getRoomMap());
//
// for (int id : instance.getBaseAvatarIds()) {
// proto.addBaseAvatarIdList(id);
// }
//
// aeonInfo.setSelectedAeonId(instance.getAeonId());
// }
// Add areas
var areaInfo = RogueAreaInfo.newInstance();

View File

@@ -1,27 +0,0 @@
package emu.lunarcore.game.rogue.chess;
import emu.lunarcore.data.GameData;
import emu.lunarcore.game.player.BasePlayerManager;
import emu.lunarcore.game.player.Player;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
import java.util.HashSet;
import java.util.Set;
public class ChessRogueManager extends BasePlayerManager {
public ChessRogueManager(Player player) {
super(player);
}
public Int2ObjectMap<Set<Integer>> getRogueDefaultDice() {
var map = new Int2ObjectOpenHashMap<Set<Integer>>();
for (var entry: GameData.getRogueNousDiceBranchExcelMap().values()) {
var set = new HashSet<Integer>();
set.add(entry.getDefaultUltraSurface());
set.addAll(entry.getDefaultCommonSurfaceList());
map.put(entry.getBranchId(), set);
}
return map;
}
}

View File

@@ -1,16 +0,0 @@
package emu.lunarcore.server.packet.recv;
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.PacketChessRogueQueryScRsp;
@Opcodes(CmdId.ChessRogueQueryCsReq)
public class HandlerChessRogueQueryCsReq extends PacketHandler {
@Override
public void handle(GameSession session, byte[] data) throws Exception {
session.send(new PacketChessRogueQueryScRsp(session.getPlayer()));
}
}

View File

@@ -1,39 +0,0 @@
package emu.lunarcore.server.packet.send;
import emu.lunarcore.data.GameData;
import emu.lunarcore.game.player.Player;
import emu.lunarcore.proto.ChessRogueNousDiceInfoOuterClass.ChessRogueNousDiceInfo;
import emu.lunarcore.proto.ChessRogueNousDiceSurfaceInfoOuterClass.ChessRogueNousDiceSurfaceInfo;
import emu.lunarcore.proto.ChessRogueNousQueryInfoOuterClass.ChessRogueNousQueryInfo;
import emu.lunarcore.proto.ChessRogueQueryOuterClass.ChessRogueQuery;
import emu.lunarcore.proto.ChessRogueQueryScRspOuterClass.ChessRogueQueryScRsp;
import emu.lunarcore.server.packet.BasePacket;
import emu.lunarcore.server.packet.CmdId;
public class PacketChessRogueQueryScRsp extends BasePacket {
public PacketChessRogueQueryScRsp(Player player) {
super(CmdId.ChessRogueQueryScRsp);
var data = ChessRogueQuery.newInstance();
for (var entry: GameData.getRogueNousMainStoryExcelMap().keySet()) {
data.addMainStoryId(entry);
}
player.getChessRogueManager().getRogueDefaultDice().forEach((k, v) -> {
var dice = ChessRogueNousDiceInfo.newInstance()
.setDiceBranchId(k);
var index = 0;
for (Integer d : v) {
dice.addDiceSurface(ChessRogueNousDiceSurfaceInfo.newInstance()
.setIndex(++index)
.setDiceId(d));
}
data.addDiceInfo(dice);
});
var proto = ChessRogueQueryScRsp.newInstance()
.setRogueNous(ChessRogueNousQueryInfo.newInstance()
.setQueryInfo(data));
this.setData(proto);
}
}

View File

@@ -1,6 +1,6 @@
package emu.lunarcore.server.packet.send;
import emu.lunarcore.data.GameData;
import emu.lunarcore.data.GameDepot;
import emu.lunarcore.proto.ActivityScheduleInfoOuterClass.ActivityScheduleInfo;
import emu.lunarcore.proto.GetActivityScheduleConfigScRspOuterClass.GetActivityScheduleConfigScRsp;
import emu.lunarcore.server.packet.BasePacket;
@@ -15,14 +15,12 @@ public class PacketGetActivityScheduleConfigScRsp extends BasePacket {
var data = GetActivityScheduleConfigScRsp.newInstance();
for (var activity : GameData.getActivityPanelExcelMap().values()) {
if (activity.getType() != 18) continue;
for (var activity : GameDepot.getActivityScheduleExcels()) {
var info = ActivityScheduleInfo.newInstance()
.setActivityId(activity.getPanelID())
.setModuleId(activity.getActivityModuleID())
.setBeginTime(0)
.setEndTime(Integer.MAX_VALUE);
.setActivityId(activity.getActivityId())
.setModuleId(activity.getModuleId())
.setBeginTime(activity.getBeginTime())
.setEndTime(activity.getEndTime());
data.addActivityScheduleList(info);
}

View File

@@ -19,7 +19,7 @@ public class PacketGetRogueScoreRewardInfoScRsp extends BasePacket {
data.getMutableScoreRewardInfo()
.setPoolId(20 + player.getWorldLevel()) // TODO pool ids should not change when world level changes
//.setPoolRefreshed(true)
.setPoolRefreshed(true)
.setHasTakenInitialScore(true)
.setBeginTime(beginTime)
.setEndTime(endTime);

View File

@@ -1,7 +1,7 @@
package emu.lunarcore.server.packet.send;
import emu.lunarcore.game.scene.entity.EntityNpc;
import emu.lunarcore.proto.MEMPJPLINCNOuterClass.MEMPJPLINCN;
import emu.lunarcore.proto.DialogueResultOuterClass.DialogueResult;
import emu.lunarcore.proto.RogueDialogueEventOuterClass.RogueDialogueEvent;
import emu.lunarcore.proto.RogueDialogueEventParamOuterClass.RogueDialogueEventParam;
import emu.lunarcore.proto.SelectRogueDialogueEventScRspOuterClass.SelectRogueDialogueEventScRsp;
@@ -30,14 +30,14 @@ public class PacketSelectRogueDialogueEventScRsp extends BasePacket {
.setGBMDBBBMBEJ(instance.getEventId())
.addAllRogueDialogueEventParam(params.toArray(RogueDialogueEventParam[]::new));
var l = MEMPJPLINCN.newInstance();
var l = DialogueResult.newInstance();
for (var param : params) {
l.addBLGIMDCNDHJ(param.getDialogueEventId());
}
if (nextEventId != 0) {
l.addBLGIMDCNDHJ(nextEventId);
}
data.addLELKNNDCGJM(l);
data.addDialogueResult(l);
data.setEventData(event);
this.setData(data);