- Gather a resource (may require a tool)
- Capture a monster
- Grow a plant
- Use X of a quest item on X monsters or locations (example there is or was a quest in WoW where you put medicine on diseased gazelles)
- Successfully execute a combo, this is kind of related to minigames like DDR and Guitar Hero where you match the pattern and timing
- Buy X (I don't really like this kind of quest, but it seems different from Find X or Build/Make X or Gather X)
variations on themes. but that's the whole idea here: there seem to be a small number of generic themes for all types of quest / missions in all types of games, apparently irrespective of genre.
gather resource:
get action, or someone_has(player, 50 wood) condition.
get actions can come from buying, killing and getting treasure, gathering resources, finding, pretty much any means. the fundamental goal is to place some quantity of something in someones possesion. which would lead to questgen code like: qty=dice(10), item=random_object(), for_who=npc[questor].
capture a monster:
depends on whether you have to deliver it to someone/somewhere or not.
if you do, this is a transport against their will mission (kidnap).
if you don't this is just an attack (to subdue) mission. And yes, the game supports attack to subdue, capture of subdued wild animals, taming of captured animals that are domesticable (dire wolf only at this point), killing captured animals, escape of captured animals, etc. I've tried to be thorough. ; )
- Grow a plant:
that would probably be a make action.
Use X of a quest item on X monsters or locations (example there is or was a quest in WoW where you put medicine on diseased gazelles):
Hmm, use of an item... that may be a new one...
by George! looks like we got us a winner! Give that man a cee-gar!
1. attack/destroy
2. defend
3. goto
4. transport
5. make/build
6. get
7. steal
8. find
9. influence
10. use
1. person/NPC/friendy unit or monster/badguy/hostile unit
2. item
3. information
4. landmark, location, building (a fixed position).
1. at_location(who/what, where)
2. someone_has(who, what, how many)
3. exists(person/place/thing)
4. is_known(what, bywho)
5. time_expired(deadline)
i changed around the list of conditions a bit, listing them as pseudocode function calls with parameters.
someone_has() includes stats like (player, 10 dexterity).
exists() covers both the is_alive(), and is_dead_or_destroyed() cases. so i collapsed them together.
that reduces it to 5 basic types of mission conditions.
its hard to believe that every quest and mission in every game, book, and movie ever made consists of just a few basic elements like these. but every thread i've found online about this topic reaches the same results and comes to the same conclusion.
getting back to suggestions for the list:
Successfully execute a combo, this is kind of related to minigames like DDR and Guitar Hero where you match the pattern and timing:
could be another new one here. everyone on my block plays sports games, NBA2K13 and Madden for the most part. I see this type of optional mission goal in those types of games frequently. Tiger woods (another popular title in the 'hood) does some of that too, as i recall. stuff about executing a trick combo or some number of trick plays, etc.
Hmm, whats a good way to list that one, so it might apply to all game types...
can't think of anything better than "execute combo/trick maneuver" at the moment.
and so the list grows again:
1. attack/destroy
2. defend
3. goto
4. transport
5. make/build
6. get
7. steal
8. find
9. influence
10. use
11. successfully execute
1. person/NPC/friendy unit or monster/badguy/hostile unit
2. item
3. information
4. landmark, location, building (a fixed position).
5. combo/trick maneuver
1. at_location(who/what, where)
2. someone_has(who, what, how many)
3. exists(person/place/thing)
4. is_known(what, bywho)
5. time_expired(deadline)
I can't help noticing that actions are like verbs, and the list of objects is like subjects, and parameters like bywho are like direct objects in a sentence.
buy x:
another version of get.
get actually is a general version of make, build, get, steal, find, gather, etc. all versions of ACQUIRE.
if its not undesirable for the player to be able to complete a quest by any means they wish, then make, build, get, steal, find, gather, etc can all be collapsed into
acquire (by whatever means).
which would give us:
1. attack/destroy
2. defend
3. goto
4. transport
5. acquire
6. influence
7. use
8. successfully execute
and another simplification:
[player] goto(location) = transport(player,location)) the player transports themselves to a location. so goto is just a special case of the more general transport action, where you transport yourself.
now its down to:
1. attack/destroy
2. defend
3. transport
4. acquire
5. influence
6. use
7. successfully execute
I have a feeling that for many of these, other actions will be implied.
obviously, goto will be implied for just about everything.
I'm thinking that quests / missions where the game defines the goals and restrictions, but the player is otherwise free to choose the means would be superior to quests that don't allow this. Assuming the game supports this level of freedom, one wouldn't have to get into the nitty gritty special cases of steal this, grow that, gather the other, etc. you could do it all with a simple generic acquire(who, what, howmany) quest.
acquire(player, rat tails,10)
acquire(npc[questor], captured monster of some specific type, 1)
acquire(town center building, wood resource, 500 units)
or the final goal in the thieves guild campaign in Oblivion: acquire(The Gray Fox, Elder Scroll, 1)
if you needed to specify the means as well as the ends, you could always do:
AcquireEx(who, what, howmany, bywhatmeans)
where bywhatmeans would be find, grow, gather, buy, steal, make, etc.
like that AquireEx? can you tell i read too many directx docs? <g>