diff --git a/courtroom.cpp b/courtroom.cpp index 2b72aad..f9259b7 100644 --- a/courtroom.cpp +++ b/courtroom.cpp @@ -1324,6 +1324,10 @@ void Courtroom::append_ic_text(QString p_text, QString p_name) ic_colour_stack.pop(); trick_check_pos++; } + else + { + ic_next_is_not_special = true; + } } // Grey inline colourisation. @@ -1340,6 +1344,10 @@ void Courtroom::append_ic_text(QString p_text, QString p_name) ic_colour_stack.pop(); trick_check_pos++; } + else + { + ic_next_is_not_special = true; + } } // Green inline colourisation. @@ -1523,6 +1531,9 @@ void Courtroom::chat_tick() // Due to our new text speed system, we always need to stop the timer now. chat_tick_timer->stop(); + // Stops blips from playing when we have a formatting option. + bool formatting_char = false; + if (tick_pos >= f_message.size()) { text_state = 2; @@ -1569,6 +1580,7 @@ void Courtroom::chat_tick() else if (f_character == "\\" and !next_character_is_not_special) { next_character_is_not_special = true; + formatting_char = true; } // Text speed modifier. @@ -1576,10 +1588,12 @@ void Courtroom::chat_tick() { // ++, because it INCREASES delay! current_display_speed++; + formatting_char = true; } else if (f_character == "}" and !next_character_is_not_special) { current_display_speed--; + formatting_char = true; } // Orange inline colourisation. @@ -1600,6 +1614,7 @@ void Courtroom::chat_tick() { inline_colour_stack.push(INLINE_ORANGE); } + formatting_char = true; } // Blue inline colourisation. @@ -1616,6 +1631,11 @@ void Courtroom::chat_tick() inline_colour_stack.pop(); ui_vp_message->insertHtml("" + f_character + ""); } + else + { + next_character_is_not_special = true; + tick_pos--; + } } // Grey inline colourisation. @@ -1632,6 +1652,11 @@ void Courtroom::chat_tick() inline_colour_stack.pop(); ui_vp_message->insertHtml("" + f_character + ""); } + else + { + next_character_is_not_special = true; + tick_pos--; + } } // Green inline colourisation. @@ -1642,15 +1667,18 @@ void Courtroom::chat_tick() if (inline_colour_stack.top() == INLINE_GREEN) { inline_colour_stack.pop(); + formatting_char = true; } else { inline_colour_stack.push(INLINE_GREEN); + formatting_char = true; } } else { inline_colour_stack.push(INLINE_GREEN); + formatting_char = true; } } @@ -1702,7 +1730,7 @@ void Courtroom::chat_tick() if (f_message.at(tick_pos) != ' ' || blank_blip) { - if (blip_pos % blip_rate == 0) + if (blip_pos % blip_rate == 0 && !formatting_char) { blip_pos = 0; blip_player->blip_tick(); @@ -1725,7 +1753,16 @@ void Courtroom::chat_tick() current_display_speed = 6; } - chat_tick_timer->start(message_display_speed[current_display_speed]); + // If we had a formatting char, we shouldn't wait so long again, as it won't appear! + if (formatting_char) + { + chat_tick_timer->start(1); + } + else + { + chat_tick_timer->start(message_display_speed[current_display_speed]); + } + } }