Aller au contenu

Photo

help with non-linear quest creation


6 réponses à ce sujet

#1
ixobelle

ixobelle
  • Members
  • 109 messages
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?

#2
FalloutBoy

FalloutBoy
  • Members
  • 580 messages
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

Modifié par FalloutBoy, 12 novembre 2009 - 11:07 .


#3
BryanDerksen

BryanDerksen
  • BioWare Employees
  • 273 messages
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_B) &&
                    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
Vormalon

Vormalon
  • Members
  • 175 messages
I dont know what im talking about but im gonna chip in anyway :D



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
ixobelle

ixobelle
  • Members
  • 109 messages
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 ;)

#6
ixobelle

ixobelle
  • Members
  • 109 messages
basically, like this is what I have:

Posted Image

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
:whistle:

Modifié par ixobelle, 13 novembre 2009 - 12:57 .


#7
BryanDerksen

BryanDerksen
  • BioWare Employees
  • 273 messages
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.