- Defend the base: keep the base from being captured or destroyed for Y minutes.
failure if has(enemy,base) or ! exists(base). success if time_is(deadline).
- Escort quest: keep the npc from dying before they reach the end of their gauntlet
- Gauntlet: survive in extra-hard mode for Y minutes or until the end of a physical level.
success if at(player,end of level) or is_time(deadline). "extra hard mode" might be a modifier, or simply reflected by the difficulty level of opponents encountered.
- Timed test: accomplish a goal while avoiding running out of the Y minutes on your timer.
success if (condition), failure if is_time(deadline).
- Enforced avoidance: consume a potion or be the target of a spell that transforms you such that you are incapable of doing one of your normal actions for Y minutes; this can't be failed unless you die or unless it's combined with another goal you have to accomplish to reverse the transformation.
consume potion is a use action. not quite sure how "be target of spell or effect" would be classified. might be a new action: be guinea pig.
- Moral/factional avoidance: you can't gain advance with faction A if you have a black mark on your record from doing something related to faction B. You must clear your record or repudiate B to begin/resume advancing with A.
what you have to do to fix things would be the action here, i believe. I accidentally kill a mage's guild member while on a mission for the assasin's guild, thereby getting suspended from the mage's guild. now i have to find 20 dragon's tongue and 20 redwort flowers to be readmitted. a straight up has(player,20 redwort and 20 dragon's tongue) quest.
while looking over the types of quests, the following came to mind:
who = subject
what = action
- Avoidance of the "cheap" way - you must build Z without using any of a list of the easiest/cheapest resources, and only use their more expensive substitutes.
make action with modifiers. has(player,Z). modifiers: can't use A, can't use B, can't use C.
success: has(player,z) + failure: use(player,a) + failure: use(player,b) + failure: use(player,c)
- And as mentioned, complete a battle without using X ability, taking Y length of time, or taking Z damage
success: ! exist(badguys) + failure: use(player,X) + failure: time_is(deadline) + failure: has(player, Z amount of damage)
this stuff is starting to almost look like a little quest programming language!
a wargame i have in alpha right now has a built-in mission editor, including a conditions editor. filling in the conditions for a mission in it is sort of like writing a little program.
there are statements: success if ...
and syntax: success|failure condition+mods [AND]
when its time to check conditions, the code applies the checks listed, sort of like an emulator running a script.
just occurred to me that a time window is a compound condition. failure if before time t1 + failure if after time t2, IE:
failure: ! time_is(t1) AND "primary condition is true" + failure: time_is(t2)
"primary condition is true" could be most anything: has(player,item to be stolen), etc.
so a time window can be handled by two time_is() condition checks, one ANDed with the primary mission conditions (such as fedex 10 rat tails).
need to keep an eye out for compound stuff that appears to be single stuff at first glance.
Edited by Norman Barrows, 18 February 2013 - 11:43 PM.