Add completed dummy achievements because the client needs them for random things

This commit is contained in:
Melledy
2025-11-24 21:38:40 -08:00
parent c78c6a7492
commit 55ff9b2826
3 changed files with 48 additions and 0 deletions

View File

@@ -97,6 +97,9 @@ public class GameData {
@Getter private static DataTable<DailyQuestDef> DailyQuestDataTable = new DataTable<>();
@Getter private static DataTable<DailyQuestActiveDef> DailyQuestActiveDataTable = new DataTable<>();
// Achievements
@Getter private static DataTable<AchievementDef> AchievementDataTable = new DataTable<>();
// Tutorial
@Getter private static DataTable<TutorialLevelDef> TutorialLevelDataTable = new DataTable<>();

View File

@@ -0,0 +1,26 @@
package emu.nebula.data.resources;
import emu.nebula.data.BaseDef;
import emu.nebula.data.ResourceType;
import lombok.Getter;
@Getter
@ResourceType(name = "Achievement.json")
public class AchievementDef extends BaseDef {
private int Id;
private int Type;
private int CompleteCond;
private int AimNumShow;
private int[] Prerequisites;
// Reward
private int Tid1;
private int Qty1;
@Override
public int getId() {
return Id;
}
}

View File

@@ -2,8 +2,11 @@ package emu.nebula.server.handlers;
import emu.nebula.net.NetHandler;
import emu.nebula.net.NetMsgId;
import emu.nebula.proto.Public.Achievement;
import emu.nebula.proto.Public.Achievements;
import emu.nebula.proto.Public.QuestProgress;
import emu.nebula.net.HandlerId;
import emu.nebula.data.GameData;
import emu.nebula.net.GameSession;
@HandlerId(NetMsgId.achievement_info_req)
@@ -11,8 +14,24 @@ public class HandlerAchievementInfoReq extends NetHandler {
@Override
public byte[] handle(GameSession session, byte[] message) throws Exception {
// Build response
var rsp = Achievements.newInstance();
for (var data : GameData.getAchievementDataTable()) {
var progress = QuestProgress.newInstance()
.setCur(data.getAimNumShow())
.setMax(data.getAimNumShow());
var info = Achievement.newInstance()
.setId(data.getId())
.setStatus(2)
.setCompleted(session.getPlayer().getCreateTime())
.addProgress(progress);
rsp.addList(info);
}
// Encode and send
return session.encodeMsg(NetMsgId.achievement_info_succeed_ack, rsp);
}