In short: If there was an old variable used, which is not on the current triggers, then there is no way that the old variable can be used to show you have completed a quest.
To make this clearer, suppose builder A wrote the following script:
if !%actor.varexists(completed)%
set completed %actor.id%
remote %actor.id%
endif
to show that the player has completed a quest. Much later, upon realizing this variable is poorly named, the builder changes it.
if !%actor.varexists(this_zone_completed)%
set this_zone_completed %actor.id%
remote %actor.id%
endif
Surprisingly, the builder never does
* There used to be a variable called completed here. It's been replaced by this_zone_completed
if !%actor.varexists(this_zone_completed)%
set this_zone_completed %actor.id%
remote %actor.id%
endif
When anyone looks at the current script, and does a quest_journal type thing to show the quest has been completed, it will always be similar to this form
if !%actor.varexists(this_zone_completed)%
%echo% %actor% has not completed this quest!
else
%echo% %actor% has completed this quest!
endif
If, unfortunately, you had the variable completed, then the script will say you have not completed the quest. Furthermore, there is no human way of finding out what the "extra" variables you have correspond to. The solution would be to redo the quest.
On the bright side, because the variables have been changed, you can probably do the quest again for the full reward.
What's the point of the Quest Journal then?
1. Change of variables / future knowledge.
Suppose a quest had 5 variables. var1 var2 var3 var4 var5
Halfway through the quest, someone decides to change them to newvar1 newvar2 newvar3 newvar4 newvar5
You get stuck, because future scripts are looking for newvari instead of vari, which you have.
Or, suppose you did something stupid / had future knowledge.
Imagine a quest arc where you talk to Molly, who tells you to talk to Kvetch, who then tells you to talk to Rynald. Rynald asks you to give a bone to Bart's dog.
Suppose to check whether the quest has been complete, the builder write a trigger to check if you have talked to all 3 people, and given the bone.
However, instead of talking to Molly, you decided to give a bone to the dog because you like dogs. Unfortunately, there's a script which prevents you from talking to Molly, Kvetch, and Rynald once you've given the bone.
So to summarize - you've only given the bone, but not talked to the three imms. But since there's a script preventing you from talking to them after having given the bone, and you needed to talk to all three of them to complete the quest, the quest is bugged.
The questjournal allows anyone to reset the questflags. Suppose an imm made a mistake in the flags? Well, he can ask everyone to RESET their flags, and so start again. The quest journal (on the backend at least), allows that flexibility and rebuilding of quest flags in an array to account for this. Suppose you did something out of sequence? Well, you can RESET the flags and start again.
2. Prevent spam
Suppose a quest had 10 variables altogether, and maybe they are called: bone1 bone2 ... bone10
If you vstat a player, you get this:
bone1: 1
bone2: 1
bone3: 1
bone4: 1
bone5: 1
bone6: 1
bone7: 1
bone8: 1
bone9: 1
bone10: 1
Wouldn't it be nicer if you just had:
dino_bone: bone1yes bone2yes bone3yes bone4yes bone5yes bone6yes bone7yes bone8yes bone9yes bone10yes
or better still
dino_bone_list: yes yes yes no no yes yes yes no yes
Furthermore, instead of
if %actor.varexists(bone5)%
%send% %actor% You have bone number 5
else
%send% %actor% You don't have this bone!
%send% %actor% But I'll give you the variable
set bone5 1
remote bone5 %actor.id%
endif
you get
set dino_bone_list %actor.dino_bone_list%
if %dino_bone.wordat(5)% == yes
%send% %actor% You have bone number 5
else
%send% %actor% You don't have this bone!
%send% %actor% But I'll give you the variable
replace_word yes 5 dino_bone_list
remote dino_bone_list %actor.id%
endif
It's only one line longer (because of set dino_bone %actor.dino_bone%). But think of the spam reduction...