OK, to be a bit more constructive, here's an idea for how a scripted journal could actually work - at least for the Quests that have a questcard.
Since each Quest would need a unique identity, it would be simplest to just use the number of the Questcard for that.
It would take a bit of an effort on the player's side, to find the number of the quest they got stuck on from a long list, but from the player's point of view that would still be relatively easy.
It would however also take a lot of research to ferret out all the correct flags from the various script files and a lot of scripting to set up the scripts, but at least it is doable.
Step 1
We'd make an object called Quest Journal, which the player can get in the Questor's Office.
The journal itself would be similar for all players, but it has a number of scripts placed on it to check for the correct questflag of whoever is using it, and provide some guidance based on that.
The command 'look journal' would provide the following info:
This journal contains a list of all the Questcards.
First you need to find the number of the quest you are looking for.
Since there are over 100 Questcards, the journal has 7 pages,
and there are 15 quests on each page.
Type 'look Index' to view the Quest numbers on each page.
Type 'look #' (for instance 'look 4') to view the Quests on each page.
*
To find out your status on a certain Quest, you need to first HOLD the Journal.
Then you have to SAY the number of the Quest.
(for instance type 'SAY 5' to check your status on The Enchanted Frogs).
The command 'look index' would give the following list:
INDEX
Page 1. Card 1-15
Page 2. Card 16-30
Page 3. Card 31-45
Page 4. Card 46-60
Page 5. Card 61-75
Page 6. Card 76-90
Page 7. Card 91-105
Then 'look 1' would produce the following result:
1. Wanted Poster I
2. Wanted Poster II
3. Cyrene's lover
4. Robber Baron's prisoners
5. The enchanted frogs
6. Thetis' lover
7. The Viking Quarrel
8. The Lady in the Lake
9. Nimue's quest
10. The Tower of Rapunzel
11. The bereaved woman
12. Chief Arapahoola's Snake Elixir
13. The Secret Sword
14. Llano Estacado
15. Exoliath's armor
They would still have to look at the actual questcards to get the detailed info on each Quest.
Step 2.
Now we need to make a script - or several scripts - for the journal, based on the questflags that the quests set on the players.
Many of the easier quests just provide some limited stats item, and don't set any questflag. They are fully repeatable, meaning that you can do them over and over again, without any restrictions at all.
And this is also the info you'd get from saying the number of these quests.
However, if they also provide tokens and/or exp, they have a flag check to give a smaller reward after the first time.
The script would check for that flag, and dependant on the result you'd get the following info:
'You haven't completed this Quest yet.' or
'You've already done this quest, but you can repeat it for a smaller reward.'
Yet others have a check on the item you get, to stop people who haven't done the quest from using the item. But otherwise they are similar to the former category. You can repeat them to get the item, but any exp and or tokens will be a lot less after the first time, so the message should be similar to the above category.
This gives us the beginning of the script:
*
if %arg%|= 1
if !%actor.varexists(curly)%
%send% %actor% You haven't completed this Quest yet.
else
%send% %actor% You have already done this Quest, but you can repeat it for a smaller reward.
endif
elseif %arg%|= 2
if !%actor.varexists(donegan)%
%send% %actor% You haven't completed this Quest yet.
else
%send% %actor% You have already done this Quest, but you can repeat it for a smaller reward.
endif
elseif (%arg%|= 3) || (%arg%|= 5) || (%arg%|= 6) || (%arg%|= 7)|| (%arg%|= 8 )
%send% %actor% You can do this Quest as many times as you like.
etc. etc.
*
Then we get to the first problem:
Some of the Questcards have more than one Quest on them.
That is the case with for instance 5. The enchanted frogs and 14. Llano Estacado.
(Llano even has 6 different quests, but 3 of them, 'The legend of the deamon' and the two 'Wanted Posters' have their own questcards).
Anyhow, this problem could be handled by adding subheadings for each Quest on the Questbook, (and possibly also on the actual Questcard, which means additional build work). So the entry for Card 14 in the Questbook would then look like this:
14. Llano Estacado
- 14A The dying man
- 14B The lost medicine pouch
- 14C Jeff and Joe
In this case you'd need to say 14A to get info on that first quest.
Also the script on the journal will obviously be very long, which means that we have to work either with function scripts, or make several different journals, possibly both.
But then we come to the real problem; The multi-step quests. Usually, but not always, these use the same flags throughout the quest.
Let's take Quest 103 'Rebellion against Arthur' as an example. It is a multi step quest that you initiate by talking to the Captain of the Guards. This sets the flag rebellion, which then will increase or decrease dependant on which mobs you talk to.
Dependent on the number on the flag, the mobs will also give different responses.
When the rebellion number reaches 10 it is replaced by the flag reformers, which in turn increases one step for each task you perform.
When the reformers flag reaches 8, you are presented a choice to help either the Rebels or the Captain, by giving an item to either of them. Choosing the Captain sets the flag reformers 9, while choosing the Rebels sets reformers 10, and in each case you get one last task to perform.
When the last task is done, reformers flag is replaced by the flag done_reformers, which allows you to redo the quest for a smaller reward.
So here is what the script for this single quest would have to look like:
if %arg%|=103
if %actor.varexists(done_reformers)%
%send% %actor% You have already completed this quest, but you can repeat it for a smaller reward.
endif
if %actor.varexists(rebellion)%
%send% %actor% You need to talk to more more people to collect more info about the rebellion.
endif
if %actor.varexists(reformers)%
if %actor.reformers% == 1
%send% %actor% You should go and talk to the Silk Merchant about an assignment.
elseif %actor.reformers% == 2
%send% %actor% The Silk Merchant is expecting you to deliver an item to incriminate Morgan le Fay.
elseif %actor.reformers% == 3
%send% %actor% The Silk Merchant is expecting you to bring Nicolo Orsini to him.
%send% %actor% If you've lost the letter, talk to the merchant who'll give you a new one.
* and so on, until we get to reformers 10
endif
endif
endif
And this is just one of a large number of multi-step quests...
One more thing:
Quite often the questflags of a complex Quest get messed up beyond all help. This is sometimes caused by buggy scripts, but more often by players trying to take shortcuts. Another common reason is forgetting where they were in the quest, and starting it from scratch again, which then results in double flags, that make the questmobs refuse to interact with them.
Usually the only feasible way to fix this is to just remove all the flags for that particular quest from the player file. It means they have to start all over from the beginning again, but that's usually not a big problem.
However, rather than having to ask an imm to assist with this - (which is also frustrating for the imm, who has to sift through several pages of flags to find the right one) - we could make the script do it.
The command would be 'reset #', (for instance 'reset 103'), which would make the script check for all but the end flag and then remove them.
Using the Rebellion against Arthur example, the script would be like this:
if (%speech.contains(reset)% && %speech.contains(103)%
if %actor.varexists(rebellion)%
rdelete rebellion %actor.id%
endif
if %actor.varexists(reformers)%
rdelete reformers %actor.id%
endif
endif