Scripts for Start/Stop PDAs?

Just wondering what the best way to make multiple PDA messages would be. I plan on making a bunch of PDA items that will be scattered around the map for the player to find. Each PDA will be a persistent inventory item (persistent so that it can be read multiple times) and using it from the inventory would run a script. The script would put up a HUDmessage with text and an image (and maybe play an audio log or something).
My current thoughts on how I'd like them to behave are:
Each inventory item will run the same script but will have in its DECORATE code an ACS Execute instruction of some sort (probably ACS_ExecuteAlways will be required) plus a parameter to make sure it plays the correct message (different messages separated inside the script with "if" statements).
So far, so good and I can do all of that. However, I'm tying myself in knots trying to sort out what happens if a second PDA messages is played when one is already running or if the player wants to interrupt the currently playing message (preferably by using the inventory item again (i.e. each PDA can start and stop its own message)).
So, what I'm maybe thinking is:
an overall variable for "a message is currently playing" which, if true will do something like override the HUDmessage on screen with a blank one. This script would do this check first.
A second message specific variable used to check if the message associated wit the used PDA is running. If false, the variable is set and the message gets played. If true... um, nothing happens because the messages have already been cancelled by the earlier over all check. So, maybe that variable is not needed after all.
However, the above strikes me as a bit clumsy and possibly prone to breaking. I'm sure that eventually I could hack something together that would work but can anyone suggest some better logic (and even provide some code)?
And, lastly, I don't know if I will use sound files but, if I do, what's the best way to start/stop a sound being played by ACS? I'm thinking LocalAmbientsound for the playing (simple enough) but I'm not sure how to stop a sound that was started using that. To be fair, audiologs are unlikely but I'd like to know anyway.
I've mentioned DECORATE and ACS above and those would be my preferences but I'm not averse to ZScript. It's just that nothing else in the project is currently using ZScript.
My current thoughts on how I'd like them to behave are:
Each inventory item will run the same script but will have in its DECORATE code an ACS Execute instruction of some sort (probably ACS_ExecuteAlways will be required) plus a parameter to make sure it plays the correct message (different messages separated inside the script with "if" statements).
So far, so good and I can do all of that. However, I'm tying myself in knots trying to sort out what happens if a second PDA messages is played when one is already running or if the player wants to interrupt the currently playing message (preferably by using the inventory item again (i.e. each PDA can start and stop its own message)).
So, what I'm maybe thinking is:
an overall variable for "a message is currently playing" which, if true will do something like override the HUDmessage on screen with a blank one. This script would do this check first.
A second message specific variable used to check if the message associated wit the used PDA is running. If false, the variable is set and the message gets played. If true... um, nothing happens because the messages have already been cancelled by the earlier over all check. So, maybe that variable is not needed after all.
However, the above strikes me as a bit clumsy and possibly prone to breaking. I'm sure that eventually I could hack something together that would work but can anyone suggest some better logic (and even provide some code)?
And, lastly, I don't know if I will use sound files but, if I do, what's the best way to start/stop a sound being played by ACS? I'm thinking LocalAmbientsound for the playing (simple enough) but I'm not sure how to stop a sound that was started using that. To be fair, audiologs are unlikely but I'd like to know anyway.
I've mentioned DECORATE and ACS above and those would be my preferences but I'm not averse to ZScript. It's just that nothing else in the project is currently using ZScript.