Type 4: Find. As in, locate this item or place.
Yeah, forgot that one in the original list, then I found my notes.
In the above context, fetching a mcguffin would be classified as Move("Home","McGuffin")?
I forgot transport in the original list of actions.
that would be a transport quest, or a goto with has_item_in_inventory, or even more simply NPC[questor] has item in inventory (from a conditions point of view).
transport seems to cover a lot of cases: kidnap and rescue quests / missions are both transport quests. transport this person to that place (possibly against their will).
escort might also be considered transport. you have to ensure the movement of a person from here to there, and their safe arrival. not much different from a MMO fedex for 10 rat tails. both the person and rat tails must arrive in good condition. both the person and rat tails must move (somehow) from A to B. only real difference is the person can walk, and you have to carry the rat tails. the only other difference is the implied threat of "escort" vs "transport" in an escort mission, trouble is expected, and an encounter is pretty much guaranteed. In a transport quest, no unusual trouble is expected, and the normal random wilderness and dungeon encounters are all you have to worry about.
the reason why i'm interested in categorizing these is because it may be possible to define a struct (or object for you OO types) that encapsulates all the variables of a single part quest. then the reward(s) from one or more single part quests can be used as the prerequisite(s) for another single part quest, allowing one to string together multi-part quests that make sense.
it appears that with just a few basic types of single-part quests to work with, that there are just a few basic ways that these can be combined that make sense, IE the reward from one is the prerequisite of the next. This leads to a set of just a few "templates", "themes", "scripts", "multipart quest generator types", I dont know what you'd call them.
"multipart quest generator types" is probably the most accurate. so the basic idea is you have these multipart questgen types which use the various types of single-part quests to generate a multipart quest with missionflow that makes sense.
now if it was just easy to generate storyline context to go with the mission flow, I'd be set.
There's also 'achieve'/'reach'. Such as, reach level 15 or get 10 strength, or reach the top of a series of moving platforms, or reach a time-locked door that's closing slowly.
Though I guess 'achieve' could really be Move("Player", "Location") or Move("Player's Level", "Threshold")
As hinted at by the time-locked door, quests can be decorated with other requirements like time.
Another one is interacting with NPCs not for information, but to change their disposition or convince them to do or not do something. Technically, Move("NPC's emotions", "Desired state"). But if you abstract stuff too much, I guess "Kill monster" could be defined as Move("Monster's HP", "To zero").
achieve stat level is sort of unique. not quite the same as has_item_in_inventory. OTOH, they are both subsets of player_has(). player_has(10 dexterity) player has(sword of slaying). which in turn is a subset of someone_has(who,what).
reaching the top of moving platforms seems to be more of a goto location type thing.
reach door in time would be goto location with time limit.
changing NPC disposition: ooh! thats a good one! INFLUENCE. but influence is usually a means to an end. but at an atomic level it is a little quest unto its self. I need info from an NPC in Oblivion. But they don't like me. Bingo! Spawn new mini-quest. make this guy like you via influence, bribes, charm spells, etc. So yes influence is another valid action in games that model its effects (don't worry, mine does!). when figuring out different ways single part quests could be strung together, i found that many types of quest can be preceded by "perform a quest for someone before they will disclose the location of the main questor in a multipart quest" and even further: "perform a quest for someone before they will disclose the location of someone who knows the location of the questor". I know this sounds extreme and contrived, but in implementation its not unreasonable. this is what its like: while visiting the cave of a nearby band of friendly cavemen, doing some trading, etc, they tell you stories of a herd of huge animals said to guard a great treasure. this is the initial "quest encounter". so you decide to go after the animals and get that treasure. well, they want you to do something for them before they'll tell you where they heard about the animals (from another group of cavemen). so you do their quest, and they tell you where they heard about the animals. SO you go talk to THOSE cavemen, and they also want you to do a quest for them, before they'll tell you where the herd is. so you do that quest, then they tell you where the herd is, you go there, kill the herd, get the treasure. twists i've already played around with include another group is going after the animals as well, with both "you're ahead of them" and "they got a head start on you" versions, including the chance to encounter each other on the way to or from the herd location (and try to take the treasure if you or they got it already). influence would play a role here. if the caveman disclosing info happens to be your best buddy, odd are he wouldn't send you on a quest. more likely he'd grab his spear and say, "Ugg! Let's go!". downside to that is that its hard enough to generate long multipart quests that make sense, without letting the player essentially skip one part cause their "bro [friendly NPC] hooked them up" so to speak.
but you can see what this leads to:
with a template of quest1 (do something for 1st group) to get location of quest2 (do something for second group) to get location of quest3 (herd with treasure),
you start by deciding (somehow) that you'll be using this template and that quest3 is herd with treasure (a destroy quest).
then you can randomly choose what quests 1 and 2 are INCLUDING ANOTHER ENTIRE MULTIPART QUEST! perhaps using some different template and a different final quest such as transport. and the subquests of that multipart quest could in turn also be entire multipart quests.
infinite recursion.