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

This commit is contained in:
Ziggy
2023-11-12 22:49:06 +01:00
committed by Mads Boddum
parent 9abc3f2cd7
commit ef8d448e69
@@ -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<QuestLoader.QuestTaskInfo> 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();