I understand plots and journal entries, etc.
I have a quest that requires collecting bar tabs from three specific people. However, the order is irrelevant. Most quests are like "do step one, this leads to step two"... but I need steps 2a, 2b, and 2c to be completed before moving to step 3.
I realized I could call a separate plot from within my main plot, but it still leaves the same problem. I need a way to say 'when bing bang and boom are ALL THREE DONE, no matter which order you did them in, activate shazam'
any tips?
help with non-linear quest creation
Débuté par
ixobelle
, nov. 12 2009 10:09
#1
Posté 12 novembre 2009 - 10:09
#2
Posté 12 novembre 2009 - 11:00
I posted a topic about 2 weeks ago about something similar to this and a Bioware guy replied. I don't know how to search on this crazy forum though. 
I think the suggestion was to create a counter variable and edit the script for your plot to check the value of the counter. Does this make any sense? I haven't done anything with the toolset yet other than fix my face.
EDIT: Found it. Click on your profile, then click on Forums and it shows all the topics you created.
http://social.biowar...c/8/index/59525
I think the suggestion was to create a counter variable and edit the script for your plot to check the value of the counter. Does this make any sense? I haven't done anything with the toolset yet other than fix my face.
EDIT: Found it. Click on your profile, then click on Forums and it shows all the topics you created.
http://social.biowar...c/8/index/59525
Modifié par FalloutBoy, 12 novembre 2009 - 11:07 .
#3
Posté 13 novembre 2009 - 12:19
Another approach could be to create three plot flags for the three different tabs, and then create a "defined" plot flag that uses a script to check whether all three of the individual tab plots have been set.
Defined plot flags rely on the plot's event script to determine what their value should be, they can't be "set" or "cleared" explicitly like regular plot flags are.
Here's a really quick and dirty pseudocodish example:
int StartingConditional()
{
if( nType == EVENT_TYPE_SET_PLOT )
{
//regular settable plot flags. Pretend there's plot flags for GOT_TAB_A, GOT_TAB_B, and GOT_TAB_C.
}
//--------------------------------------------------------------------------
// Conditions -> defined flags only (GET DEFINED)
//--------------------------------------------------------------------------
else
{
switch( nFlag )
{
case GOT_ALL_THREE_TABS:
{
if (WR_GetPlotFlag(sPlot,GOT_TAB_A) &&
WR_GetPlotFlag(sPlot,GOT_TAB_
&&
WR_GetPlotFlag(sPlot,GOT_TAB_C) )
bResult = TRUE;
break;
}
}
}
return bResult;
}
I know there's a way to set up the journal so that the quest's journal entry will read "you've collected one of the three tabs", "you've collected two of the three tabs", etc., but I don't know what method's used for that offhand. Hopefully this will get you to a good start in the meantime.
Defined plot flags rely on the plot's event script to determine what their value should be, they can't be "set" or "cleared" explicitly like regular plot flags are.
Here's a really quick and dirty pseudocodish example:
int StartingConditional()
{
if( nType == EVENT_TYPE_SET_PLOT )
{
//regular settable plot flags. Pretend there's plot flags for GOT_TAB_A, GOT_TAB_B, and GOT_TAB_C.
}
//--------------------------------------------------------------------------
// Conditions -> defined flags only (GET DEFINED)
//--------------------------------------------------------------------------
else
{
switch( nFlag )
{
case GOT_ALL_THREE_TABS:
{
if (WR_GetPlotFlag(sPlot,GOT_TAB_A) &&
WR_GetPlotFlag(sPlot,GOT_TAB_
WR_GetPlotFlag(sPlot,GOT_TAB_C) )
bResult = TRUE;
break;
}
}
}
return bResult;
}
I know there's a way to set up the journal so that the quest's journal entry will read "you've collected one of the three tabs", "you've collected two of the three tabs", etc., but I don't know what method's used for that offhand. Hopefully this will get you to a good start in the meantime.
#4
Posté 13 novembre 2009 - 12:34
I dont know what im talking about but im gonna chip in anyway 
The way the game seems to handle this, that ive noticed, is it will make codex entries that update and once the codex entry has all its parts your quest journal will update. I have no idea if its that simple though or if maybe it has something to do with the plot flags mentioned above.
The way the game seems to handle this, that ive noticed, is it will make codex entries that update and once the codex entry has all its parts your quest journal will update. I have no idea if its that simple though or if maybe it has something to do with the plot flags mentioned above.
#5
Posté 13 novembre 2009 - 12:51
awesome, thanks for the updates. I'll dig a bit deeper. I saw those flags, and was wondering if that was the key. Like having the three tabs each be 'yes/no' flags, and then having the TABS_COLLECTED main part be dependent on having those all flagged to yes.
I'm still mostly clicking around in the plot window, rather than writing hard code, but if that's what it takes, that's what it'll take
I'm still mostly clicking around in the plot window, rather than writing hard code, but if that's what it takes, that's what it'll take
#6
Posté 13 novembre 2009 - 12:55
basically, like this is what I have:

full version: http://notaddicted.c...belle/3tabs.jpg
I just need to plunk down some placeholder NPCs and conversations and line them up in a row to see if it works. when I work it out, i'll update the wiki and repost back here so the knowledge lives on

full version: http://notaddicted.c...belle/3tabs.jpg
I just need to plunk down some placeholder NPCs and conversations and line them up in a row to see if it works. when I work it out, i'll update the wiki and repost back here so the knowledge lives on
Modifié par ixobelle, 13 novembre 2009 - 12:57 .
#7
Posté 13 novembre 2009 - 01:05
I think you've got it reversed, the three "tab_paid" flags should be in the main flags section (so that they can each be set to true when each tab is paid) and the ALL_TABS_COLLECTED flag should be in the defined flags section (since it's something that depends on a script to determine whether it's "true" or not).
When you get to making an attempt at writing the event script, take a look at the "templates" button in the constants browser. There's a template called "Custom plot events.txt" that will set up the basic framework of a plot event script for you, the only thing you'll need to do is add an #include statement for the plot in question and add case statements for the plot flags you want to have special handling for.
When you get to making an attempt at writing the event script, take a look at the "templates" button in the constants browser. There's a template called "Custom plot events.txt" that will set up the basic framework of a plot event script for you, the only thing you'll need to do is add an #include statement for the plot in question and add case statements for the plot flags you want to have special handling for.





Retour en haut






