Actually not impossibly hard to do. You will need to work with loads of variables, as you already found out yourself, you will need to add checks against tehse variables in your code to see if some announcement has become invalid, i.e. your passengeronfire=true.
Also you'd need to check against the current room of the player if you wanna use that information to direct playback as well. I would not put too much work into the logic to "only play when no other sound is playing". Just give it a channel with low piority and you should be fine. If you hear character footsteps while the announcement is playing i'd think it only adds to the realism. In the end the work depends a bit on how many announcements and variables you use, but with like 20 of them i still think you could be done in an hour or 2, most work will just be writing down all if....then conditions for all variables.
Mixed bitrates are no problem for AGS and while i already learned from khris that the image size does not affect game size i believe that the ogg files do matter.
Also you'd need to check against the current room of the player if you wanna use that information to direct playback as well. I would not put too much work into the logic to "only play when no other sound is playing". Just give it a channel with low piority and you should be fine. If you hear character footsteps while the announcement is playing i'd think it only adds to the realism. In the end the work depends a bit on how many announcements and variables you use, but with like 20 of them i still think you could be done in an hour or 2, most work will just be writing down all if....then conditions for all variables.
Mixed bitrates are no problem for AGS and while i already learned from khris that the image size does not affect game size i believe that the ogg files do matter.