From c012742d30e0295b4aafb09721b380bbba65525c Mon Sep 17 00:00:00 2001 From: Melledy <121644117+Melledy@users.noreply.github.com> Date: Thu, 13 Nov 2025 02:09:44 -0800 Subject: [PATCH] Refactor quest manager stuff --- .../emu/nebula/game/quest/QuestManager.java | 38 ++++++++++++++----- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/src/main/java/emu/nebula/game/quest/QuestManager.java b/src/main/java/emu/nebula/game/quest/QuestManager.java index c661f5a..b91fae7 100644 --- a/src/main/java/emu/nebula/game/quest/QuestManager.java +++ b/src/main/java/emu/nebula/game/quest/QuestManager.java @@ -33,7 +33,6 @@ public class QuestManager extends PlayerManager implements GameDatabaseObject { private int uid; // Daily activity missions - private int activity; private IntSet claimedActiveIds; // Quests @@ -71,6 +70,29 @@ public class QuestManager extends PlayerManager implements GameDatabaseObject { Nebula.getGameDatabase().update(this, this.getUid(), "levelRewards", this.levelRewards); } + public synchronized int getActivity() { + int activity = 0; + + for (var quest : getQuests().values()) { + if (quest.getType() != QuestType.Daily) { + continue; + } + + if (!quest.isClaimed()) { + continue; + } + + var data = GameData.getDailyQuestDataTable().get(quest.getId()); + if (data == null) { + continue; + } + + activity += data.getActive(); + } + + return activity; + } + public synchronized void resetDailyQuests() { // Reset daily quests for (var data : GameData.getDailyQuestDataTable()) { @@ -85,9 +107,7 @@ public class QuestManager extends PlayerManager implements GameDatabaseObject { } // Reset activity - this.activity = 0; this.claimedActiveIds.clear(); - this.hasDailyReward = true; // Persist to database @@ -164,9 +184,6 @@ public class QuestManager extends PlayerManager implements GameDatabaseObject { if (data != null) { // Add reward data this.getPlayer().getInventory().addItem(data.getItemTid(), data.getItemQty(), change); - - // Add activity - this.activity += data.getActive(); } // Set claimed @@ -176,9 +193,6 @@ public class QuestManager extends PlayerManager implements GameDatabaseObject { Nebula.getGameDatabase().update(this, this.getUid(), "quests." + quest.getId(), quest); } - // Update in database - Nebula.getGameDatabase().update(this, this.getUid(), "activity", this.getActivity()); - // Trigger quest this.getPlayer().triggerQuest(QuestCondType.QuestWithSpecificType, claimList.size(), QuestType.Daily); @@ -191,13 +205,15 @@ public class QuestManager extends PlayerManager implements GameDatabaseObject { var claimList = new IntArrayList(); var rewards = new ItemParamMap(); + int activity = this.getActivity(); + // Get claimable for (var data : GameData.getDailyQuestActiveDataTable()) { if (this.getClaimedActiveIds().contains(data.getId())) { continue; } - if (this.getActivity() >= data.getActive()) { + if (activity >= data.getActive()) { // Add rewards rewards.add(data.getRewards()); @@ -304,10 +320,12 @@ public class QuestManager extends PlayerManager implements GameDatabaseObject { quests.addList(quest.toProto()); } + // Set claimed activity ids for (int id : this.getClaimedActiveIds()) { proto.addDailyActiveIds(id); } + // Set world level rewards proto.getMutableState() .getMutableWorldClassReward() .setFlag(this.getLevelRewards().toBigEndianByteArray());