From ef8d448e6933b2e48fb308e94dcd03f2668e838c Mon Sep 17 00:00:00 2001 From: Ziggy Date: Sun, 5 Nov 2023 12:38:33 +0100 Subject: [PATCH] Kill count is now updated properly when you get to the max and is also added to the quest journal BEFORE killing anything, so you can see what you are supposed to be doing #1387 --- .../gameplay/player/quest/QuestService.java | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/projectswg/holocore/services/gameplay/player/quest/QuestService.java b/src/main/java/com/projectswg/holocore/services/gameplay/player/quest/QuestService.java index 730324eee..ccac90562 100644 --- a/src/main/java/com/projectswg/holocore/services/gameplay/player/quest/QuestService.java +++ b/src/main/java/com/projectswg/holocore/services/gameplay/player/quest/QuestService.java @@ -35,6 +35,7 @@ import com.projectswg.common.network.packets.swg.zone.CommPlayerMessage; import com.projectswg.common.network.packets.swg.zone.PlayMusicMessage; import com.projectswg.common.network.packets.swg.zone.chat.ChatSystemMessage; import com.projectswg.common.network.packets.swg.zone.object_controller.quest.QuestCompletedMessage; +import com.projectswg.common.network.packets.swg.zone.object_controller.quest.QuestTaskCounterMessage; import com.projectswg.holocore.intents.gameplay.combat.CreatureKilledIntent; import com.projectswg.holocore.intents.gameplay.player.quest.AbandonQuestIntent; import com.projectswg.holocore.intents.gameplay.player.quest.AdvanceQuestIntent; @@ -197,12 +198,12 @@ public class QuestService extends Service { int max = activeTaskListInfo.getCount(); int counter = playerObject.incrementQuestCounter(questName); int remaining = max - counter; - + int task = activeTaskListInfo.getIndex(); StandardLog.onPlayerTrace(this, owner, "%d remaining kills required on quest %s", remaining, questName); + + incrementKillCount(questName, task, owner, counter, max); - if (remaining > 0) { - incrementKillCount(owner, remaining); - } else { + if (remaining <= 0) { advanceQuest(questName, owner, activeTaskListInfos); } } @@ -219,11 +220,11 @@ public class QuestService extends Service { return Objects.equals(targetServerTemplate, stfName); } - private void incrementKillCount(Player player, int remaining) { + private void incrementKillCount(String questName, int task, Player player, int counter, int max) { + player.sendPacket(new QuestTaskCounterMessage(player.getCreatureObject().getObjectId(), questName, task, "@quest/groundquests:destroy_counter", counter, max)); + int remaining = max - counter; ProsePackage prose = new ProsePackage(new StringId("quest/groundquests", "destroy_multiple_success"), "DI", remaining); SystemMessageIntent.broadcastPersonal(player, prose); - - player.sendPacket(new PlayMusicMessage(0, "sound/ui_npe2_quest_counter.snd", 1, false)); } private void handleTaskEvents(Player player, String questName, Collection currentTasks) { @@ -253,10 +254,21 @@ public class QuestService extends Service { handleShowMessageBox(player, questName, playerObject, currentTask); break; } + case "quest.task.ground.destroy_multi": { + handleDestroyMulti(player, questName, currentTask); + break; + } } } } + private static void handleDestroyMulti(Player player, String questName, QuestLoader.QuestTaskInfo currentTask) { + int task = currentTask.getIndex(); + int max = currentTask.getCount(); + int counter = 0; + player.sendPacket(new QuestTaskCounterMessage(player.getCreatureObject().getObjectId(), questName, task, "@quest/groundquests:destroy_counter", counter, max)); + } + private void handleShowMessageBox(Player player, String questName, PlayerObject playerObject, QuestLoader.QuestTaskInfo currentTask) { String messageBoxTitle = currentTask.getMessageBoxTitle(); String messageBoxText = currentTask.getMessageBoxText();