Full Version : Multiple location objectives (Like the naturalist)
xmlspawner >>Q&A >>Multiple location objectives (Like the naturalist)
<< Prev | Next >>
dagormanu- 05-09-2006
I am working on a quest in which players must vist several locations to complete the objectives. They must be able to visit these locations in any order. I was thinking I'd have each location spawn an item in their pack and all them to collect the items, but the items must be uniquly named so that they don't just visit one location 10 times.
This is very much like the naturalist quest in which players must visit each of the Solen nests, but not in any particular order.
Any ideas?
ArteGordon- 05-09-2006
you can also have a spawner at each location, and the spawner is triggered when the quest is carried by the player coming within range of it. The spawner would then set one of the objectives to be true using the SETONCARRIED keyword.
Each spawner would set a different objective.
your questholder could look something like
questholder/name/yourquestname/objective1/Visit location 1/objective2/Visit location 2
at location 1, configure your spawner with TriggerOnCarried set to yourquestname with the spawn entry
SETONCARRIED,yourquestname,questholder/completed1/true
at location 2, use the entry
SETONCARRIED,yourquestname,questholder/completed2/true
dagormanu- 05-09-2006
Thanks much. Timely advice as usual.
I was hoping to make this such that the players didn't really know where they were going or how many places they need to visit, but I might have to give up on that idea. I was thinking more like they would check back with the questnpc and he'd tell them to keep looking until they got all the locations.
dagormanu- 05-09-2006
[edited below]
New problem. The quest gump on shows five of the ten objectives. Or am I being a pathetic n00b again?
AND, how do I prevent the the spawner at the fort from throwing the gump if they've already been to that fort (and the objective is already complete).
Here's what I have so far. (With some details changed just in case a player from my shard stumbles across it.
npc

CODE
<?xml version="1.0" standalone="yes"?> <XmlQuestNPC> <NPC> <Name>Joe Blow</Name> <Running>True</Running>
<ProximityRange>3</ProximityRange>
<AllowGhost>False</AllowGhost>
<SpeechPace>10</SpeechPace>
<ResetTime>0.5</ResetTime>
<SpeechEntries>4</SpeechEntries>
</NPC>
<SpeechEntry>
<EntryNumber>0</EntryNumber>
<ID>0</ID>
<Pause>1</Pause>
<PrePause>-1</PrePause>
<LockConversation>True</LockConversation>
<AllowNPCTrigger>False</AllowNPCTrigger>
<SpeechStyle>Regular</SpeechStyle>
<SpeechHue>-1</SpeechHue>
</SpeechEntry>
<SpeechEntry>
<EntryNumber>10</EntryNumber>
<ID>10</ID>
<Text>Hey, can you help?</Text>
<DependsOn>-1</DependsOn>
<Pause>1</Pause>
<PrePause>-1</PrePause>
<LockConversation>True</LockConversation>
<AllowNPCTrigger>False</AllowNPCTrigger>
<SpeechStyle>Regular</SpeechStyle>
<SpeechHue>-1</SpeechHue>
</SpeechEntry>
<SpeechEntry>
<EntryNumber>20</EntryNumber>
<ID>20</ID>
<Keywords>yes,sure,what,want,yea,ok</Keywords>
<DependsOn>10</DependsOn>
<Pause>1</Pause>
<PrePause>-1</PrePause>
<LockConversation>True</LockConversation>
<AllowNPCTrigger>False</AllowNPCTrigger>
<SpeechStyle>Regular</SpeechStyle>
<SpeechHue>-1</SpeechHue>
<Gump>GUMP,This Gump Title,3/Nice RP conversation here.</Gump>
</SpeechEntry>
<SpeechEntry>
<EntryNumber>30</EntryNumber>
<ID>30</ID>
<Keywords>accept</Keywords>
<Action>GIVE/&lt;questholder/name/Anthropologists Quest/objective1/Find the rodent fort/objective2/Find the repond fort/objective3/Find the frost fort/objective4/Find the orcish fort/objective5/Find the reptilian fort/objective6/Find the insect fort/objective7/Find a solen hole/objective8/Find a solen hole/objective9/Find a solen hole/objective10/Find a solen hole&gt;</Action>
<DependsOn>20</DependsOn>
<Pause>1</Pause>
<PrePause>-1</PrePause>
<LockConversation>True</LockConversation>
<AllowNPCTrigger>False</AllowNPCTrigger>
<SpeechStyle>Regular</SpeechStyle>
<SpeechHue>-1</SpeechHue>
<Gump>GUMP,Just do it,0/More nice RP speak</Gump>
</SpeechEntry>
</XmlQuestNPC>

and xml (currently located in GA for testing)

CODE
<Spawns> <Points> <Name>Camp1</Name> <UniqueId>29b916d6-00b7-4681-b3b5-619a4bb3732d</UniqueId> <Map>Felucca</Map>
<X>5441</X>
<Y>1133</Y>
<Width>10</Width>
<Height>10</Height>
<CentreX>5446</CentreX>
<CentreY>1138</CentreY>
<CentreZ>0</CentreZ>
<Range>5</Range>
<MaxCount>3</MaxCount>
<MinDelay>5</MinDelay>
<MaxDelay>10</MaxDelay>
<DelayInSec>False</DelayInSec>
<Duration>0</Duration>
<DespawnTime>0</DespawnTime>
<ProximityRange>5</ProximityRange>
<ProximityTriggerSound>500</ProximityTriggerSound>
<ItemTriggerName>Anthropologists Quest</ItemTriggerName>
<TriggerProbability>1</TriggerProbability>
<InContainer>False</InContainer>
<MinRefractory>0</MinRefractory>
<MaxRefractory>0</MaxRefractory>
<TODStart>0</TODStart>
<TODEnd>0</TODEnd>
<TODMode>0</TODMode>
<KillReset>1</KillReset>
<ExternalTriggering>False</ExternalTriggering>
<SequentialSpawning>-1</SequentialSpawning>
<AllowGhostTriggering>False</AllowGhostTriggering>
<SpawnOnTrigger>True</SpawnOnTrigger>
<SmartSpawning>False</SmartSpawning>
<Team>0</Team>
<Amount>1</Amount>
<IsGroup>False</IsGroup>
<IsRunning>True</IsRunning>
<IsHomeRangeRelative>True</IsHomeRangeRelative>
<Objects2>GUMP,The Ratman Fort,0/You discover the ratman fort. Quickly, you open the book, tear out a sheet, and scribble down a map of the immediate area.:MX=1:SB=1:RT=0:TO=0:KL=0:RK=0:CA=1:DN=-1:DX=-1:SP=1:OBJ=GIVE/&lt;spoon/name/A map of the rat camp/itemid/5357&gt;:MX=1:SB=1:RT=0:TO=0:KL=0:RK=0:CA=1:DN=-1:DX=-1:SP=1:OBJ=SETONCARRIED,Anthropologists Quest,questholder/completed1/true:MX=1:SB=1:RT=0:TO=0:KL=0:RK=0:CA=1:DN=-1:DX=-1:SP=1</Objects2>
</Points>
</Spawns>

ArteGordon- 05-09-2006
you cannot specify 10 objectives at once. You are only allowed 5.
You can do 5 and then when those are completed, they can be given another 5.
ArteGordon- 05-09-2006

QUOTE (dagormanu @ May 09, 2006 08:57 pm)
Thanks much. Timely advice as usual. I was hoping to make this such that the players didn't really know where they were going or how many places they need to visit, but I might have to give up on that idea. I was thinking more like they would check back with the questnpc and he'd tell them to keep looking until they got all the locations.

yes, I am testing a new VISIT quest objective that would allow that but it is not finished yet.
dagormanu- 05-10-2006
Understood. Thanks Arte!
dagormanu- 05-10-2006
I'm trying to prevent the location spawner from throwing a gump and giving an item repeatedly. (If you stay in proximity of the spawner it eventually gives the item again.)
I tried this, but now the spawner will not trigger at all.
TriggerOnCarried
Anthropologists Quest
TriggerObjectProp
Completed1 = False
I can't really set a TriggerObject since this uses serial and the questholder is created by the quest (thus has a unique serial).
ArteGordon- 05-10-2006

QUOTE (dagormanu @ May 10, 2006 02:41 pm)
I'm trying to prevent the location spawner from throwing a gump and giving an item repeatedly. (If you stay in proximity of the spawner it eventually gives the item again.) I tried this, but now the spawner will not trigger at all. TriggerOnCarried
Anthropologists Quest
TriggerObjectProp
Completed1 = False
I can't really set a TriggerObject since this uses serial and the questholder is created by the quest (thus has a unique serial).

the TriggerObjectProp is used to test properties on the object specified by the TriggerObject property. It is not used by TriggerOnCarried.
What you want to do is to set NoTriggerOnCarried to
Anthropologists Quest,1
from xmlspawner2.txt

QUOTE
With TriggerOnCarried, and NoTriggerOnCarried if the item is an XmlQuestToken item, then the status of objectives can also be specified as a requirement using the syntax "itemname,objective,objective,.." in the TriggerOnCarried or NoTriggerOnCarried string.
For example if you wish to trigger a spawner only when quest item "Blathers Quest" is carried and has objective 1 completed, then use the string "Blathers Quest,1" in the TriggerOnCarried
property.
If you would like to prevent triggering when objective 1 of that quest has already been completed then use the same string in the NoTriggerOnCarried property.