Implement new weekly quests

This commit is contained in:
Melledy
2025-12-24 00:03:05 -08:00
parent c2ebff92c9
commit 9df83c5205
15 changed files with 437 additions and 46 deletions
+3 -1
View File
@@ -97,9 +97,11 @@ public class GameData {
@Getter private static DataTable<MainScreenCGDef> MainScreenCGDataTable = new DataTable<>();
// ===== Daily Quests =====
// ===== Daily/Weekly Quests =====
@Getter private static DataTable<DailyQuestDef> DailyQuestDataTable = new DataTable<>();
@Getter private static DataTable<DailyQuestActiveDef> DailyQuestActiveDataTable = new DataTable<>();
@Getter private static DataTable<WeeklyQuestDef> WeeklyQuestDataTable = new DataTable<>();
@Getter private static DataTable<WeeklyQuestActiveDef> WeeklyQuestActiveDataTable = new DataTable<>();
// ===== Achievements =====
@Getter private static DataTable<AchievementDef> AchievementDataTable = new DataTable<>();
@@ -23,6 +23,11 @@ public class BattlePassQuestDef extends BaseDef implements QuestData {
return Id;
}
@Override
public long getQuestKey() {
return Id;
}
public boolean isDaily() {
return this.Type == 1;
}
@@ -0,0 +1,37 @@
package emu.nebula.data.resources;
import emu.nebula.data.BaseDef;
import emu.nebula.data.ResourceType;
import emu.nebula.game.inventory.ItemParamMap;
import lombok.Getter;
@Getter
@ResourceType(name = "WeeklyQuestActive.json")
public class WeeklyQuestActiveDef extends BaseDef {
private int Id;
private int Active;
private int ItemTid1;
private int Number1;
private int ItemTid2;
private int Number2;
private transient ItemParamMap rewards;
@Override
public int getId() {
return Id;
}
@Override
public void onLoad() {
this.rewards = new ItemParamMap();
if (this.ItemTid1 > 0 && this.Number1 > 0) {
this.rewards.add(this.ItemTid1, this.Number1);
}
if (this.ItemTid2 > 0 && this.Number2 > 0) {
this.rewards.add(this.ItemTid2, this.Number2);
}
}
}
@@ -0,0 +1,49 @@
package emu.nebula.data.resources;
import java.util.Arrays;
import emu.nebula.data.BaseDef;
import emu.nebula.data.ResourceType;
import emu.nebula.game.quest.QuestData;
import emu.nebula.game.quest.QuestType;
import lombok.Getter;
@Getter
@ResourceType(name = "WeeklyQuest.json")
public class WeeklyQuestDef extends BaseDef implements QuestData {
private int Id;
private boolean Apear;
private int Active;
private int ItemTid;
private int ItemQty;
private int CompleteCond;
private int CompleteCondClient;
private String CompleteCondParams;
private transient int[] condParams;
@Override
public int getId() {
return Id;
}
@Override
public int getQuestType() {
return QuestType.Weekly;
}
public int[] getCompleteCondParams() {
return this.condParams;
}
@Override
public void onLoad() {
this.condParams = Arrays.stream(this.CompleteCondParams.split("[\\[,\\]]"))
.filter(s -> !s.isEmpty())
.mapToInt(Integer::parseInt)
.toArray();
this.CompleteCondParams = null;
}
}