Could make a 'binary' string of em.
Say, 4 quests. Accept 1st, 3rd and 4th.
1011
Complete first
2011
Fail third
2031
Advantages of this, is that all your quest log is stored in one place, in one variable. First disadvantage, is you have to be very exact in your foreplanning, otherwise you're going to have to fix a lot of code later on to little benefit. Second, and more involved, is that later down the track when you want to check if Quest 2 was accepted, denied, finished or failed, you'll have to do a little.wizardry
%questvariableTemp = %questvariable (to keep your questvariable clean and unworked, you'll need another variable with the same value)
If %QuestvariableTemp >500 %questvariableTemp := %questvariableTemp -1000
If %QuestvariableTemp >500 %questvariableTemp := %questvariableTemp -1000
If %QuestvariableTemp >500 %questvariableTemp := %questvariableTemp -1000
If %QuestvariableTemp >500 %questvariableTemp := %questvariableTemp -1000
This'll check if the first digit is > 500, so there's something in the first quest line (which we don't want to deal with), and reduce it until it is zero. Then, you can put in your If QuestvariableTemp >400 then Blah, if >300 then Second blah. Etc.
Precisely what you're saving in headaches and time and cohesion and readability and good practice, I'm not sure, but it's A method of doing such. I'm sure others know far cleaner, but simply using a bunch of variables isn't a bad thing. You can, as hopefully has been demonstrated, make 1, 2, 3, 4 mean 4 very different things, and thus save a lot of information in it, for a simple digit.
And there's nothing stopping you resetting a variable once it's completed a function for you, and using it to track something else. In my own works, I've made Temp1, Temp2 to Temp5, just for such things that'll only be tracked for a short time. End of every chapter, reset em all to zero, and they're good to go.