Implement monolith research quests

This commit is contained in:
Melledy committed 2026-10-19 20:59:01 -07:00
1 parent 2424496472
commit b302871630
16 files changed
+1024 -35

No files matched your search

+1 -1
View File
@@ -4,7 +4,6 @@ import emu.nebula.data.custom.CharGemAttrGroupDef;
import emu.nebula.data.resources.*;
import lombok.Getter;
@SuppressWarnings("unused")
public class GameData {
// ===== Characters =====
@Getter private static DataTable<CharacterDef> CharacterDataTable = new DataTable<>();
@@ -117,6 +116,7 @@ public class GameData {
@Getter private static DataTable<StarTowerFloorExpDef> StarTowerFloorExpDataTable = new DataTable<>();
@Getter private static DataTable<StarTowerTeamExpDef> StarTowerTeamExpDataTable = new DataTable<>();
@Getter private static DataTable<StarTowerEventDef> StarTowerEventDataTable = new DataTable<>();
@Getter private static DataTable<StarTowerQuestDef> StarTowerQuestDataTable = new DataTable<>();
@Getter private static DataTable<StarTowerBuildRankDef> StarTowerBuildRankDataTable = new DataTable<>();
@Getter private static DataTable<StarTowerBookPotentialRewardDef> StarTowerBookPotentialRewardDataTable = new DataTable<>();
@Getter private static DataTable<SubNoteSkillPromoteGroupDef> SubNoteSkillPromoteGroupDataTable = new DataTable<>();
@@ -0,0 +1,36 @@
package emu.nebula.data.custom;
import emu.nebula.data.BaseDef;
import emu.nebula.data.GameData;
import emu.nebula.data.ResourceType;
import emu.nebula.data.ResourceType.LoadPriority;
import lombok.Getter;
@Getter
@ResourceType(name = "StarTowerQuestParam.json", useInternal = true, loadPriority = LoadPriority.LOW)
public class StarTowerQuestParamDef extends BaseDef {
private int Id;
private int CompleteCond;
private int Aim;
private int Param1;
private int ParamCond1;
private int Param2;
private int ParamCond2;
@Override
public int getId() {
return Id;
}
@Override
public void onLoad() {
var quest = GameData.getStarTowerQuestDataTable().get(this.Id);
if (quest == null) {
return;
}
quest.setParams(this);
}
}
@@ -9,6 +9,7 @@ import lombok.Getter;
public class StarTowerBuildRankDef extends BaseDef {
private int Id;
private int MinGrade;
private int Level;
private int Rarity;
@Override
@@ -0,0 +1,78 @@
package emu.nebula.data.resources;
import emu.nebula.data.BaseDef;
import emu.nebula.data.ResourceType;
import emu.nebula.data.custom.StarTowerQuestParamDef;
import emu.nebula.game.quest.QuestData;
import emu.nebula.game.quest.QuestType;
import lombok.Getter;
@Getter
@ResourceType(name = "StarTowerQuest.json")
public class StarTowerQuestDef extends BaseDef implements QuestData {
private int Id;
private String Title;
private int TowerQuestType; // 1 = Core, 2 = Normal
private int[] PreTowerQuestIds;
// Rewards
private int Reward1;
private int RewardQty1;
private int Reward2;
private int RewardQty2;
// Custom params (loaded from defs/StarTowerQuestParam.json)
private transient int completeCond;
private transient int aim;
private transient int param1;
private transient int paramCond1;
private transient int param2;
private transient int paramCond2;
private transient int[] condParams;
@Override
public int getId() {
return Id;
}
@Override
public int getQuestType() {
return QuestType.Tower;
}
@Override
public int getCompleteCond() {
return this.completeCond;
}
@Override
public int[] getCompleteCondParams() {
if (this.condParams == null) {
this.condParams = new int[] { 1, 0, 0 };
}
return this.condParams;
}
/**
* Applies the generated condition params from the internal defs file.
*/
public void setParams(StarTowerQuestParamDef params) {
this.completeCond = params.getCompleteCond();
this.aim = params.getAim();
this.param1 = params.getParam1();
this.paramCond1 = params.getParamCond1();
this.param2 = params.getParam2();
this.paramCond2 = params.getParamCond2();
this.condParams = new int[] { this.aim, this.param1, this.param2 };
}
@Override
public void onLoad() {
// Quests without prerequisites have no array in the data file
if (this.PreTowerQuestIds == null) {
this.PreTowerQuestIds = new int[0];
}
}
}