Properly remember which active alerts were already voiced.
Added NULL-pointer safety check
void
MK_VIII::VoicePlayer::play (Voice *_voice, unsigned int flags)
{
+ if (!_voice)
+ return;
if (test_bits(flags, PLAY_NOW) || ! voice || voice->element->silence)
{
if (voice)
mk->voice_player.play(mk_voice(bank_angle_pause_bank_angle));
}
- // set new state
-
- old_alerts = voice_alerts;
+ // remember all alerts voiced so far...
+ old_alerts |= voice_alerts;
+ // ... forget those no longer active
+ old_alerts &= alerts;
repeated_alerts = 0;
}