Sunday, May 31, 2009

21 Things Evidyon Should Watch Out For


Well, I needed to use a number so it might not be 21...but the guy reviewing Darkfall Online, a game I read about today and thought "crap! they did what we're doing" sure made me feel good about our project.  It looks like they went to release, several years late, with problems that we've already solved or are in the process of solving:


As one commenter put it, "I thought I'd stumbled into a re-re-review of Age of Conan."  Ouch.



Steps remaining to implement quests:
- Generate action-trigger UserEvent on alt-click
- on action-trigger UserEvent, check until one succeeds:
nonself actor - if valid:
if npc: send quest trigger to server
if player/monster: show name instantly
self actor - if valid, pull up stats menu
location: ??? if location has items, examine the stack???
send location quest-trigger to server
- on server, on for quest trigger :
validate distance to target
if actor, get actor's list of quest triggers.  break after the first trigger that activates.
if not actor or not triggered, check location's trigger(s)


Quest trigger flags:
preconditions:
currently on quest (quest)
not on quest (quest)
then action:
check end quest (quest)
OR give quest (quest) -- must check to be sure client isn't on too many quests...

NPCs can each give 2 quests and end 2 quests.  They don't necessairily have to end the same quests that they begin--this allows for delivery quests.  They are given 2 quest commentary slots where they can say something when a player is on a quest (to give hints, etc.  again it doesn't have to be the same quests that they give or end!)

For giving quests:
- it is implied that a player cannot be given a quest that they already undertook
- a player can only be on one quest that an NPC gives at a time (the npc won't give you a second quest)
- if an NPC gives 1 or more quests but the triggering avatar doesn't qualify for any of them, the NPC has a phrase for both if the actor could qualify for one in the future, and one for if the actor could never qualify
- if a triggering avatar qualifies for a quest, but is on too many quests already the NPC says something
- the NPC has a phrase for if an avatar qualifies for a quest.  when spoken, the server will cause the quest description box to pop up on the client's screen.  this will also display the quest (and the ability to cancel the quest) in the player's UI
- NPC has text both for avatar accepting and declining a quest.


For ending quests:
when triggered, if the NPC will cause the client's quest-state to be checked:
- if the time limit has not been reached:
- if the client succeeded, say something and do success action
- if the quest's time-limit has been exceeded:
- if client failed by time limit, say the time failure phrase & do failure action
- if the client succeeded at the quest, say something & do success-over-limit action
- if quest not terminated (has not succeeded or failed):
- if client failed by an irreversible reason, say the reason text and do failure action.  ex. irreversible reasons are are lost competition, too many deaths, changing map and too many pks
- if still not terminated, check the in-progress quest commentary

For in-progress quest commentary:
- if the player is on a referenced quest and trigger-clicks the npc, the npc says something to them about the quest based on how much time is left:  just getting  started (<5>, in-progress (> 5 minutes, <50%)half-expired (>50% expired but more than 5 minutes left), nearly out of time (<5>

Locations can end quests too, but without all of the fancy phrases.  This is to be used for ending quests at a location.  For instance, you are given a quest and teleported into a shrine where reaching the end will give you 1 point added to strength.  If you change maps (i.e. leave the shrine) the quest is failed.  The quest has no requirements to complete it, so anything that triggers termination of the quest results in a success.  For this, each location just has the index of a quest for which it examines termination and performs the quest-configured success/failure actions.


Phew!  Welp, now I feel like I have something better specified to implement.




Do be doo...8 pm and it's time for the Simpsons
Also, SCORE quests can be compiled & triggered XD

3 comments:

Joe M. said...

Sounds real nice! I wonder, though, if 2 quests to give and 2 quests to end will be enough? e.g., I can easily imagine a 3-part series of n00b kill quests from the town guard. And that's without accounting for any quests that may start elsewhere and end with him (e.g., "Go to the the town of X and seek out guardmaster G--he will instruct you further"). I guess what that points to is that there need to be more end-points than start-points for each NPC so that that NPC can end all of his own quests and still have room to end one or two others. But for the sake of symmetry, maybe make it 4/4?

Joe M. said...

(forgot to check "subscribe" box)

Karl said...

Two may not be enough, but it's easily configurable. Since you can have quests that depend on other quests, we can have the progression go from once NPC to another.