[Edit by neko] The following was split from
http://hydlaa.com/smf/index.php?topic=4606.0 per request of the poster. [/edit]
* Ralleyon casts Resurrect on the thread
This was the first one I found, so it gets where I want to add my ideas in. So... a lot of thing can still be improved, and this Journal part, on the client side I find a very neeat idea. Both for organizing things, and being able to do it in character, and keeping track of one's actions.
As it stands now, we can do that server side, bit we all know how well it goes when the server crashes. For the client, I'm sure the saving time can be tweaked and used in a much better way. Being able to cast that Journal into a book would be even more interesting, but let's not blend in with other wishes too much.
Now, I also wish for another tipe of Journal, this time in the server side - quests. What I mean is, I want
journalizing. Let me explain a bit... Right now the quest system altough has a lot to be improved on the NPC-player communication part, has very solid foundations, and with proper wording, quests can be solvable and fun to do. But sometimes they get all messed up, NPC's don't keep track of individual actions, when someone finished a quest, in which stage it is, several ways to do it and so on.
What we need is something more than a quest script, we need to keep track of various steps somehow. I know there is one such system in place, but there is room for improvement. Yes, this also involves auto-notes for quests, but we all know how much we need them if we don't want to write in those quest notes, which I seldom use, to tell you the truth because I can't copy/paste information there anyway so I have to open a document OOCly and put all I receive in my log that is relevant to the quest in there. We need to start changing that badly.
Here's my suggestion (which springs from the way Morrowind handled this sort of stuff):
Use a global quest identifier TrTef for example to define Trasok's tefusang teeth and a number after it to represent the various stages, thus changing the
quests and
quest_scripts tables in the database accordingly. Of course, some code has to be changed to adapt this too...
questmanager.cpp to be precise. This Stage part is what the journalising is all about and which can be interrogated for every player and see what he has accomplished, also rendering the quest repetability under more control than as it stands now.
Addition to the
quests table (rough sketch):
e.g.
Identifier | Value | Stage
TrTef | "Tefusang Teeth" | 0 -> this representing the title always
TrTef | "Trasok asked you | 10
to bring him 2
tefusang teeth"
TrTef | "Now that you got | 20
the teeth, you
decide to go back
to get a reward.
TrTef | "Trasok gave you 20 | 100 -> always signalling the end of a quest
trias as reward but
you notice he is kinder
towards you now.
Intermediary values, or other values > 100 can be a convention for alternate courses of events which one can take, but that can be controlled from the quest script (as it is now), the convestion simply being in accordance to the script.
Addition to
Quest_scripts table:
Where we had once: "complete zzz_quest step 2" and "require completion of zzz_quest step 2" we can use more advanced techniques which are known globally via their identifier and stage from the
quests table, by adding some keywords which refer to that table.
quest script bla bla........
You got a quest.
Journal TrTef 0.......................
Discussion with NPC what you have to do
Journal TrTef 10........................
You have 2 teeth, need to give them back to Trasok
Journal TrTef 20---------------------------------------------------------------------------------------------------
and so on....
For the
Characters table we also need something where to signal all of these things repectively how they relate to one character. So, I'd suggest adding two additional fields (on top of the existing ones, yes I know it's huge) named quests_identifier and quests_stage in which to store the progress for every character individually. How that can be done in an efficient way, I'll leave up to the devs... I'll admit I'm having trouble with offering a valid solution for this part of the puzzle too.
Anyway, all in all this is pretty much what I would add and what I believe would be a definite improvement for the quest system. Please review this idea and if you understood what I meant by all of this, comment on it and tell me if its feasible. If it's still too quirky, I'll try to be more explicit and ellaborate on some more parts, this was written in a hurry.
For players reading this, vote for the idea if you like it

/Later edit:
On a closer look in the CVS I saw that the last problem about character quests and their tracking is already partially solved,
character_quests table would only need minor tweaking. (and of course, questmanager.cpp)