Quest Wizard/Editor

Any ideas or suggestions for improving the IB2 engine

Quest Wizard/Editor

Postby youngneil1 » Thu Feb 11, 2016 4:06 pm

Very interesting, and nice to see overlaps in terminology and approach (as well as the differences) with IB.

I dont think it is really worth the addditonal effort, but an approach to quest and journal might be to change the journal editor into actually a quest editor (which in turn is very similar to the journal editor already):

The quest editor allows editing quest objects, which each might have the following properties:

1. a bool isActivated (if this is false the quest is not displayed in journal even if showInJournal is true and also the advanceToNextStepConditions conditions for questStageObjects Nr. 0 will be considered as not fullfilled - even if they are actually fullfilled - unless the quest itself is activated)
2. unique string questTag
3. a List<> of questStage Objects of this quest (see below)
4. a bool showInJournal (if false the whole quest and all its questStage objects will not appear in the journal at all; it is a behind scenes quest)
5. a string questName (this is dispalyed as header text for the quest in the journal if showInJournal is true, might also pop us as flaoty over party with the word "updated" if quest progress is amde, this makes the player look into the journal more often )
6. an int numberOfActiveQuestStageObject (this keeps track of the currently active questStage object, it starts with 0 which is the first questStageObject in the List; Note: questStage object Nr.0 is not conditional to anything, unlike all follwing questStage objects which need advanceToNextStepConditions == true of their preceding questStageObjects)

Each questStage object in turn might have the following properties:

I. Conditions for advancing to another questStageObject (which one is determiend by each of three alterntaive condtion sets of each questStage object)
1.First set of cumulative conditions (is itself connected via "or" with the other two alternative condition sets)
a. questTag and numberOfActiveQuestStageObject: this way quest prpgress in other quests can be made a condition to advance the quest at hand, allows for nice campaign structuring, I guess) AND
b. questTag and numberOfActiveQuestStageObject AND
c. questTag and numberOfActiveQuestStageObject AND
d. Global int name and required value AND
e. Global int name and required value AND
f. Global int name and required value AND
g. other (scripthook): name of (liekely gc_)script to fire AND
h. other (scripthook): name of (liekely gc_)script to fire AND
i. other (scripthook): name of (liekely gc_)script to fire
j. IMPORTANT: the questStageNumber to jump to in case of the fullfillment of conditions, if blank it's a +1. But with the option of other jumps and three alternative condtion sets we get branching quests, e.g. to we can track quest failure or alternative outcomes. Whichever of the three condition sets is fullfilled first determines the next step. There might e.g 1000+x (normal way) and 2000+x (alterntaive path) and 3000+ (vraious possibel failures) questStage numbers to monitor more than one path within a quest.

Note: I use each condition three times so authors can mix and match various requirements easily.
Power of this would increase greatly if operators like !/NOT, >/greater and </smaller woudl work in addition to the default equal operator. E.g. some quests might actually fail to appear/progress if another quest has progressed too far. Great for adventures with Choices & Consequences.

2.Alternative (OR) second set of cumulative conditions (is itself connected via "or" with the other two alternative condition sets)
1.First set of cumulative conditions (is itself connected via "or" with the other two alternative condition sets)
a. questTag and numberOfActiveQuestStageObject: this way quest propgress in other quests can be made a condition to advance the quest at hand, allows for nice campaign structuring, I guess) AND
b. questTag and numberOfActiveQuestStageObject AND
c. questTag and numberOfActiveQuestStageObject AND
d. Global int name and required value AND
e. Global int name and required value AND
f. Global int name and required value AND
g. other (scripthook): name of (liekely gc_)script to fire AND
h. other (scripthook): name of (liekely gc_)script to fire AND
i. other (scripthook): name of (liekely gc_)script to fire
j. IMPORTANT: the questStageNumber to jump in case of fullfillment of conditions

3.Alternative third (OR) set of cumulative conditions (is itself connected via "or" with the other two alternative condition sets)
1.First set of cumulative conditions (is itself connected via "or" with the other two alternative condition sets)
a. questTag and numberOfActiveQuestStageObject: this way quest propgress in other quests can be made a condition to advance the quest at hand, allows for nice campaign structuring, I guess) AND
b. questTag and numberOfActiveQuestStageObject AND
c. questTag and numberOfActiveQuestStageObject AND
d. Global int name and required value AND
e. Global int name and required value AND
f. Global int name and required value AND
g. other (scripthook): name of (liekely gc_)script to fire AND
h. other (scripthook): name of (liekely gc_)script to fire AND
i. other (scripthook): name of (liekely gc_)script to fire
j. IMPORTANT: the questStageNumber to jump in case fullfillment of conditions

II. Effects of advancing to next step, tehs eare granted when above conditions are met:
1.exp reward for each char in party (premade for author's convenince, just enter exp number)
2. exp reward for whoel party (is divided through character sin party) (premade for author's convenince, just enter exp number)
3. gold reward for whole party (premade for author's convenince, just enter gold number)
4. item reward for whoel party (premade for author's convenince, just enter the tags of the items, mayhaps sepaaretd by comata or drop down list)
5. other (scripthook): name of scritp to fire

This allows partial rewards during a long quest, if wanted.

Other properties:
1. an int questStageNumber (the combiantion of questTag and questStageNumber makes every quest step unique across all quests)
2. a bool isActivated (this set to true if the condtions of the preceding quest have been met)
3. a bool showInJournal (quests might have quest steps visible in the jopurnal as well as other quest steps invisible in the journal)
4. a string journalText (will apepar in journal)
5. a bool DisplayFloatyOnFullfillingCondition (makes

That should give the general idea, I think. If we ever go down this road of quest editor (well, looks like a campaign editor already) it migth actually be cool to also have a set of conditions for each questStage that indicate immediate quest failure (e.g. soembody to protect is killed). This will adavnce the numberOfActiveQuestStageObject to a special object with journal entry for failed quest (and mayhaps scripthook for consequneces). Other quests can check for this failed quest state, too, then as positive or negative requirement. This way a branching quest network opens up.

This would become basically a tool for setting up the campaign flow in one central place in the toolset.

Edit: Ah, got a great idea for branching, WIP again :-)...
User avatar
youngneil1
Backer
Backer
 
Posts: 4429
Joined: Sat Dec 08, 2012 7:51 am

Return to Engine Ideas and Suggestions

Who is online

Users browsing this forum: No registered users and 1 guest