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()
