1. Be able to check players for which quest they have gotten,done,turned in, and havent got to mark NPCs with an appropiate mark to inform players.
2. Have a quest log so players can see all their quest (which means they can have more than one at a time)
3. Check when killing things whether its part of the quest or not.
And here is what im doing
//actually quest
obj/Tasks
Bar_Drunk1
name="A rukus in the bar"
level=2
info="That man at the bar is always here and has been harassing the customers and running away business please get him out of here"
Exp=35
Reward=5
source=/mob/tasks/Bartender
For the NPC I check if they have that object if they dont i give it to them.
For the completing it i define a variable for the object for different stages and check for which stage its on.
As for marking the NPCs that is where i think there can be a different way cause right now im keeping all the quest in the users quest list even after they complete it (just dont show it to them anymore). Its a pretty in depth system but my current one takes up a lot of code doing checks all the time when things are killed. And its really long.