Full Version : Multi part quests
xmlspawner >>Q&A >>Multi part quests
<< Prev | Next >>
Discord- 07-03-2006
I am having a bit of trouble with a 3 part quest.
I have the following syntax on the first NPC the players are supposed to deliver some wool to. He doesnt seem to be working and I am not sure if it because of something small or if I am laying out the questholder wrong.
The dialog entry that begins the encounter is below, any indication of where I went wrong would be appreciated.
TRIGONCARRIED Wool Delivery
Line 10
Depends on -2
Text: Oh there you are.. blah blah..
Condition: GETONCARRIED,Wool Delivery,questholder,iscompleted1=false
ACTION: SETONCARRIED, Wool Delivery, questholder,iscompleted1=true;SETONTRIGMOB/MSG/*you give the wool to the Man*;TAKE,wool,5,delete
I had thought if you have 3 objectives, which I got to lay out properly in the quest book they would be objective1, objective2, objective3 and when you want to mark completed it would be completed1, completed2, completed3 - is that incorrect?
Dis~
ArteGordon- 07-03-2006
to check to see if individual objectives have been completed, then you want to check the 'completed1', 'completed2', etc. properties of the questholder.
To see if all objectives have been completed, check the 'iscompleted' property.

CODE
GETONCARRIED,Wool Delivery,questholder,iscompleted1=false

here you are checking for the 'iscompleted1' property, which doesnt exist. You want that to be 'completed1'.
Also here.

CODE
ACTION: SETONCARRIED, Wool Delivery, questholder,iscompleted1=true;

the syntax for setting properties is
object/propertyname/value
so that should look like

CODE
ACTION: SETONCARRIED, Wool Delivery, questholder/completed1/true/;

where the object is the carried questholder named Wool Delivery.
Discord- 07-03-2006
Thank you again - makes sense and I knew it had to be some sort of syntax error on my part. Another quickie question -
Where do you set a quest or spawner so that a player cannot repeat the same quest again for a set period of time? Would that be set in the refractory somehow? I tried searching for this and was unable to get any results, tho Im sure it was covered someplace I just cant find.
Dis~
ArteGordon- 07-03-2006

QUOTE (Discord @ July 03, 2006 11:52 am)
Thank you again - makes sense and I knew it had to be some sort of syntax error on my part. Another quickie question - Where do you set a quest or spawner so that a player cannot repeat the same quest again for a set period of time? Would that be set in the refractory somehow? I tried searching for this and was unable to get any results, tho Im sure it was covered someplace I just cant find.
Dis~

just set the 'Repeatable' and 'NextRepeatable' properties on the questholder

QUOTE
- added support for flagging quests as either non-repeatable, or repeatable but only after some time period. If the Repeatable property is set to false on a questholder or questnote item, when the quest is completed and deleted, the player will be given a quest attachment (XmlQuestAttachment) that will flag the player as having completed the quest. If the Repeatable property is set to true (the default) and the NextRepeatable property is set to a TimeSpan value, then the attachment will be set to expire after that time. As long as the XmlQuestAttachment with the quest name is attached to the player, objectives for that quest cannot be completed. The quest can still be held by the player and when the attachment expires, the player can then repeat the quest. Note, staff can add or remove these attachments in-game using [addatt and [delatt to manually control whether specific players can repeat specific quests. The repeatability status of a quest will be shown at the bottom of the quest status gump.
For example spawning a quest as
questholder/name/waitforme/objective1/KILL,orc/autoreward/true/rewardstring/ARMOR,1,2/nextrepeatable/10:00
would make a quest named 'waitforme' with the objective to kill an orc and a random armor auto reward that could only be repeated once every 10 hours.
questholder/name/onlyone/objective1/KILL,balron/autoreward/true/rewardstring/ARMOR,4,5/repeatable/false
would make a quest named 'onlyone' with the objective to kill a balron and a random armor auto reward that could only be done once.
- added the .xml example repeatquest.xml that spawns a quest that can be repeated once a day and gives 2 hours of life drain ability as a reward.

Discord- 07-03-2006
I cannot seem to get this set properly - when I check my questlog it never changes from available now. This is what my questholder looks like in the xmldialog entry for ACTION:

CODE
GIVE/<questholder/name/Wool Delivery/notestring/blah blah/objective1/GIVENAMED,Master,Bag of Wool,1/objective2/GIVENAMED,blah blah/objective3/GIVENAMED,more blah/autoreward/false/repeatable/true/nextrepeatable/24:00

ArteGordon- 07-03-2006
I think that is because of this
nextrepeatable/24:00
the timespan value of 24 hours should be 1 day written as 1.00:00
23:59 would be a valid time, but 24:00 would not. It's a timespan thing.
Discord- 07-03-2006
That did the trick - thanks again Arte
Dis~
Discord- 07-05-2006
Sorta related question..
How would you set the NoTrigOnCarried box in the xmledit gump to accept multiple items that would stop a trigger?
For example:
I have 3 quests on one NPC - I dont want her introductory text to trigger if the player that triggers her is carrying any one of these three questbooks - basically they should only be able to do one at a time but they are given randomly and once they have one of the three I dont want her to offer any more until they come back with none of them.
Would I just put the name of the Quests separated by ;? or / in the NoTrig field?
Once again I am lost on the proper separators or syntax.. go figure...
Dis~
ArteGordon- 07-05-2006
you would use the & and | operators.
from xmlspawner2.txt

QUOTE
- added support for compound TriggerOnCarried/NoTriggerOnCarried tests using the & and | operators. This allows testing for multiple carried items. For example to trigger the spawner when a player is carrying both the platehelm named 'Helm of Light' and the longsword named 'Sword of Light' you could use the following string in the TriggerOnCarried property, "Helm of Light,platehelm & Sword of Light,longsword"