Implement battle pass

This commit is contained in:
Melledy
2025-11-13 01:24:42 -08:00
parent 61bc5e7a0c
commit 8d4736c00e
25 changed files with 758 additions and 49 deletions
@@ -53,6 +53,12 @@ public class GameData {
@Getter private static DataTable<ResidentShopDef> ResidentShopDataTable = new DataTable<>();
@Getter private static DataTable<ResidentGoodsDef> ResidentGoodsDataTable = new DataTable<>();
// Battle Pass
@Getter private static DataTable<BattlePassDef> BattlePassDataTable = new DataTable<>();
@Getter private static DataTable<BattlePassLevelDef> BattlePassLevelDataTable = new DataTable<>();
@Getter private static DataTable<BattlePassQuestDef> BattlePassQuestDataTable = new DataTable<>();
@Getter private static DataTable<BattlePassRewardDef> BattlePassRewardDataTable = new DataTable<>();
// Commissions
@Getter private static DataTable<AgentDef> AgentDataTable = new DataTable<>();
@@ -0,0 +1,16 @@
package emu.nebula.data.resources;
import emu.nebula.data.BaseDef;
import emu.nebula.data.ResourceType;
import lombok.Getter;
@Getter
@ResourceType(name = "BattlePass.json")
public class BattlePassDef extends BaseDef {
private int ID;
@Override
public int getId() {
return ID;
}
}
@@ -0,0 +1,20 @@
package emu.nebula.data.resources;
import emu.nebula.data.BaseDef;
import emu.nebula.data.ResourceType;
import lombok.Getter;
@Getter
@ResourceType(name = "BattlePassLevel.json")
public class BattlePassLevelDef extends BaseDef {
private int ID;
private int Exp;
private int Tid;
private int Qty;
@Override
public int getId() {
return ID;
}
}
@@ -0,0 +1,45 @@
package emu.nebula.data.resources;
import emu.nebula.data.BaseDef;
import emu.nebula.data.ResourceType;
import emu.nebula.game.quest.QuestData;
import emu.nebula.game.quest.QuestHelper;
import emu.nebula.game.quest.QuestType;
import emu.nebula.game.quest.QuestHelper.QuestParams;
import lombok.Getter;
@Getter
@ResourceType(name = "BattlePassQuest.json")
public class BattlePassQuestDef extends BaseDef implements QuestData {
private int Id;
private int Type;
private int Exp;
private transient int questType;
private transient QuestParams params;
@Override
public int getId() {
return Id;
}
public boolean isDaily() {
return this.Type == 1;
}
@Override
public int getCompleteCond() {
return params.getCompleteCond();
}
@Override
public int[] getCompleteCondParams() {
return params.getCompleteCondParams();
}
@Override
public void onLoad() {
this.questType = this.isDaily() ? QuestType.BattlePassDaily : QuestType.BattlePassWeekly;
this.params = QuestHelper.getBattlePassQuestParams().getOrDefault(this.getId(), QuestHelper.DEFAULT);
}
}
@@ -0,0 +1,45 @@
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 = "BattlePassReward.json")
public class BattlePassRewardDef extends BaseDef {
private int ID;
private int Level;
private int Tid1;
private int Qty1;
private int Tid2;
private int Qty2;
private int Tid3;
private int Qty3;
private transient ItemParamMap basicRewards;
private transient ItemParamMap premiumRewards;
@Override
public int getId() {
return (ID << 16) + Level;
}
@Override
public void onLoad() {
this.basicRewards = new ItemParamMap();
this.premiumRewards = new ItemParamMap();
if (this.Tid1 > 0) {
this.basicRewards.add(this.Tid1, this.Qty1);
}
if (this.Tid2 > 0) {
this.premiumRewards.add(this.Tid2, this.Qty2);
}
if (this.Tid3 > 0) {
this.premiumRewards.add(this.Tid3, this.Qty3);
}
}
}
@@ -4,11 +4,13 @@ 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 = "DailyQuest.json")
public class DailyQuestDef extends BaseDef {
public class DailyQuestDef extends BaseDef implements QuestData {
private int Id;
private boolean Apear;
private int Active;
@@ -26,6 +28,11 @@ public class DailyQuestDef extends BaseDef {
return Id;
}
@Override
public int getQuestType() {
return QuestType.Daily;
}
public int[] getCompleteCondParams() {
return this.condParams;
}