Quests

Aus PantheonWiki

Inhaltsverzeichnis

Quests

Quests sind hierarchisch aufgebaut, können also Subquests enthalten, welche wiederum Subquests enthalten können usw. Alternativ können Quests auch einer Anzahl von gleichen Aktionen entsprechen. Quests mit Subquests sind erfüllt, wenn alle Subquests erfüllt sind. Quests mit mehreren Aktionen (z.B. "Bringe mir 10 Ogerköpfe") sind erfüllt, wenn die geforderte Anzahl mit der tatsächlichen übereinstimmt.

Quests werden über das QuestBook verwaltet.

questBook = RulesSubsystem.getSingleton().getQuestBook()

Quests definieren

Über eine Definitionsdatei für Quests

In dem dem Ordner "<rlpfad>/modules/<modulenid>/quests" befinden sich die Definitionsdateien für Quests. Diese Dateien enden mit ".quests" und beinhalten die Quests. Man kann einstellen, welchen Anfangszustand sie haben.

Hier ein Beispiel:

<quests>
	<quest id="quest1">
		<name>quest1</name>
		<description>blub blub blahtext</description>
		<state>COMPLETED</state>
		<known>true</known>
		<quest id="subquest1_1">
			<name>subquest1_1</name>
			<description>nochmal blah</description>
			<known>true</known>
		</quest>
	</quest>
	<quest id="quest2">
		<name>quest2</name>
		<description>blub blub blahtext213423</description>
		<state>COMPLETED</state>
		<known>true</known>
		<quest id="subquest2_1">
			<name>subquest2_1</name>
			<known>false</known>
		</quest>
		<quest id="subquest2_2">
			<name>subquest2_2</name>
			<known>false</known>
		</quest>
		<quest id="subquest2_3">
			<known>true</known>
			<name>subquest2_3</name>
			<known>true</known>
		</quest>
	</quest>
</quests>

Es gibt folgende Optionen:

  • Name
  • Description -> Beschreibungstext des Quests
  • State -> Status: OPEN, ASSIGNED, FAILED, SUCCEEDED, COMPLETED
  • Known -> ob der Quest bekannt ist

Jede Quest muss eine eindeutige ID haben.

Quests im Code definieren

Top-Level Quests

# Quest erschaffen
unterkunftQuest = 
	Quest.new(
		"eindeutige ID 1",
		"Titel",
		"Beschreibung")
# Quest ins QuestBook eintragen
questBook.addQuest(unterkunftQuest)
# Geforderte Anzahl
unterkunftQuest.setPartsToDo(10)
# Bekannt machen
unterkunftQuest.setKnown(true)

Subquests

unterkunftQuest.addSubquest(
	Quest.new(
		"eindeutige ID 2",
		"Titel",
		"Beschreibung")
unterkunftQuest.addSubquest(
	Quest.new(
		"eindeutige ID 3",
		"Titel",
		"Beschreibung")


Questzustände verändern

Zustand

Quests können angenommen (Quest::ASSIGNED), offen (Quest::OPEN), unerfüllbar (Quest::FAILED), alle Bedingungen erfüllt (Quest::COMPLETED) oder abgeschlossen (Quest::CLOSED) sein.

quest = questBook.getQuest("spinne")
# Fertig
quest.setState(Quest::COMPLETED)
.increasePartsDone()

Anzahl der Aufgaben

quest = questBook.getQuest("spinne")
quest.setPartsDone(quest.getPartsDone() + 1)

Quest können auch Eigentschaften haben

quest = questBook.getQuest("spinne")
#Eigenschaft setzen:
quest.setProperty("Beine abgeschlagen", Property(4))
#Eigenschaft bekommen:
int beine_abgeschlagen = quest.getProperty("Beine abgeschlagen").toInt()
Persönliche Werkzeuge
Link zur berliOS-Projektseite