mirror of
https://github.com/ProjectSWGCore/Holocore.git
synced 2026-09-11 21:45:26 -04:00
Added support for quest.task.ground.clear_quest task type, so that a wider selection of quests can be added to the game
This commit is contained in:
+13
-2
@@ -126,8 +126,7 @@ class QuestService(private val destroyMultiAndLootDie: Die = RandomDie(), privat
|
||||
StandardLog.onPlayerTrace(this, player, "attempted to abandon quest %s which they have completed", questName)
|
||||
return
|
||||
}
|
||||
playerObject.removeQuest(questName)
|
||||
retrievedItemRepository.clearPreviousAttempts(questName, playerObject)
|
||||
removeQuest(playerObject, questName)
|
||||
StandardLog.onPlayerTrace(this, player, "abandoned quest %s", questName)
|
||||
}
|
||||
|
||||
@@ -415,9 +414,16 @@ class QuestService(private val destroyMultiAndLootDie: Die = RandomDie(), privat
|
||||
"quest.task.ground.nothing" -> handleNothing(player, questName, currentTask)
|
||||
"quest.task.ground.go_to_location" -> handleGoToLocation(player, currentTask)
|
||||
"quest.task.ground.retrieve_item" -> handleRetrieveItem(player, questName, currentTask)
|
||||
"quest.task.ground.clear_quest" -> handleClearQuest(player, questName)
|
||||
}
|
||||
}
|
||||
|
||||
private fun handleClearQuest(player: Player, questName: String) {
|
||||
val playerObject = player.getPlayerObject()
|
||||
removeQuest(playerObject, questName)
|
||||
StandardLog.onPlayerTrace(this, player, "cleared quest %s", questName)
|
||||
}
|
||||
|
||||
private fun handleRetrieveItem(player: Player, questName: String, currentTask: QuestTaskInfo) {
|
||||
val task = currentTask.index
|
||||
val max = currentTask.numRequired
|
||||
@@ -435,6 +441,11 @@ class QuestService(private val destroyMultiAndLootDie: Die = RandomDie(), privat
|
||||
}
|
||||
}
|
||||
|
||||
private fun removeQuest(playerObject: PlayerObject, questName: String) {
|
||||
playerObject.removeQuest(questName)
|
||||
retrievedItemRepository.clearPreviousAttempts(questName, playerObject)
|
||||
}
|
||||
|
||||
private fun createQuestWaypoint(currentTask: QuestTaskInfo, player: Player) {
|
||||
val waypoint = ObjectCreator.createObjectFromTemplate("object/waypoint/shared_waypoint.iff") as WaypointObject
|
||||
waypoint.setPosition(Terrain.getTerrainFromName(currentTask.planetName), currentTask.locationX, currentTask.locationY, currentTask.locationZ)
|
||||
|
||||
+17
@@ -226,6 +226,23 @@ class QuestTaskTypeTest : TestRunnerSynchronousIntents() {
|
||||
assertNotNull(questCompletedMessage, "Quest not completed in time")
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("quest.task.ground.clear_quest")
|
||||
fun clearQuest() {
|
||||
val player = createPlayer()
|
||||
|
||||
GrantQuestIntent.broadcast(player, "quest/c_newbie_quest6")
|
||||
val desiredLocation = LocationBuilder()
|
||||
.setTerrain(Terrain.TATOOINE)
|
||||
.setX(3429.0)
|
||||
.setY(0.0)
|
||||
.setZ(-4730.0)
|
||||
.build()
|
||||
player.creatureObject.moveToLocation(desiredLocation)
|
||||
|
||||
assertFalse(player.playerObject.isQuestInJournal("quest/c_newbie_quest6"), "Quest should have been cleared")
|
||||
}
|
||||
|
||||
private class CharacterSnapshot(private val player: GenericPlayer) { // Helper class to snapshot a character's state
|
||||
val xp = player.playerObject.getExperiencePoints("dance")
|
||||
val rebelFactionPoints = player.playerObject.getFactionPoints()["rebel"] ?: 0
|
||||
|
||||
Reference in New Issue
Block a user