Merge pull request #117 from AttorneyOnline/2.7

2.7
This commit is contained in:
stonedDiscord 2020-02-23 13:53:44 +01:00 committed by GitHub
commit 149f04dc84
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
37 changed files with 2490 additions and 1327 deletions

View File

@ -3,7 +3,7 @@ QT += core gui widgets network
TARGET = Attorney_Online TARGET = Attorney_Online
TEMPLATE = app TEMPLATE = app
VERSION = 2.6.2.0 VERSION = 2.7.2.0
INCLUDEPATH += $$PWD/include INCLUDEPATH += $$PWD/include
DESTDIR = $$PWD/bin DESTDIR = $$PWD/bin
@ -34,6 +34,10 @@ contains(DEFINES, QTAUDIO) {
QT += multimedia QT += multimedia
} }
contains(CONFIG, qml_debug) {
DEFINES += DEBUG_NETWORK
}
macx:LIBS += -framework CoreFoundation -framework Foundation -framework CoreServices macx:LIBS += -framework CoreFoundation -framework Foundation -framework CoreServices

View File

@ -100,6 +100,14 @@ If you begin a message with `~~` (two tildes), the two tildes are removed and th
If two players are in the same position and select each other's characters using the in-game pair list (or with `/pair [id]`), they will appear alongside each other. You can set the offset of your character using the provided spinbox (or with `/offset [percentage]`). If two players are in the same position and select each other's characters using the in-game pair list (or with `/pair [id]`), they will appear alongside each other. You can set the offset of your character using the provided spinbox (or with `/offset [percentage]`).
### Screenflash (2.6+)
Placing a `$` (dollar symbol) at any point in the message will cause a white flash to appear at that point, and the symbol will disappear. You can do this multiple times in one message and stack it up with any other markup symbol. The flash will be silent, unlike the equivalent button.
### Screenshake (2.6+)
Placing an `@` (at symbol) at any point in the message will cause the screen to shake at that point, and the symbol will disappear. You can do this multiple times in one message and stack it up with any other markup symbol (including the screenflash).
### Non-interrupting preanimations (2.6+) ### Non-interrupting preanimations (2.6+)
When checked, this will force text to immediately begin displaying without waiting for the preanimation to finish. When checked, this will force text to immediately begin displaying without waiting for the preanimation to finish.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -104,12 +104,12 @@ pos_dropdown = 200, 470, 80, 20
pre = 5, 490, 80, 21 pre = 5, 490, 80, 21
; Flip button ; Flip button
flip = 104, 490, 51, 21 flip = 104, 490, 61, 21
; Guard button ; Guard button
guard = 200, 580, 61, 21 guard = 200, 580, 100, 21
pre_no_interrupt = 200, 490, 80, 21 pre_no_interrupt = 200, 490, 85, 21
; Penalty bars and judge's buttons for penalizing. Other than the bars, these ; Penalty bars and judge's buttons for penalizing. Other than the bars, these
; ONLY show up on a character with /pos jud ; ONLY show up on a character with /pos jud
@ -125,13 +125,16 @@ witness_testimony = 290, 470, 85, 42
cross_examination = 290, 515, 85, 42 cross_examination = 290, 515, 85, 42
; Buttons to change character/Reload theme/Call Mod ; Buttons to change character/Reload theme/Call Mod
change_character = 5, 610, 120, 23 change_character = 5, 610, 110, 23
reload_theme = 5, 637, 94, 23 reload_theme = 5, 637, 110, 23
call_mod = 104, 637, 64, 23 call_mod = 120, 637, 90, 23
; Mute button ; Mute button
mute_button = 150, 515, 42, 42 mute_button = 150, 515, 42, 42
; Screenshake
screenshake = 51, 515, 42, 42
; Where the Mute list pops up when you click Mute ; Where the Mute list pops up when you click Mute
mute_list = 280, 469, 210, 198 mute_list = 280, 469, 210, 198
@ -195,11 +198,11 @@ ao2_ic_chat_name = 200, 534, 78, 23
; This is useful if you suspect someone is impersonating others, for example, ; This is useful if you suspect someone is impersonating others, for example,
; and they are using this in combination with ini-swapping to 'duplicate' a ; and they are using this in combination with ini-swapping to 'duplicate' a
; character. ; character.
showname_enable = 200, 510, 80, 21 showname_enable = 200, 510, 85, 21
; A simple button that opens up the settings menu. ; A simple button that opens up the settings menu.
; Equivalent to typing /settings in the OOC chat. ; Equivalent to typing /settings in the OOC chat.
settings = 130, 610, 60, 23 settings = 120, 610, 90, 23
; The character search text input in the character selecton screen. ; The character search text input in the character selecton screen.
; The moment you enter some text, it immediately starts filtering. ; The moment you enter some text, it immediately starts filtering.
@ -242,4 +245,4 @@ area_locked_color = 165, 43, 43
; "casing_button" is an interface to help you announce a case (you have to be ; "casing_button" is an interface to help you announce a case (you have to be
; a CM first to be able to announce cases). ; a CM first to be able to announce cases).
casing = 200, 560, 80, 21 casing = 200, 560, 80, 21
casing_button = 173, 637, 60, 23 casing_button = 215, 637, 50, 23

View File

@ -3,6 +3,7 @@ witness_testimony = sfx-testimony2.wav
cross_examination = sfx-testimony.wav cross_examination = sfx-testimony.wav
evidence_present = sfx-evidenceshoop.wav evidence_present = sfx-evidenceshoop.wav
word_call = sfx-gaspen-yeah!.wav word_call = sfx-gaspen-yeah!.wav
mod_call = sfx-gallery.wav mod_call = adminhelp.ogg
not_guilty = sfx-notguilty.wav not_guilty = sfx-notguilty.wav
guilty = sfx-guilty.wav guilty = sfx-guilty.wav
case_call = case_announced.ogg

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@ -27,6 +27,11 @@
#include <QAudioDeviceInfo> #include <QAudioDeviceInfo>
#endif #endif
#include <QtConcurrent/QtConcurrent>
#include <QThread>
#include <QThreadPool>
#include <QFuture>
class NetworkManager; class NetworkManager;
class Lobby; class Lobby;
class Courtroom; class Courtroom;
@ -78,6 +83,7 @@ public:
bool arup_enabled = false; bool arup_enabled = false;
bool casing_alerts_enabled = false; bool casing_alerts_enabled = false;
bool modcall_reason_enabled = false; bool modcall_reason_enabled = false;
bool looping_sfx_support_enabled = false;
///////////////loading info/////////////////// ///////////////loading info///////////////////
@ -93,6 +99,7 @@ public:
int loaded_evidence = 0; int loaded_evidence = 0;
int music_list_size = 0; int music_list_size = 0;
int loaded_music = 0; int loaded_music = 0;
int area_count = 0;
bool courtroom_loaded = false; bool courtroom_loaded = false;
@ -150,6 +157,12 @@ public:
//Returns true if blank blips is enabled in config.ini and false otherwise //Returns true if blank blips is enabled in config.ini and false otherwise
bool get_blank_blip(); bool get_blank_blip();
//Returns true if looping sound effects are enabled in the config.ini
bool get_looping_sfx();
//Returns true if kill music on object is enabled in the config.ini
bool get_objectmusic();
//Returns the value of default_music in config.ini //Returns the value of default_music in config.ini
int get_default_music(); int get_default_music();
@ -163,6 +176,10 @@ public:
// from the config.ini. // from the config.ini.
bool is_discord_enabled(); bool is_discord_enabled();
// Returns the value of whether shaking and flashing should be enabled.
// from the config.ini.
bool is_shakeandflash_enabled();
// Returns the value of the maximum amount of lines the IC chatlog // Returns the value of the maximum amount of lines the IC chatlog
// may contain, from config.ini. // may contain, from config.ini.
int get_max_log_size(); int get_max_log_size();
@ -267,6 +284,18 @@ public:
//Returns the sfx of p_char's p_emote //Returns the sfx of p_char's p_emote
QString get_sfx_name(QString p_char, int p_emote); QString get_sfx_name(QString p_char, int p_emote);
//Returns if an emote loops it's SFX
QString get_sfx_looping(QString p_char, int p_emote);
//Returns if an emote has a frame specific SFX for it
QString get_frame_sfx_name(QString p_char, QString p_emote, int n_frame);
//Returns if an emote has a frame specific SFX for it
QString get_realization_frame(QString p_char, QString p_emote, int n_frame);
//Returns if an emote has a frame specific SFX for it
QString get_screenshake_frame(QString p_char, QString p_emote, int n_frame);
//Not in use //Not in use
int get_sfx_delay(QString p_char, int p_emote); int get_sfx_delay(QString p_char, int p_emote);
@ -304,13 +333,16 @@ public:
// Same for CM. // Same for CM.
bool get_casing_cm_enabled(); bool get_casing_cm_enabled();
// Same for witnesses.
bool get_casing_wit_enabled();
// Get the message for the CM for casing alerts. // Get the message for the CM for casing alerts.
QString get_casing_can_host_cases(); QString get_casing_can_host_cases();
private: private:
const int RELEASE = 2; const int RELEASE = 2;
const int MAJOR_VERSION = 6; const int MAJOR_VERSION = 7;
const int MINOR_VERSION = 2; const int MINOR_VERSION = 0;
QString current_theme = "default"; QString current_theme = "default";

View File

@ -36,6 +36,7 @@ private:
QCheckBox *ui_judge_needed; QCheckBox *ui_judge_needed;
QCheckBox *ui_juror_needed; QCheckBox *ui_juror_needed;
QCheckBox *ui_steno_needed; QCheckBox *ui_steno_needed;
QCheckBox *ui_witness_needed;
public slots: public slots:
void ok_pressed(); void ok_pressed();

View File

@ -6,9 +6,12 @@
#include <QTimer> #include <QTimer>
#include <QDebug> #include <QDebug>
#include <QImageReader> #include <QImageReader>
#include <QPainter>
#include "include/aosfxplayer.h"
#include "include/courtroom.h"
class AOApplication; class AOApplication;
class AOCharMovie : public QLabel class AOCharMovie : public QLabel
{ {
Q_OBJECT Q_OBJECT
@ -22,36 +25,52 @@ public:
void play_idle(QString p_char, QString p_emote); void play_idle(QString p_char, QString p_emote);
void set_flipped(bool p_flipped) {m_flipped = p_flipped;} void set_flipped(bool p_flipped) {m_flipped = p_flipped;}
void LoadImageWithStupidMethodForFlipSupport(QImage image);
void stop(); void stop();
void move(int ax, int ay); void move(int ax, int ay);
void combo_resize(int w, int h); void combo_resize(int w, int h);
void play_frame_sfx();
void sfx_two_network_boogaloo();
void screenshake_two_network_boogaloo();
void realization_two_network_boogaloo();
AOSfxPlayer *frame_specific_sfx_player;
Courtroom *mycourtroom;
QString frame_sfx_hellstring = "";
QString frame_screenshake_hellstring = "";
QString frame_realization_hellstring = "";
bool use_networked_framehell = false;
private: private:
AOApplication *ao_app; AOApplication *ao_app;
QMovie *m_movie; QMovie *m_movie;
QVector<QImage> movie_frames; QVector<QImage> movie_frames;
QTimer *preanim_timer; QTimer *preanim_timer;
QTimer *ticker;
QString last_path;
QString current_emote;
QString current_char;
const int time_mod = 62; const int time_mod = 62;
// These are the X and Y values before they are fixed based on the sprite's width. // These are the X and Y values before they are fixed based on the sprite's width.
int x = 0; int x = 0;
int y = 0; int y = 0;
int default_w;
int default_h;
bool m_flipped = false; bool m_flipped = false;
bool play_once = true; bool play_once = true;
bool apng = false;
signals: signals:
void done(); void done();
private slots: private slots:
void frame_change(int n_frame);
void timer_done(); void timer_done();
void movie_ticker();
}; };
#endif // AOCHARMOVIE_H #endif // AOCHARMOVIE_H

View File

@ -6,31 +6,42 @@
#elif defined(QTAUDIO) #elif defined(QTAUDIO)
#include <QMediaPlayer> #include <QMediaPlayer>
#endif #endif
#include "aoapplication.h" #include "aoapplication.h"
#include <QWidget> #include <QWidget>
#include <string.h> #include <string.h>
#include <QDebug> #include <QDebug>
#include <QTimer>
#include <QObject>
#if defined(BASSAUDIO) #if defined(BASSAUDIO)
class AOMusicPlayer class AOMusicPlayer : public QObject
{ {
Q_OBJECT
public: public:
AOMusicPlayer(QWidget *parent, AOApplication *p_ao_app); AOMusicPlayer(QWidget *parent, AOApplication *p_ao_app);
~AOMusicPlayer(); virtual ~AOMusicPlayer();
void play(QString p_song); void play(QString p_song);
void set_volume(int p_value); void set_volume(int p_value);
void kill_loop();
QString get_path();
bool enable_looping = true;
private: private:
QWidget *m_parent; QWidget *m_parent;
AOApplication *ao_app; AOApplication *ao_app;
int m_volume = 0; int m_volume = 0;
QString f_path;
HSTREAM m_stream; HSTREAM m_stream;
}; };
#elif defined(QTAUDIO) #elif defined(QTAUDIO)
class AOMusicPlayer class AOMusicPlayer : public QObject
{ {
public: public:
AOMusicPlayer(QWidget *parent, AOApplication *p_ao_app); AOMusicPlayer(QWidget *parent, AOApplication *p_ao_app);
@ -39,26 +50,39 @@ public:
void play(QString p_song); void play(QString p_song);
void set_volume(int p_value); void set_volume(int p_value);
void kill_loop();
QString get_path();
bool enable_looping = true;
private: private:
QWidget *m_parent;
AOApplication *ao_app;
QMediaPlayer m_player; QMediaPlayer m_player;
int m_volume = 0;
QString f_path;
};
#else
class AOMusicPlayer : public QObject
{
public:
AOMusicPlayer(QWidget *parent, AOApplication *p_ao_app);
~AOMusicPlayer();
void play(QString p_song);
void set_volume(int p_value);
void kill_loop();
QString get_path();
bool enable_looping = true;
private:
QWidget *m_parent; QWidget *m_parent;
AOApplication *ao_app; AOApplication *ao_app;
int m_volume = 0; int m_volume = 0;
}; QString f_path;
#else
class AOMusicPlayer
{
public:
AOMusicPlayer(QWidget *parent, AOApplication *p_ao_app);
~AOMusicPlayer();
void play(QString p_song);
void set_volume(int p_value);
private:
QWidget *m_parent;
AOApplication *ao_app;
}; };
#endif #endif

View File

@ -61,6 +61,8 @@ private:
QLineEdit *ui_ms_textbox; QLineEdit *ui_ms_textbox;
QLabel *ui_discord_lbl; QLabel *ui_discord_lbl;
QCheckBox *ui_discord_cb; QCheckBox *ui_discord_cb;
QLabel *ui_epilepsy_lbl;
QCheckBox *ui_epilepsy_cb;
QLabel *ui_language_label; QLabel *ui_language_label;
QComboBox *ui_language_combobox; QComboBox *ui_language_combobox;
@ -88,6 +90,10 @@ private:
QLabel *ui_bliprate_lbl; QLabel *ui_bliprate_lbl;
QCheckBox *ui_blank_blips_cb; QCheckBox *ui_blank_blips_cb;
QLabel *ui_blank_blips_lbl; QLabel *ui_blank_blips_lbl;
QLabel *ui_loopsfx_lbl;
QCheckBox *ui_loopsfx_cb;
QLabel *ui_objectmusic_lbl;
QCheckBox *ui_objectmusic_cb;
QDialogButtonBox *ui_settings_buttons; QDialogButtonBox *ui_settings_buttons;
QWidget *ui_casing_tab; QWidget *ui_casing_tab;
@ -108,6 +114,8 @@ private:
QCheckBox *ui_casing_steno_cb; QCheckBox *ui_casing_steno_cb;
QLabel *ui_casing_cm_lbl; QLabel *ui_casing_cm_lbl;
QCheckBox *ui_casing_cm_cb; QCheckBox *ui_casing_cm_cb;
QLabel *ui_casing_wit_lbl;
QCheckBox *ui_casing_wit_cb;
QLabel *ui_casing_cm_cases_lbl; QLabel *ui_casing_cm_cases_lbl;
QLineEdit *ui_casing_cm_cases_textbox; QLineEdit *ui_casing_cm_cases_textbox;

View File

@ -12,20 +12,24 @@
#include <QWidget> #include <QWidget>
#include <string.h> #include <string.h>
#include <QDebug> #include <QDebug>
#include <QTimer>
class AOSfxPlayer class AOSfxPlayer : public QObject
{ {
Q_OBJECT
public: public:
AOSfxPlayer(QWidget *parent, AOApplication *p_ao_app); AOSfxPlayer(QWidget *parent, AOApplication *p_ao_app);
void play(QString p_sfx, QString p_char = "", QString shout = ""); void play(QString p_sfx, QString p_char = "", QString shout = "");
void stop(); void stop();
void set_volume(qreal p_volume); void set_volume(qreal p_volume);
void setLooping(bool is_looping);
private: private:
QWidget *m_parent; QWidget *m_parent;
AOApplication *ao_app; AOApplication *ao_app;
qreal m_volume = 0; qreal m_volume = 0;
bool looping_sfx = false;
void set_volume_internal(qreal p_volume); void set_volume_internal(qreal p_volume);

View File

@ -26,6 +26,7 @@
#include "datatypes.h" #include "datatypes.h"
#include "debug_functions.h" #include "debug_functions.h"
#include "chatlogpiece.h" #include "chatlogpiece.h"
#include "aocharmovie.h"
#include <QMainWindow> #include <QMainWindow>
#include <QLineEdit> #include <QLineEdit>
@ -35,11 +36,12 @@
#include <QComboBox> #include <QComboBox>
#include <QSlider> #include <QSlider>
#include <QVector> #include <QVector>
#include <QSignalMapper>
#include <QCloseEvent> #include <QCloseEvent>
#include <QMap> #include <QMap>
#include <QTextBrowser> #include <QTextBrowser>
#include <QSpinBox> #include <QSpinBox>
#include <QMovie>
#include <QDebug> #include <QDebug>
#include <QScrollBar> #include <QScrollBar>
#include <QRegExp> #include <QRegExp>
@ -48,12 +50,23 @@
#include <QFont> #include <QFont>
#include <QInputDialog> #include <QInputDialog>
#include <QFileDialog> #include <QFileDialog>
#include <QWidget>
#include <QPropertyAnimation>
#include <QTransform>
#include <QParallelAnimationGroup>
#include <QtConcurrent/QtConcurrent>
#include <QtConcurrent/QtConcurrentRun>
#include <QThread>
#include <QThreadPool>
#include <QFuture>
#include <QMetaObject>
#include <QLayout>
#include <QTextBoundaryFinder> #include <QTextBoundaryFinder>
#include <stack> #include <stack>
class AOApplication; class AOApplication;
class AOCharMovie;
class Courtroom : public QMainWindow class Courtroom : public QMainWindow
{ {
Q_OBJECT Q_OBJECT
@ -64,15 +77,32 @@ public:
void append_evidence(evi_type p_evi){evidence_list.append(p_evi);} void append_evidence(evi_type p_evi){evidence_list.append(p_evi);}
void append_music(QString f_music){music_list.append(f_music);} void append_music(QString f_music){music_list.append(f_music);}
void append_area(QString f_area){area_list.append(f_area);} void append_area(QString f_area){area_list.append(f_area);}
void handle_failed_login();
void fix_last_area() QString threading_sfx = "";
QString threading_shake = "";
QString threading_flash = "";
QString threading_prefix = "";
//cid and this may differ in cases of ini-editing
QString current_char = "";
int current_emote = 0;
AOApplication *ao_app;
//abstract widget to hold char buttons
QWidget *ui_char_buttons;
QVector<char_type> char_list;
QVector<evi_type> evidence_list;
QVector<QString> music_list;
QVector<QString> area_list;
QSignalMapper *char_button_mapper;
QVector<AOCharButton*> ui_char_button_list;
QVector<AOCharButton*> ui_char_button_list_filtered;
QLineEdit *ui_char_search;
QCheckBox *ui_char_passworded;
QCheckBox *ui_char_taken;
void mt_pre_framegetter(int frameNumber);
void mt_framegetter(int frameNumber);
void reset_music_list()
{ {
if (area_list.size() > 0) music_list.clear();
{
QString malplaced = area_list.last();
area_list.removeLast();
append_music(malplaced);
}
} }
void arup_append(int players, QString status, QString cm, QString locked) void arup_append(int players, QString status, QString cm, QString locked)
@ -121,7 +151,7 @@ public:
//reads theme inis and sets size and pos based on the identifier //reads theme inis and sets size and pos based on the identifier
void set_size_and_pos(QWidget *p_widget, QString p_identifier); void set_size_and_pos(QWidget *p_widget, QString p_identifier);
QPoint get_theme_pos(QString p_identifier);
//sets status as taken on character with cid n_char and places proper shading on charselect //sets status as taken on character with cid n_char and places proper shading on charselect
void set_taken(int n_char, bool p_taken); void set_taken(int n_char, bool p_taken);
@ -168,6 +198,9 @@ public:
//properly sets up some varibles: resets user state //properly sets up some varibles: resets user state
void enter_courtroom(int p_cid); void enter_courtroom(int p_cid);
// set the character using an ID
void set_character(int char_id);
//helper function that populates ui_music_list with the contents of music_list //helper function that populates ui_music_list with the contents of music_list
void list_music(); void list_music();
void list_areas(); void list_areas();
@ -208,14 +241,15 @@ public:
//Toggles the judge buttons, whether they should appear or not. //Toggles the judge buttons, whether they should appear or not.
void toggle_judge_buttons(bool is_on); void toggle_judge_buttons(bool is_on);
void announce_case(QString title, bool def, bool pro, bool jud, bool jur, bool steno); void announce_case(QString title, bool def, bool pro, bool jud, bool jur, bool steno, bool wit);
void check_connection_received(); void check_connection_received();
void doScreenShake();
void doRealization();
~Courtroom(); ~Courtroom();
private: private:
AOApplication *ao_app;
int m_courtroom_width = 714; int m_courtroom_width = 714;
int m_courtroom_height = 668; int m_courtroom_height = 668;
@ -228,7 +262,10 @@ private:
bool first_message_sent = false; bool first_message_sent = false;
int maximumMessages = 0; int maximumMessages = 0;
QPropertyAnimation *screenshake_animation;
QPropertyAnimation *chatbox_screenshake_animation;
QParallelAnimationGroup *screenshake_group;
QMovie *frame_emote_checker;
// This is for inline message-colouring. // This is for inline message-colouring.
enum INLINE_COLOURS { enum INLINE_COLOURS {
@ -247,7 +284,7 @@ private:
bool message_is_centered = false; bool message_is_centered = false;
int current_display_speed = 3; int current_display_speed = 3;
int message_display_speed[7] = {30, 40, 50, 60, 75, 100, 120}; int message_display_speed[7] = {10, 20, 30, 40, 50, 60, 75};
// This is for checking if the character should start talking again // This is for checking if the character should start talking again
// when an inline blue text ends. // when an inline blue text ends.
@ -263,11 +300,6 @@ private:
// The offset this user has given if they want to appear alongside someone. // The offset this user has given if they want to appear alongside someone.
int offset_with_pair = 0; int offset_with_pair = 0;
QVector<char_type> char_list;
QVector<evi_type> evidence_list;
QVector<QString> music_list;
QVector<QString> area_list;
QVector<int> arup_players; QVector<int> arup_players;
QVector<QString> arup_statuses; QVector<QString> arup_statuses;
QVector<QString> arup_cms; QVector<QString> arup_cms;
@ -317,7 +349,7 @@ private:
//every time point in char.inis times this equals the final time //every time point in char.inis times this equals the final time
const int time_mod = 40; const int time_mod = 40;
static const int chatmessage_size = 23; static const int chatmessage_size = 28;
QString m_chatmessage[chatmessage_size]; QString m_chatmessage[chatmessage_size];
bool chatmessage_is_empty = false; bool chatmessage_is_empty = false;
@ -346,11 +378,10 @@ private:
//character id, which index of the char_list the player is //character id, which index of the char_list the player is
int m_cid = -1; int m_cid = -1;
//cid and this may differ in cases of ini-editing
QString current_char = "";
int objection_state = 0; int objection_state = 0;
int realization_state = 0; int realization_state = 0;
int screenshake_state = 0;
int text_color = 0; int text_color = 0;
bool is_presenting_evidence = false; bool is_presenting_evidence = false;
@ -366,7 +397,6 @@ private:
const int button_height = 60; const int button_height = 60;
int current_emote_page = 0; int current_emote_page = 0;
int current_emote = 0;
int emote_columns = 5; int emote_columns = 5;
int emote_rows = 2; int emote_rows = 2;
int max_emotes_on_page = 10; int max_emotes_on_page = 10;
@ -389,6 +419,9 @@ private:
AOMusicPlayer *music_player; AOMusicPlayer *music_player;
AOSfxPlayer *sfx_player; AOSfxPlayer *sfx_player;
AOSfxPlayer *misc_sfx_player;
AOSfxPlayer *frame_emote_sfx_player;
AOSfxPlayer *pair_frame_emote_sfx_player;
AOSfxPlayer *objection_player; AOSfxPlayer *objection_player;
AOBlipPlayer *blip_player; AOBlipPlayer *blip_player;
@ -477,6 +510,7 @@ private:
AOButton *ui_custom_objection; AOButton *ui_custom_objection;
AOButton *ui_realization; AOButton *ui_realization;
AOButton *ui_screenshake;
AOButton *ui_mute; AOButton *ui_mute;
AOButton *ui_defense_plus; AOButton *ui_defense_plus;
@ -513,11 +547,6 @@ private:
AOImage *ui_char_select_background; AOImage *ui_char_select_background;
//abstract widget to hold char buttons
QWidget *ui_char_buttons;
QVector<AOCharButton*> ui_char_button_list;
QVector<AOCharButton*> ui_char_button_list_filtered;
AOImage *ui_selector; AOImage *ui_selector;
AOButton *ui_back_to_lobby; AOButton *ui_back_to_lobby;
@ -529,14 +558,9 @@ private:
AOButton *ui_spectator; AOButton *ui_spectator;
QLineEdit *ui_char_search;
QCheckBox *ui_char_passworded;
QCheckBox *ui_char_taken;
void construct_char_select(); void construct_char_select();
void set_char_select(); void set_char_select();
void set_char_select_page(); void set_char_select_page();
void char_clicked(int n_char);
void put_button_in_place(int starting, int chars_on_this_page); void put_button_in_place(int starting, int chars_on_this_page);
void filter_character_list(); void filter_character_list();
@ -558,7 +582,7 @@ public slots:
void mod_called(QString p_ip); void mod_called(QString p_ip);
void case_called(QString msg, bool def, bool pro, bool jud, bool jur, bool steno); void case_called(QString msg, bool def, bool pro, bool jud, bool jur, bool steno, bool witness);
private slots: private slots:
void start_chat_ticking(); void start_chat_ticking();
@ -605,6 +629,7 @@ private slots:
void on_custom_objection_clicked(); void on_custom_objection_clicked();
void on_realization_clicked(); void on_realization_clicked();
void on_screenshake_clicked();
void on_mute_clicked(); void on_mute_clicked();
void on_pair_clicked(); void on_pair_clicked();
@ -657,13 +682,17 @@ private slots:
void on_spectator_clicked(); void on_spectator_clicked();
void char_clicked(int n_char);
void on_switch_area_music_clicked(); void on_switch_area_music_clicked();
void on_casing_clicked(); void on_casing_clicked();
void ping_server(); void ping_server();
#ifdef BASSAUDIO
void load_bass_opus_plugin(); void load_bass_opus_plugin();
#endif
}; };
#endif // COURTROOM_H #endif // COURTROOM_H

View File

@ -100,7 +100,12 @@ enum CHAT_MESSAGE
SELF_OFFSET, SELF_OFFSET,
OTHER_OFFSET, OTHER_OFFSET,
OTHER_FLIP, OTHER_FLIP,
NONINTERRUPTING_PRE NONINTERRUPTING_PRE,
LOOPING_SFX,
SCREENSHAKE,
FRAME_SCREENSHAKE,
FRAME_REALIZATION,
FRAME_SFX
}; };
enum COLOR enum COLOR

View File

@ -78,7 +78,8 @@ private:
QModelIndex last_model; QModelIndex last_model;
void set_size_and_pos(QWidget *p_widget, QString p_identifier); void set_size_and_pos(QWidget *p_widget, QString p_identifier);
public slots:
void lobbyThreadHandler(QString loadingText);
private slots: private slots:
void on_public_servers_clicked(); void on_public_servers_clicked();
void on_favorites_clicked(); void on_favorites_clicked();

View File

@ -27,67 +27,68 @@ Wir verwenden mehrere Master Server um Ausfälle zu verhindern, jedoch hat der C
Bitte prüfe deine Internetverbindung und Firewall, und versuche es erneut.</translation> Bitte prüfe deine Internetverbindung und Firewall, und versuche es erneut.</translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="106"/> <location filename="../../src/packet_distribution.cpp" line="135"/>
<source>Outdated version! Your version: %1 <source>Outdated version! Your version: %1
Please go to aceattorneyonline.com to update.</source> Please go to aceattorneyonline.com to update.</source>
<translation>Version zu alt! Deine Version: %1 <translation>Version zu alt! Deine Version: %1
Bitte besuche aceattorneyonline.com für ein Update.</translation> Bitte besuche aceattorneyonline.com für ein Update.</translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="114"/> <location filename="../../src/packet_distribution.cpp" line="143"/>
<source>You have been exiled from AO. <source>You have been exiled from AO.
Have a nice day.</source> Have a nice day.</source>
<translation>Du wurdest von AO befreit. <translation>Du wurdest von AO befreit.
Schönen Urlaub.</translation> Schönen Urlaub.</translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="249"/> <location filename="../../src/packet_distribution.cpp" line="283"/>
<source>Attorney Online 2</source> <source>Attorney Online 2</source>
<translation>Attorney Online 2</translation> <translation>Attorney Online 2</translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="275"/> <location filename="../../src/packet_distribution.cpp" line="309"/>
<source>Loading</source> <source>Loading</source>
<translation>Laden</translation> <translation>Laden</translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="363"/> <location filename="../../src/packet_distribution.cpp" line="397"/>
<source>Loading evidence: <source>Loading evidence:
%1/%2</source> %1/%2</source>
<translation>Lade Beweisstücke: <translation>Lade Beweisstücke:
%1/%2</translation> %1/%2</translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="395"/> <location filename="../../src/packet_distribution.cpp" line="429"/>
<location filename="../../src/packet_distribution.cpp" line="490"/> <location filename="../../src/packet_distribution.cpp" line="538"/>
<source>Loading music: <source>Loading music:
%1/%2</source> %1/%2</source>
<translation>Lade Musik: <translation>Lade Musik:
%1/%2</translation> %1/%2</translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="467"/> <location filename="../../src/packet_distribution.cpp" line="353"/>
<location filename="../../src/packet_distribution.cpp" line="501"/>
<source>Loading chars: <source>Loading chars:
%1/%2</source> %1/%2</source>
<translation>Lade Charaktere: <translation>Lade Charaktere:
%1/%2</translation> %1/%2</translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="642"/> <location filename="../../src/packet_distribution.cpp" line="692"/>
<source>You have been kicked from the server. <source>You have been kicked from the server.
Reason: %1</source> Reason: %1</source>
<translation>Du wurdest von diesem Server geschmissen. <translation>Du wurdest von diesem Server geschmissen.
Grund: %1</translation> Grund: %1</translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="651"/> <location filename="../../src/packet_distribution.cpp" line="701"/>
<source>You have been banned from the server. <source>You have been banned from the server.
Reason: %1</source> Reason: %1</source>
<translation>Du wurdest von diesem Server verbannt. <translation>Du wurdest von diesem Server verbannt.
Grund: %1</translation> Grund: %1</translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="659"/> <location filename="../../src/packet_distribution.cpp" line="709"/>
<source>You are banned on this server. <source>You are banned on this server.
Reason: %1</source> Reason: %1</source>
<translation>Du bist von diesem Server verbannt. <translation>Du bist von diesem Server verbannt.
@ -151,271 +152,316 @@ Grund: </translation>
<source>Stenographer needed</source> <source>Stenographer needed</source>
<translation>Stenograph benötigt</translation> <translation>Stenograph benötigt</translation>
</message> </message>
<message>
<location filename="../../src/aocaseannouncerdialog.cpp" line="58"/>
<source>Witness needed</source>
<translation>Zeuge benötigt</translation>
</message>
</context> </context>
<context> <context>
<name>AOOptionsDialog</name> <name>AOOptionsDialog</name>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="11"/> <location filename="../../src/aooptionsdialog.cpp" line="10"/>
<source>Settings</source> <source>Settings</source>
<translation>Einstellungen</translation> <translation>Einstellungen</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="40"/> <location filename="../../src/aooptionsdialog.cpp" line="39"/>
<source>Gameplay</source> <source>Gameplay</source>
<translation>Spiel</translation> <translation>Spiel</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="51"/> <location filename="../../src/aooptionsdialog.cpp" line="50"/>
<source>Theme:</source> <source>Theme:</source>
<translation>Theme:</translation> <translation>Theme:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="52"/> <location filename="../../src/aooptionsdialog.cpp" line="51"/>
<source>Sets the theme used in-game. If the new theme changes the lobby&apos;s look as well, you&apos;ll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it.</source> <source>Sets the theme used in-game. If the new theme changes the lobby&apos;s look as well, you&apos;ll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it.</source>
<translation>Setzt das Theme. Wenn das neue Theme auch das Aussehen der Lobby verändert, must du diese neu laden um die Änderungen zu sehen.</translation> <translation>Setzt das Theme. Wenn das neue Theme auch das Aussehen der Lobby verändert, must du diese neu laden um die Änderungen zu sehen.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="81"/> <location filename="../../src/aooptionsdialog.cpp" line="80"/>
<source>Log goes downwards:</source> <source>Log goes downwards:</source>
<translation>Verlauf geht nach unten:</translation> <translation>Verlauf geht nach unten:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="82"/> <location filename="../../src/aooptionsdialog.cpp" line="81"/>
<source>If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked.</source> <source>If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked.</source>
<translation>Wenn angehakt werden neue Nachrichten unten erscheinen (wie beim OOC). Das traditionelle (AO1) Verhalten wäre nicht angehakt.</translation> <translation>Wenn angehakt werden neue Nachrichten unten erscheinen (wie beim OOC). Das traditionelle (AO1) Verhalten wäre nicht angehakt.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="94"/> <location filename="../../src/aooptionsdialog.cpp" line="93"/>
<source>Log length:</source> <source>Log length:</source>
<translation>Länge:</translation> <translation>Länge:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="95"/> <location filename="../../src/aooptionsdialog.cpp" line="94"/>
<source>The amount of messages the IC chatlog will keep before deleting older messages. A value of 0 or below counts as &apos;infinite&apos;.</source> <source>The amount of messages the IC chatlog will keep before deleting older messages. A value of 0 or below counts as &apos;infinite&apos;.</source>
<translation>Die Menge an Nachrichten die aufgehoben werden bevor alte gelöscht werden. 0 bedeutet unendlich.</translation> <translation>Die Menge an Nachrichten die aufgehoben werden bevor alte gelöscht werden. 0 bedeutet unendlich.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="113"/> <location filename="../../src/aooptionsdialog.cpp" line="112"/>
<source>Default username:</source> <source>Default username:</source>
<translation>Standard Benutzername:</translation> <translation>Standard Benutzername:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="114"/> <location filename="../../src/aooptionsdialog.cpp" line="113"/>
<source>Your OOC name will be automatically set to this value when you join a server.</source> <source>Your OOC name will be automatically set to this value when you join a server.</source>
<translation>Dein OOC Name wird automatisch auf dies gesetzt.</translation> <translation>Dein OOC Name wird automatisch auf dies gesetzt.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="126"/> <location filename="../../src/aooptionsdialog.cpp" line="125"/>
<source>Custom shownames:</source> <source>Custom shownames:</source>
<translation>Eigener Anzeigename:</translation> <translation>Eigener Anzeigename:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="127"/> <location filename="../../src/aooptionsdialog.cpp" line="126"/>
<source>Gives the default value for the in-game &apos;Custom shownames&apos; tickbox, which in turn determines whether the client should display custom in-character names.</source> <source>Gives the default value for the in-game &apos;Custom shownames&apos; tickbox, which in turn determines whether the client should display custom in-character names.</source>
<translation>Standardwert für die Anzeigename Box, welche den In-Charakter Namen bestimmt.</translation> <translation>Standardwert für die Anzeigename Box, welche den In-Charakter Namen bestimmt.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="145"/> <location filename="../../src/aooptionsdialog.cpp" line="144"/>
<source>Backup MS:</source> <source>Backup MS:</source>
<translation>Rückfall MS:</translation> <translation>Rückfall MS:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="146"/> <location filename="../../src/aooptionsdialog.cpp" line="145"/>
<source>If the built-in server lookups fail, the game will try the address given here and use it as a backup master server address.</source> <source>If the built-in server lookups fail, the game will try the address given here and use it as a backup master server address.</source>
<translation>Wenn dereingebaute Master Server fehlschlägt, wird das Spiel diesen hier verwenden.</translation> <translation>Wenn dereingebaute Master Server fehlschlägt, wird das Spiel diesen hier verwenden.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="158"/> <location filename="../../src/aooptionsdialog.cpp" line="157"/>
<source>Discord:</source> <source>Discord:</source>
<translation>Discord:</translation> <translation>Discord:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="159"/> <location filename="../../src/aooptionsdialog.cpp" line="158"/>
<source>Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for.</source> <source>Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for.</source>
<translation>Erlaubt anderen auf Discord zu sehen auf welchem Server du spielst, welchen Charakter du spielst und wie lange.</translation> <translation>Erlaubt anderen auf Discord zu sehen auf welchem Server du spielst, welchen Charakter du spielst und wie lange.</translation>
</message> </message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="170"/>
<source>Allow Shake/Flash:</source>
<translation>Schütteln/Geistesblitz erlauben:</translation>
</message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="171"/> <location filename="../../src/aooptionsdialog.cpp" line="171"/>
<source>Allows screenshaking and flashing. Disable this if you have concerns or issues with photosensitivity and/or seizures.</source>
<translation>Erlaubt schütteln des Bildschirms und weiße Blitze. Deaktiviere dies falls du Bedenken wegen Photosensitivität hast.</translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="181"/>
<source>Language:</source> <source>Language:</source>
<translation>Sprache:</translation> <translation>Sprache:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="172"/> <location filename="../../src/aooptionsdialog.cpp" line="182"/>
<source>Sets the language if you don&apos;t want to use your system language.</source> <source>Sets the language if you don&apos;t want to use your system language.</source>
<translation>Setzte die Sprache falls du nicht die Systemsprache verwenden möchtest.</translation> <translation>Setzte die Sprache falls du nicht die Systemsprache verwenden möchtest.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="186"/> <location filename="../../src/aooptionsdialog.cpp" line="197"/>
<source>Callwords</source> <source>Callwords</source>
<translation>Alarmwörter</translation> <translation>Alarmwörter</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="211"/> <location filename="../../src/aooptionsdialog.cpp" line="222"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!&lt;br&gt;Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.&lt;/body&gt;&lt;/html&gt;</source> <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!&lt;br&gt;Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;Gib so viele Alarmwörter ein wie du möchtest. Groß/Kleinschreibung ist egal. Für jede Wort nur eine Zeile!&lt;br&gt;Bitte keine leere Zeile am Ende -- du bekommst sonst bei jeder Nachricht einen Alarm.&lt;/body&gt;&lt;/html&gt;</translation> <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;Gib so viele Alarmwörter ein wie du möchtest. Groß/Kleinschreibung ist egal. Für jede Wort nur eine Zeile!&lt;br&gt;Bitte keine leere Zeile am Ende -- du bekommst sonst bei jeder Nachricht einen Alarm.&lt;/body&gt;&lt;/html&gt;</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="217"/> <location filename="../../src/aooptionsdialog.cpp" line="228"/>
<source>Audio</source> <source>Audio</source>
<translation>Audio</translation> <translation>Audio</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="228"/> <location filename="../../src/aooptionsdialog.cpp" line="239"/>
<source>Audio device:</source> <source>Audio device:</source>
<translation>Audiogerät:</translation> <translation>Audiogerät:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="229"/> <location filename="../../src/aooptionsdialog.cpp" line="240"/>
<source>Sets the audio device for all sounds.</source> <source>Sets the audio device for all sounds.</source>
<translation>Setzt das Audiogerät für all Geräusche.</translation> <translation>Setzt das Audiogerät für all Geräusche.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="263"/> <location filename="../../src/aooptionsdialog.cpp" line="279"/>
<source>Music:</source> <source>Music:</source>
<translation>Musik:</translation> <translation>Musik:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="264"/> <location filename="../../src/aooptionsdialog.cpp" line="280"/>
<source>Sets the music&apos;s default volume.</source> <source>Sets the music&apos;s default volume.</source>
<translation>Setzt die Musiklautstärke.</translation> <translation>Setzt die Musiklautstärke.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="276"/> <location filename="../../src/aooptionsdialog.cpp" line="292"/>
<source>SFX:</source> <source>SFX:</source>
<translation>SFX:</translation> <translation>SFX:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="277"/> <location filename="../../src/aooptionsdialog.cpp" line="293"/>
<source>Sets the SFX&apos;s default volume. Interjections and actual sound effects count as &apos;SFX&apos;.</source> <source>Sets the SFX&apos;s default volume. Interjections and actual sound effects count as &apos;SFX&apos;.</source>
<translation>Setzt die Lautstärke der Soundeffekte wie Einsprüche und die Geräusche der Charaktere.</translation> <translation>Setzt die Lautstärke der Soundeffekte wie Einsprüche und die Geräusche der Charaktere.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="290"/> <location filename="../../src/aooptionsdialog.cpp" line="306"/>
<source>Blips:</source> <source>Blips:</source>
<translation>Blips:</translation> <translation>Blips:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="291"/> <location filename="../../src/aooptionsdialog.cpp" line="307"/>
<source>Sets the volume of the blips, the talking sound effects.</source> <source>Sets the volume of the blips, the talking sound effects.</source>
<translation>Setzt die Lautstärke der Blips, das ist das Geräusch das die Charaktere beim Reden machen.</translation> <translation>Setzt die Lautstärke der Blips, das ist das Geräusch das die Charaktere beim Reden machen.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="309"/> <location filename="../../src/aooptionsdialog.cpp" line="325"/>
<source>Blip rate:</source> <source>Blip rate:</source>
<translation>Bliprate:</translation> <translation>Bliprate:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="310"/> <location filename="../../src/aooptionsdialog.cpp" line="326"/>
<source>Sets the delay between playing the blip sounds.</source> <source>Sets the delay between playing the blip sounds.</source>
<translation>Setzt die Pause zwischen einzelnen Blips.</translation> <translation>Setzt die Pause zwischen einzelnen Blips.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="321"/> <location filename="../../src/aooptionsdialog.cpp" line="337"/>
<source>Blank blips:</source> <source>Blank blips:</source>
<translation>Leere Blips:</translation> <translation>Leere Blips:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="322"/> <location filename="../../src/aooptionsdialog.cpp" line="338"/>
<source>If true, the game will play a blip sound even when a space is &apos;being said&apos;.</source> <source>If true, the game will play a blip sound even when a space is &apos;being said&apos;.</source>
<translation>Wenn angehakt wird das Spiel auch bei einem Leerzeichen einen Blip machen.</translation> <translation>Wenn angehakt wird das Spiel auch bei einem Leerzeichen einen Blip machen.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="334"/> <location filename="../../src/aooptionsdialog.cpp" line="349"/>
<source>Enable Looping SFX:</source>
<translation>Wiederholende Soundeffekte:</translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="350"/>
<source>If true, the game will allow looping sound effects to play on preanimations.</source>
<translation>Wenn aktiviert, werden wiederholende Soundeffekte bei den Voranimationen erlaubt.</translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="361"/>
<source>Kill Music On Objection:</source>
<translation>Stoppe Musik bei Einspruch:</translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="362"/>
<source>If true, the game will stop music when someone objects, like in the actual games.</source>
<translation>Hält die Musik an wenn jemand &quot;Einspruch&quot; ruft, wie im echten Spiel.</translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="373"/>
<source>Casing</source> <source>Casing</source>
<translation>Fälle</translation> <translation>Fälle</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="348"/> <location filename="../../src/aooptionsdialog.cpp" line="387"/>
<source>This server supports case alerts.</source> <source>This server supports case alerts.</source>
<translation>Dieser Server unterstützt Fallalarme.</translation> <translation>Dieser Server unterstützt Fallalarme.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="350"/> <location filename="../../src/aooptionsdialog.cpp" line="389"/>
<source>This server does not support case alerts.</source> <source>This server does not support case alerts.</source>
<translation>Dieser Server unterstützt Fallalarme nicht.</translation> <translation>Dieser Server unterstützt Fallalarme nicht.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="351"/> <location filename="../../src/aooptionsdialog.cpp" line="390"/>
<source>Pretty self-explanatory.</source> <source>Pretty self-explanatory.</source>
<translation>Eigentlich selbsterklärend.</translation> <translation>Eigentlich selbsterklärend.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="358"/> <location filename="../../src/aooptionsdialog.cpp" line="397"/>
<source>Casing:</source> <source>Casing:</source>
<translation>Fälle:</translation> <translation>Fälle:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="359"/> <location filename="../../src/aooptionsdialog.cpp" line="398"/>
<source>If checked, you will get alerts about case announcements.</source> <source>If checked, you will get alerts about case announcements.</source>
<translation>Wenn angehakt wirst du benachrichtigt wenn ein Fall angekündigt wird.</translation> <translation>Wenn angehakt wirst du benachrichtigt wenn ein Fall angekündigt wird.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="372"/> <location filename="../../src/aooptionsdialog.cpp" line="411"/>
<source>Defense:</source> <source>Defense:</source>
<translation>Verteidigung:</translation> <translation>Verteidigung:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="373"/> <location filename="../../src/aooptionsdialog.cpp" line="412"/>
<source>If checked, you will get alerts about case announcements if a defense spot is open.</source> <source>If checked, you will get alerts about case announcements if a defense spot is open.</source>
<translation>Wenn angehakt wirst du benachrichtigt wenn ein Verteidiger benötigt wird.</translation> <translation>Wenn angehakt wirst du benachrichtigt wenn ein Verteidiger benötigt wird.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="386"/> <location filename="../../src/aooptionsdialog.cpp" line="425"/>
<source>Prosecution:</source> <source>Prosecution:</source>
<translation>Kläger:</translation> <translation>Kläger:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="387"/> <location filename="../../src/aooptionsdialog.cpp" line="426"/>
<source>If checked, you will get alerts about case announcements if a prosecutor spot is open.</source> <source>If checked, you will get alerts about case announcements if a prosecutor spot is open.</source>
<translation>Wenn angehakt wirst du benachrichtigt wenn ein Kläger benötigt wird.</translation> <translation>Wenn angehakt wirst du benachrichtigt wenn ein Kläger benötigt wird.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="400"/> <location filename="../../src/aooptionsdialog.cpp" line="439"/>
<source>Judge:</source> <source>Judge:</source>
<translation>Richter:</translation> <translation>Richter:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="401"/> <location filename="../../src/aooptionsdialog.cpp" line="440"/>
<source>If checked, you will get alerts about case announcements if the judge spot is open.</source> <source>If checked, you will get alerts about case announcements if the judge spot is open.</source>
<translation>Wenn angehakt wirst du benachrichtigt wenn ein Richter benötigt wird.</translation> <translation>Wenn angehakt wirst du benachrichtigt wenn ein Richter benötigt wird.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="414"/> <location filename="../../src/aooptionsdialog.cpp" line="453"/>
<source>Juror:</source> <source>Juror:</source>
<translation>Jury:</translation> <translation>Jury:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="415"/> <location filename="../../src/aooptionsdialog.cpp" line="454"/>
<source>If checked, you will get alerts about case announcements if a juror spot is open.</source> <source>If checked, you will get alerts about case announcements if a juror spot is open.</source>
<translation>Wenn angehakt wirst du benachrichtigt wenn eine Jury benötigt wird.</translation> <translation>Wenn angehakt wirst du benachrichtigt wenn eine Jury benötigt wird.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="428"/> <location filename="../../src/aooptionsdialog.cpp" line="467"/>
<source>Stenographer:</source> <source>Stenographer:</source>
<translation>Stenograph:</translation> <translation>Stenograph:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="429"/> <location filename="../../src/aooptionsdialog.cpp" line="468"/>
<source>If checked, you will get alerts about case announcements if a stenographer spot is open.</source> <source>If checked, you will get alerts about case announcements if a stenographer spot is open.</source>
<translation>Wenn angehakt wirst du benachrichtigt wenn ein Stenograph benötigt wird.</translation> <translation>Wenn angehakt wirst du benachrichtigt wenn ein Stenograph benötigt wird.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="442"/> <location filename="../../src/aooptionsdialog.cpp" line="481"/>
<source>CM:</source> <source>CM:</source>
<translation>CM:</translation> <translation>CM:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="443"/> <location filename="../../src/aooptionsdialog.cpp" line="482"/>
<source>If checked, you will appear amongst the potential CMs on the server.</source> <source>If checked, you will appear amongst the potential CMs on the server.</source>
<translation>Wenn angehakt wirst du als potentielle CM angezeigt.</translation> <translation>Wenn angehakt wirst du als potentielle CM angezeigt.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="456"/> <location filename="../../src/aooptionsdialog.cpp" line="493"/>
<source>Witness:</source>
<translation>Zeuge:</translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="494"/>
<source>If checked, you will appear amongst the potential witnesses on the server.</source>
<translation>Wenn angehakt wirst du als potentielle Zeuge angezeigt.</translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="507"/>
<source>Hosting cases:</source> <source>Hosting cases:</source>
<translation>Fallleitung:</translation> <translation>Fallleitung:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="457"/> <location filename="../../src/aooptionsdialog.cpp" line="508"/>
<source>If you&apos;re a CM, enter what cases you are willing to host.</source> <source>If you&apos;re a CM, enter what cases you are willing to host.</source>
<translation>Wenn du CM bist, gib ein welche Fälle du spielen möchtest.</translation> <translation>Wenn du CM bist, gib ein welche Fälle du spielen möchtest.</translation>
</message> </message>
@ -423,36 +469,35 @@ Grund: </translation>
<context> <context>
<name>Courtroom</name> <name>Courtroom</name>
<message> <message>
<location filename="../../src/charselect.cpp" line="21"/> <location filename="../../src/charselect.cpp" line="74"/>
<source>Password</source> <source>Password</source>
<translation>Passwort</translation> <translation>Passwort</translation>
</message> </message>
<message> <message>
<location filename="../../src/charselect.cpp" line="27"/> <location filename="../../src/charselect.cpp" line="80"/>
<source>Spectator</source> <source>Spectator</source>
<translation>Zuschauer</translation> <translation>Zuschauer</translation>
</message> </message>
<message> <message>
<location filename="../../src/charselect.cpp" line="30"/> <location filename="../../src/charselect.cpp" line="83"/>
<location filename="../../src/courtroom.cpp" line="138"/> <location filename="../../src/courtroom.cpp" line="164"/>
<source>Search</source> <source>Search</source>
<translation>Suche</translation> <translation>Suche</translation>
</message> </message>
<message> <message>
<location filename="../../src/charselect.cpp" line="35"/> <location filename="../../src/charselect.cpp" line="88"/>
<source>Passworded</source> <source>Passworded</source>
<translation>Gesperrt</translation> <translation>Gesperrt</translation>
</message> </message>
<message> <message>
<location filename="../../src/charselect.cpp" line="39"/> <location filename="../../src/charselect.cpp" line="92"/>
<source>Taken</source> <source>Taken</source>
<translation>Benutzt</translation> <translation>Benutzt</translation>
</message> </message>
<message> <message>
<location filename="../../src/charselect.cpp" line="217"/>
<source>Generating chars: <source>Generating chars:
%1/%2</source> %1/%2</source>
<translation>Generiere Charaktere: <translation type="vanished">Generiere Charaktere:
%1/%2</translation> %1/%2</translation>
</message> </message>
<message> <message>
@ -462,176 +507,182 @@ Grund: </translation>
</translation> </translation>
</message> </message>
<message> <message>
<location filename="../../src/charselect.cpp" line="182"/>
<source>Could not find %1</source> <source>Could not find %1</source>
<translation type="vanished">Konnte %1 nicht finden.</translation> <translation>Konnte %1 nicht finden.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="116"/> <location filename="../../src/courtroom.cpp" line="142"/>
<source>Showname</source> <source>Showname</source>
<translation>Anzeigename</translation> <translation>Anzeigename</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="120"/> <location filename="../../src/courtroom.cpp" line="146"/>
<source>Message</source> <source>Message</source>
<translation>Nachricht</translation> <translation>Nachricht</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="130"/> <location filename="../../src/courtroom.cpp" line="156"/>
<source>Name</source> <source>Name</source>
<translation>Name</translation> <translation>Name</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="183"/> <location filename="../../src/courtroom.cpp" line="209"/>
<source>Pre</source> <source>Pre</source>
<translation>Vor</translation> <translation>Vor</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="186"/> <location filename="../../src/courtroom.cpp" line="212"/>
<source>Flip</source> <source>Flip</source>
<translation>Spiegeln</translation> <translation>Spiegeln</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="190"/>
<source>Guard</source> <source>Guard</source>
<translation>Wache</translation> <translation type="vanished">Wache</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="195"/> <location filename="../../src/courtroom.cpp" line="217"/>
<location filename="../../src/courtroom.cpp" line="608"/> <source>Disable Modcalls</source>
<translation>Deaktiviere Moderatorenrufe</translation>
</message>
<message>
<location filename="../../src/courtroom.cpp" line="223"/>
<location filename="../../src/courtroom.cpp" line="637"/>
<source>Casing</source> <source>Casing</source>
<translation>Fall</translation> <translation>Fall</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="200"/> <location filename="../../src/courtroom.cpp" line="228"/>
<source>Shownames</source> <source>Shownames</source>
<translation>Anzeigenamen</translation> <translation>Anzeigenamen</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="203"/> <location filename="../../src/courtroom.cpp" line="231"/>
<source>No Interrupt</source> <source>No Interrupt</source>
<translation>Keine Unterbrechung</translation> <translation>Keine Unterbrechung</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="217"/> <location filename="../../src/courtroom.cpp" line="246"/>
<source>White</source> <source>White</source>
<translation>Weiß</translation> <translation>Weiß</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="218"/> <location filename="../../src/courtroom.cpp" line="247"/>
<source>Green</source> <source>Green</source>
<translation>Grün</translation> <translation>Grün</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="219"/> <location filename="../../src/courtroom.cpp" line="248"/>
<source>Red</source> <source>Red</source>
<translation>Rot</translation> <translation>Rot</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="220"/> <location filename="../../src/courtroom.cpp" line="249"/>
<source>Orange</source> <source>Orange</source>
<translation>Orange</translation> <translation>Orange</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="221"/> <location filename="../../src/courtroom.cpp" line="250"/>
<source>Blue</source> <source>Blue</source>
<translation>Blau</translation> <translation>Blau</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="222"/> <location filename="../../src/courtroom.cpp" line="251"/>
<source>Yellow</source> <source>Yellow</source>
<translation>Gelb</translation> <translation>Gelb</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="566"/> <location filename="../../src/courtroom.cpp" line="595"/>
<source>Music</source> <source>Music</source>
<translation>Musik</translation> <translation>Musik</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="568"/> <location filename="../../src/courtroom.cpp" line="597"/>
<source>Sfx</source> <source>Sfx</source>
<translation>Sfx</translation> <translation>Sfx</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="570"/> <location filename="../../src/courtroom.cpp" line="599"/>
<source>Blips</source> <source>Blips</source>
<translation>Blips</translation> <translation>Blips</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="573"/> <location filename="../../src/courtroom.cpp" line="602"/>
<source>Log limit</source> <source>Log limit</source>
<translation>Verlaufsgrenze</translation> <translation>Verlaufsgrenze</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="583"/> <location filename="../../src/courtroom.cpp" line="612"/>
<location filename="../../src/courtroom.cpp" line="2959"/> <location filename="../../src/courtroom.cpp" line="3311"/>
<source>Server</source> <source>Server</source>
<translation>Server</translation> <translation>Server</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="596"/> <location filename="../../src/courtroom.cpp" line="625"/>
<source>Change character</source> <source>Change character</source>
<translation>Charakter ändern</translation> <translation>Charakter ändern</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="599"/> <location filename="../../src/courtroom.cpp" line="628"/>
<source>Reload theme</source> <source>Reload theme</source>
<translation>Aussehen neu laden</translation> <translation>Aussehen neu laden</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="602"/> <location filename="../../src/courtroom.cpp" line="631"/>
<source>Call mod</source> <source>Call mod</source>
<translation>Moderator rufen</translation> <translation>Moderator rufen</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="605"/> <location filename="../../src/courtroom.cpp" line="634"/>
<source>Settings</source> <source>Settings</source>
<translation>Einstellungen</translation> <translation>Einstellungen</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="611"/> <location filename="../../src/courtroom.cpp" line="640"/>
<source>A/M</source> <source>A/M</source>
<translation>A/M</translation> <translation>A/M</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="614"/> <location filename="../../src/courtroom.cpp" line="643"/>
<source>Preanim</source> <source>Preanim</source>
<translation>Voranimation</translation> <translation>Voranimation</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="692"/> <location filename="../../src/courtroom.cpp" line="724"/>
<source>Back to Lobby</source> <source>Back to Lobby</source>
<translation>Zurück zur Lobby</translation> <translation>Zurück zur Lobby</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2838"/>
<source>You have been banned.</source> <source>You have been banned.</source>
<translation type="vanished">Du wurdest verbannt.</translation> <translation>Du wurdest verbannt.</translation>
</message> </message>
<message> <message>
<source>%1 has played a song: %2</source> <source>%1 has played a song: %2</source>
<translation type="vanished">%1 hat ein Lied gespielt: %2</translation> <translation type="vanished">%1 hat ein Lied gespielt: %2</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="223"/> <location filename="../../src/courtroom.cpp" line="252"/>
<source>Rainbow</source> <source>Rainbow</source>
<translation>Regenbogen</translation> <translation>Regenbogen</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="224"/> <location filename="../../src/courtroom.cpp" line="253"/>
<source>Pink</source> <source>Pink</source>
<translation>Pink</translation> <translation>Pink</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="225"/> <location filename="../../src/courtroom.cpp" line="254"/>
<source>Cyan</source> <source>Cyan</source>
<translation>Cyan</translation> <translation>Cyan</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="248"/> <location filename="../../src/courtroom.cpp" line="277"/>
<source>% offset</source> <source>% offset</source>
<translation>% Abstand</translation> <translation>% Abstand</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2681"/> <location filename="../../src/courtroom.cpp" line="3033"/>
<source>You were granted the Guard button.</source> <source>You were granted the Guard button.</source>
<translation>Dir wurde der Wache Knopf gegeben.</translation> <translation>Dir wurde der Wache Knopf gegeben.</translation>
</message> </message>
@ -640,104 +691,104 @@ Grund: </translation>
<translation type="vanished">Dies bewirkt nichts, aber egal.</translation> <translation type="vanished">Dies bewirkt nichts, aber egal.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2688"/> <location filename="../../src/courtroom.cpp" line="3040"/>
<source>This does nothing, but there you go.</source> <source>This does nothing, but there you go.</source>
<translation>Dies bewirkt nichts, aber egal.</translation> <translation>Dies bewirkt nichts, aber egal.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2695"/> <location filename="../../src/courtroom.cpp" line="3047"/>
<source>You opened the settings menu.</source> <source>You opened the settings menu.</source>
<translation>Du hast die Einstellungen geöffnet.</translation> <translation>Du hast die Einstellungen geöffnet.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2710"/> <location filename="../../src/courtroom.cpp" line="3062"/>
<source>You will now pair up with </source> <source>You will now pair up with </source>
<translation>Du wirst nun mit </translation> <translation>Du wirst nun mit </translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2712"/> <location filename="../../src/courtroom.cpp" line="3064"/>
<source> if they also choose your character in return.</source> <source> if they also choose your character in return.</source>
<translation> gepaart, wenn der andere dies auch tut.</translation> <translation> gepaart, wenn der andere dies auch tut.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2718"/> <location filename="../../src/courtroom.cpp" line="3070"/>
<source>You are no longer paired with anyone.</source> <source>You are no longer paired with anyone.</source>
<translation>Du bist nicht mehr gepaart.</translation> <translation>Du bist nicht mehr gepaart.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2723"/> <location filename="../../src/courtroom.cpp" line="3075"/>
<source>Are you sure you typed that well? The char ID could not be recognised.</source> <source>Are you sure you typed that well? The char ID could not be recognised.</source>
<translation>Hast du dich vertippt? Die ID konnte nicht erkannt werden.</translation> <translation>Hast du dich vertippt? Die ID konnte nicht erkannt werden.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2739"/> <location filename="../../src/courtroom.cpp" line="3091"/>
<source>You have set your offset to </source> <source>You have set your offset to </source>
<translation>Dein Abstand ist auf </translation> <translation>Dein Abstand ist auf </translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2746"/> <location filename="../../src/courtroom.cpp" line="3098"/>
<source>Your offset must be between -100% and 100%!</source> <source>Your offset must be between -100% and 100%!</source>
<translation>Der Abstand muss zwischen -100% und 100% liegen!</translation> <translation>Der Abstand muss zwischen -100% und 100% liegen!</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2751"/> <location filename="../../src/courtroom.cpp" line="3103"/>
<source>That offset does not look like one.</source> <source>That offset does not look like one.</source>
<translation>Das sieht nicht wie ein Abstand aus.</translation> <translation>Das sieht nicht wie ein Abstand aus.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2757"/> <location filename="../../src/courtroom.cpp" line="3109"/>
<source>You switched your music and area list.</source> <source>You switched your music and area list.</source>
<translation>Du hast zwischen Musik- und Gebitsliste umgeschaltet.</translation> <translation>Du hast zwischen Musik- und Gebitsliste umgeschaltet.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2764"/> <location filename="../../src/courtroom.cpp" line="3116"/>
<source>You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this.</source> <source>You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this.</source>
<translation>Du hast Funktionen erzwungen die der Server eventuell nicht unterstützt. Möglicherweise wirst du nicht mehr sprechen können.</translation> <translation>Du hast Funktionen erzwungen die der Server eventuell nicht unterstützt. Möglicherweise wirst du nicht mehr sprechen können.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2775"/> <location filename="../../src/courtroom.cpp" line="3127"/>
<source>Your pre-animations interrupt again.</source> <source>Your pre-animations interrupt again.</source>
<translation>Deine Voranimation unterbrechen nun Text.</translation> <translation>Deine Voranimation unterbrechen nun Text.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2777"/> <location filename="../../src/courtroom.cpp" line="3129"/>
<source>Your pre-animations will not interrupt text.</source> <source>Your pre-animations will not interrupt text.</source>
<translation>Deine Voranimation unterbrechen Text nicht.</translation> <translation>Deine Voranimation unterbrechen Text nicht.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2788"/> <location filename="../../src/courtroom.cpp" line="3140"/>
<source>Couldn&apos;t open chatlog.txt to write into.</source> <source>Couldn&apos;t open chatlog.txt to write into.</source>
<translation>Konnte chatlog.txt nicht öffnen.</translation> <translation>Konnte chatlog.txt nicht öffnen.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2801"/> <location filename="../../src/courtroom.cpp" line="3153"/>
<source>The IC chatlog has been saved.</source> <source>The IC chatlog has been saved.</source>
<translation>Der IC Verlauf wurde gespeichert.</translation> <translation>Der IC Verlauf wurde gespeichert.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2813"/> <location filename="../../src/courtroom.cpp" line="3165"/>
<source>You don&apos;t have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it&apos;s likely the case file you&apos;re looking for can&apos;t be found in there.</source> <source>You don&apos;t have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it&apos;s likely the case file you&apos;re looking for can&apos;t be found in there.</source>
<translation>Du hattest keinen &apos;base/cases&apos; Ordner! Ich hab ihn nun angelegt aber bedenke das er leer sein wird.</translation> <translation>Du hattest keinen &apos;base/cases&apos; Ordner! Ich hab ihn nun angelegt aber bedenke das er leer sein wird.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2824"/> <location filename="../../src/courtroom.cpp" line="3176"/>
<source>You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. <source>You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini.
Cases you can load: %1</source> Cases you can load: %1</source>
<translation>Du musst einen Dateinamen angeben (ohne .ini). Stelle sicher das er im &apos;base/cases&apos; Ordner ist und das er korrekt formatiert ist. <translation>Du musst einen Dateinamen angeben (ohne .ini). Stelle sicher das er im &apos;base/cases&apos; Ordner ist und das er korrekt formatiert ist.
Verfügbare Fälle: %1</translation> Verfügbare Fälle: %1</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2845"/> <location filename="../../src/courtroom.cpp" line="3197"/>
<source>Case made by %1.</source> <source>Case made by %1.</source>
<translation>Fall von %1.</translation> <translation>Fall von %1.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2851"/> <location filename="../../src/courtroom.cpp" line="3203"/>
<source>Navigate to %1 for the CM doc.</source> <source>Navigate to %1 for the CM doc.</source>
<translation>Gehe zu %1 für das CM Dokument.</translation> <translation>Gehe zu %1 für das CM Dokument.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2870"/> <location filename="../../src/courtroom.cpp" line="3222"/>
<source>Your case &quot;%1&quot; was loaded!</source> <source>Your case &quot;%1&quot; was loaded!</source>
<translation>Dein Fall &quot;%1&quot; wurde geladen!</translation> <translation>Dein Fall &quot;%1&quot; wurde geladen!</translation>
</message> </message>
@ -748,7 +799,7 @@ Cases you can load: </source>
Verfügbare Fälle: </translation> Verfügbare Fälle: </translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2832"/> <location filename="../../src/courtroom.cpp" line="3184"/>
<source>Too many arguments to load a case! You only need one filename, without extension.</source> <source>Too many arguments to load a case! You only need one filename, without extension.</source>
<translation>Zu viele Argumente! Du brauchst nur den Dateinamen, ohne Erweiterung.</translation> <translation>Zu viele Argumente! Du brauchst nur den Dateinamen, ohne Erweiterung.</translation>
</message> </message>
@ -773,53 +824,53 @@ Verfügbare Fälle: </translation>
<translation type="vanished">&quot; wurde geladen!</translation> <translation type="vanished">&quot; wurde geladen!</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2882"/> <location filename="../../src/courtroom.cpp" line="3234"/>
<source>You don&apos;t have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it&apos;s likely that you somehow deleted it.</source> <source>You don&apos;t have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it&apos;s likely that you somehow deleted it.</source>
<translation>Du hattest keinen &apos;base/cases&apos; Ordner! Ich hab ihn nun angelegt aber bedenke das er leer sein wird.</translation> <translation>Du hattest keinen &apos;base/cases&apos; Ordner! Ich hab ihn nun angelegt aber bedenke das er leer sein wird.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2893"/> <location filename="../../src/courtroom.cpp" line="3245"/>
<source>You need to give a filename to save (extension not needed) and the courtroom status!</source> <source>You need to give a filename to save (extension not needed) and the courtroom status!</source>
<translation>Du musst einen Dateinamen (ohne Erweiterung) angebenn, sowie den Gebietsstatus!</translation> <translation>Du musst einen Dateinamen (ohne Erweiterung) angebenn, sowie den Gebietsstatus!</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2901"/> <location filename="../../src/courtroom.cpp" line="3253"/>
<source>Too many arguments to save a case! You only need a filename without extension and the courtroom status!</source> <source>Too many arguments to save a case! You only need a filename without extension and the courtroom status!</source>
<translation>Zu viele Argumente! Du brauchst nur den Dateinamen, ohne Erweiterung sowie den Gebietsstatus!</translation> <translation>Zu viele Argumente! Du brauchst nur den Dateinamen, ohne Erweiterung sowie den Gebietsstatus!</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2923"/> <location filename="../../src/courtroom.cpp" line="3275"/>
<source>Succesfully saved, edit doc and cmdoc link on the ini!</source> <source>Succesfully saved, edit doc and cmdoc link on the ini!</source>
<translation>Erfolgreich gespeichert!</translation> <translation>Erfolgreich gespeichert!</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2951"/> <location filename="../../src/courtroom.cpp" line="3303"/>
<source>Master</source> <source>Master</source>
<translation>Master</translation> <translation>Master</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="3422"/> <location filename="../../src/courtroom.cpp" line="3793"/>
<source>Reason:</source> <source>Reason:</source>
<translation>Grund:</translation> <translation>Grund:</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="3423"/> <location filename="../../src/courtroom.cpp" line="3794"/>
<source>Call Moderator</source> <source>Call Moderator</source>
<translation>Moderator rufen</translation> <translation>Moderator rufen</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="3431"/> <location filename="../../src/courtroom.cpp" line="3802"/>
<location filename="../../src/courtroom.cpp" line="3434"/> <location filename="../../src/courtroom.cpp" line="3805"/>
<source>Error</source> <source>Error</source>
<translation>Fehler</translation> <translation>Fehler</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="3431"/> <location filename="../../src/courtroom.cpp" line="3802"/>
<source>You must provide a reason.</source> <source>You must provide a reason.</source>
<translation>Du musst einen Grund angeben.</translation> <translation>Du musst einen Grund angeben.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="3434"/> <location filename="../../src/courtroom.cpp" line="3805"/>
<source>The message is too long.</source> <source>The message is too long.</source>
<translation>Die Nachricht ist zu lang.</translation> <translation>Die Nachricht ist zu lang.</translation>
</message> </message>
@ -883,34 +934,34 @@ Verfügbare Fälle: </translation>
<translation>Name</translation> <translation>Name</translation>
</message> </message>
<message> <message>
<location filename="../../src/lobby.cpp" line="74"/> <location filename="../../src/lobby.cpp" line="75"/>
<source>It doesn&apos;t look like your client is set up correctly. <source>It doesn&apos;t look like your client is set up correctly.
Did you download all resources correctly from tiny.cc/getao, including the large &apos;base&apos; folder?</source> Did you download all resources correctly from tiny.cc/getao, including the large &apos;base&apos; folder?</source>
<translation>Dein Client ist nicht korrekt eingerichtet. <translation>Dein Client ist nicht korrekt eingerichtet.
Hast du ALLES von tiny.cc/getao heruntergeladen und entpackt, auch den großen &apos;base&apos; Ordner?</translation> Hast du ALLES von tiny.cc/getao heruntergeladen und entpackt, auch den großen &apos;base&apos; Ordner?</translation>
</message> </message>
<message> <message>
<location filename="../../src/lobby.cpp" line="104"/> <location filename="../../src/lobby.cpp" line="105"/>
<source>Version: %1</source> <source>Version: %1</source>
<translation>Version: %1</translation> <translation>Version: %1</translation>
</message> </message>
<message> <message>
<location filename="../../src/lobby.cpp" line="147"/> <location filename="../../src/lobby.cpp" line="148"/>
<source>Loading</source> <source>Loading</source>
<translation>Laden</translation> <translation>Laden</translation>
</message> </message>
<message> <message>
<location filename="../../src/lobby.cpp" line="151"/> <location filename="../../src/lobby.cpp" line="152"/>
<source>Cancel</source> <source>Cancel</source>
<translation>Abbrechen</translation> <translation>Abbrechen</translation>
</message> </message>
<message> <message>
<location filename="../../src/lobby.cpp" line="270"/> <location filename="../../src/lobby.cpp" line="275"/>
<source>&lt;h2&gt;Attorney Online %1&lt;/h2&gt;The courtroom drama simulator&lt;p&gt;&lt;b&gt;Source code:&lt;/b&gt; &lt;a href=&apos;https://github.com/AttorneyOnline/AO2-Client&apos;&gt;https://github.com/AttorneyOnline/AO2-Client&lt;/a&gt;&lt;p&gt;&lt;b&gt;Major development:&lt;/b&gt;&lt;br&gt;OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter&lt;p&gt;&lt;b&gt;Special thanks:&lt;/b&gt;&lt;br&gt;Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy</source> <source>&lt;h2&gt;Attorney Online %1&lt;/h2&gt;The courtroom drama simulator&lt;p&gt;&lt;b&gt;Source code:&lt;/b&gt; &lt;a href=&apos;https://github.com/AttorneyOnline/AO2-Client&apos;&gt;https://github.com/AttorneyOnline/AO2-Client&lt;/a&gt;&lt;p&gt;&lt;b&gt;Major development:&lt;/b&gt;&lt;br&gt;OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter&lt;p&gt;&lt;b&gt;Special thanks:&lt;/b&gt;&lt;br&gt;Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy</source>
<translation>&lt;h2&gt;Attorney Online %1&lt;/h2&gt;Der Gerichtsdrama Simulator&lt;p&gt;&lt;b&gt;Quelltext:&lt;/b&gt; &lt;a href=&apos;https://github.com/AttorneyOnline/AO2-Client&apos;&gt;https://github.com/AttorneyOnline/AO2-Client&lt;/a&gt;&lt;p&gt;&lt;b&gt;Leitende Entwicklung:&lt;/b&gt;&lt;br&gt;OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter&lt;p&gt;&lt;b&gt;Danksagungen:&lt;/b&gt;&lt;br&gt;Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy</translation> <translation>&lt;h2&gt;Attorney Online %1&lt;/h2&gt;Der Gerichtsdrama Simulator&lt;p&gt;&lt;b&gt;Quelltext:&lt;/b&gt; &lt;a href=&apos;https://github.com/AttorneyOnline/AO2-Client&apos;&gt;https://github.com/AttorneyOnline/AO2-Client&lt;/a&gt;&lt;p&gt;&lt;b&gt;Leitende Entwicklung:&lt;/b&gt;&lt;br&gt;OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter&lt;p&gt;&lt;b&gt;Danksagungen:&lt;/b&gt;&lt;br&gt;Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy</translation>
</message> </message>
<message> <message>
<location filename="../../src/lobby.cpp" line="376"/> <location filename="../../src/lobby.cpp" line="393"/>
<source>Online: %1/%2</source> <source>Online: %1/%2</source>
<translation>Online: %1/%2</translation> <translation>Online: %1/%2</translation>
</message> </message>
@ -955,8 +1006,8 @@ Noevain
Cronnicossy</translation> Cronnicossy</translation>
</message> </message>
<message> <message>
<location filename="../../src/lobby.cpp" line="114"/> <location filename="../../src/lobby.cpp" line="115"/>
<location filename="../../src/lobby.cpp" line="316"/> <location filename="../../src/lobby.cpp" line="325"/>
<source>Offline</source> <source>Offline</source>
<translation>Offline</translation> <translation>Offline</translation>
</message> </message>

View File

@ -21,60 +21,61 @@ Please check your Internet connection and firewall, and please try again.</sourc
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="106"/> <location filename="../../src/packet_distribution.cpp" line="135"/>
<source>Outdated version! Your version: %1 <source>Outdated version! Your version: %1
Please go to aceattorneyonline.com to update.</source> Please go to aceattorneyonline.com to update.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="114"/> <location filename="../../src/packet_distribution.cpp" line="143"/>
<source>You have been exiled from AO. <source>You have been exiled from AO.
Have a nice day.</source> Have a nice day.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="249"/> <location filename="../../src/packet_distribution.cpp" line="283"/>
<source>Attorney Online 2</source> <source>Attorney Online 2</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="275"/> <location filename="../../src/packet_distribution.cpp" line="309"/>
<source>Loading</source> <source>Loading</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="363"/> <location filename="../../src/packet_distribution.cpp" line="397"/>
<source>Loading evidence: <source>Loading evidence:
%1/%2</source> %1/%2</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="395"/> <location filename="../../src/packet_distribution.cpp" line="429"/>
<location filename="../../src/packet_distribution.cpp" line="490"/> <location filename="../../src/packet_distribution.cpp" line="538"/>
<source>Loading music: <source>Loading music:
%1/%2</source> %1/%2</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="467"/> <location filename="../../src/packet_distribution.cpp" line="353"/>
<location filename="../../src/packet_distribution.cpp" line="501"/>
<source>Loading chars: <source>Loading chars:
%1/%2</source> %1/%2</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="642"/> <location filename="../../src/packet_distribution.cpp" line="692"/>
<source>You have been kicked from the server. <source>You have been kicked from the server.
Reason: %1</source> Reason: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="651"/> <location filename="../../src/packet_distribution.cpp" line="701"/>
<source>You have been banned from the server. <source>You have been banned from the server.
Reason: %1</source> Reason: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="659"/> <location filename="../../src/packet_distribution.cpp" line="709"/>
<source>You are banned on this server. <source>You are banned on this server.
Reason: %1</source> Reason: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -117,271 +118,316 @@ Reason: %1</source>
<source>Stenographer needed</source> <source>Stenographer needed</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../../src/aocaseannouncerdialog.cpp" line="58"/>
<source>Witness needed</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>AOOptionsDialog</name> <name>AOOptionsDialog</name>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="11"/> <location filename="../../src/aooptionsdialog.cpp" line="10"/>
<source>Settings</source> <source>Settings</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="40"/> <location filename="../../src/aooptionsdialog.cpp" line="39"/>
<source>Gameplay</source> <source>Gameplay</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="51"/> <location filename="../../src/aooptionsdialog.cpp" line="50"/>
<source>Theme:</source> <source>Theme:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="52"/> <location filename="../../src/aooptionsdialog.cpp" line="51"/>
<source>Sets the theme used in-game. If the new theme changes the lobby&apos;s look as well, you&apos;ll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it.</source> <source>Sets the theme used in-game. If the new theme changes the lobby&apos;s look as well, you&apos;ll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="81"/> <location filename="../../src/aooptionsdialog.cpp" line="80"/>
<source>Log goes downwards:</source> <source>Log goes downwards:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="82"/> <location filename="../../src/aooptionsdialog.cpp" line="81"/>
<source>If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked.</source> <source>If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="94"/> <location filename="../../src/aooptionsdialog.cpp" line="93"/>
<source>Log length:</source> <source>Log length:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="95"/> <location filename="../../src/aooptionsdialog.cpp" line="94"/>
<source>The amount of messages the IC chatlog will keep before deleting older messages. A value of 0 or below counts as &apos;infinite&apos;.</source> <source>The amount of messages the IC chatlog will keep before deleting older messages. A value of 0 or below counts as &apos;infinite&apos;.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="113"/> <location filename="../../src/aooptionsdialog.cpp" line="112"/>
<source>Default username:</source> <source>Default username:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="114"/> <location filename="../../src/aooptionsdialog.cpp" line="113"/>
<source>Your OOC name will be automatically set to this value when you join a server.</source> <source>Your OOC name will be automatically set to this value when you join a server.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="126"/> <location filename="../../src/aooptionsdialog.cpp" line="125"/>
<source>Custom shownames:</source> <source>Custom shownames:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="127"/> <location filename="../../src/aooptionsdialog.cpp" line="126"/>
<source>Gives the default value for the in-game &apos;Custom shownames&apos; tickbox, which in turn determines whether the client should display custom in-character names.</source> <source>Gives the default value for the in-game &apos;Custom shownames&apos; tickbox, which in turn determines whether the client should display custom in-character names.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="145"/> <location filename="../../src/aooptionsdialog.cpp" line="144"/>
<source>Backup MS:</source> <source>Backup MS:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="146"/> <location filename="../../src/aooptionsdialog.cpp" line="145"/>
<source>If the built-in server lookups fail, the game will try the address given here and use it as a backup master server address.</source> <source>If the built-in server lookups fail, the game will try the address given here and use it as a backup master server address.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="158"/> <location filename="../../src/aooptionsdialog.cpp" line="157"/>
<source>Discord:</source> <source>Discord:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="159"/> <location filename="../../src/aooptionsdialog.cpp" line="158"/>
<source>Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for.</source> <source>Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="170"/>
<source>Allow Shake/Flash:</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="171"/> <location filename="../../src/aooptionsdialog.cpp" line="171"/>
<source>Allows screenshaking and flashing. Disable this if you have concerns or issues with photosensitivity and/or seizures.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="181"/>
<source>Language:</source> <source>Language:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="172"/> <location filename="../../src/aooptionsdialog.cpp" line="182"/>
<source>Sets the language if you don&apos;t want to use your system language.</source> <source>Sets the language if you don&apos;t want to use your system language.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="186"/> <location filename="../../src/aooptionsdialog.cpp" line="197"/>
<source>Callwords</source> <source>Callwords</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="211"/> <location filename="../../src/aooptionsdialog.cpp" line="222"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!&lt;br&gt;Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.&lt;/body&gt;&lt;/html&gt;</source> <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!&lt;br&gt;Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="217"/> <location filename="../../src/aooptionsdialog.cpp" line="228"/>
<source>Audio</source> <source>Audio</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="228"/> <location filename="../../src/aooptionsdialog.cpp" line="239"/>
<source>Audio device:</source> <source>Audio device:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="229"/> <location filename="../../src/aooptionsdialog.cpp" line="240"/>
<source>Sets the audio device for all sounds.</source> <source>Sets the audio device for all sounds.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="263"/> <location filename="../../src/aooptionsdialog.cpp" line="279"/>
<source>Music:</source> <source>Music:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="264"/> <location filename="../../src/aooptionsdialog.cpp" line="280"/>
<source>Sets the music&apos;s default volume.</source> <source>Sets the music&apos;s default volume.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="276"/> <location filename="../../src/aooptionsdialog.cpp" line="292"/>
<source>SFX:</source> <source>SFX:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="277"/> <location filename="../../src/aooptionsdialog.cpp" line="293"/>
<source>Sets the SFX&apos;s default volume. Interjections and actual sound effects count as &apos;SFX&apos;.</source> <source>Sets the SFX&apos;s default volume. Interjections and actual sound effects count as &apos;SFX&apos;.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="290"/> <location filename="../../src/aooptionsdialog.cpp" line="306"/>
<source>Blips:</source> <source>Blips:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="291"/> <location filename="../../src/aooptionsdialog.cpp" line="307"/>
<source>Sets the volume of the blips, the talking sound effects.</source> <source>Sets the volume of the blips, the talking sound effects.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="309"/> <location filename="../../src/aooptionsdialog.cpp" line="325"/>
<source>Blip rate:</source> <source>Blip rate:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="310"/> <location filename="../../src/aooptionsdialog.cpp" line="326"/>
<source>Sets the delay between playing the blip sounds.</source> <source>Sets the delay between playing the blip sounds.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="321"/> <location filename="../../src/aooptionsdialog.cpp" line="337"/>
<source>Blank blips:</source> <source>Blank blips:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="322"/> <location filename="../../src/aooptionsdialog.cpp" line="338"/>
<source>If true, the game will play a blip sound even when a space is &apos;being said&apos;.</source> <source>If true, the game will play a blip sound even when a space is &apos;being said&apos;.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="334"/> <location filename="../../src/aooptionsdialog.cpp" line="349"/>
<source>Casing</source> <source>Enable Looping SFX:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="348"/>
<source>This server supports case alerts.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="350"/> <location filename="../../src/aooptionsdialog.cpp" line="350"/>
<source>This server does not support case alerts.</source> <source>If true, the game will allow looping sound effects to play on preanimations.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="351"/> <location filename="../../src/aooptionsdialog.cpp" line="361"/>
<source>Pretty self-explanatory.</source> <source>Kill Music On Objection:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="358"/> <location filename="../../src/aooptionsdialog.cpp" line="362"/>
<source>Casing:</source> <source>If true, the game will stop music when someone objects, like in the actual games.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="359"/>
<source>If checked, you will get alerts about case announcements.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="372"/>
<source>Defense:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="373"/> <location filename="../../src/aooptionsdialog.cpp" line="373"/>
<source>If checked, you will get alerts about case announcements if a defense spot is open.</source> <source>Casing</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="386"/>
<source>Prosecution:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="387"/> <location filename="../../src/aooptionsdialog.cpp" line="387"/>
<source>This server supports case alerts.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="389"/>
<source>This server does not support case alerts.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="390"/>
<source>Pretty self-explanatory.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="397"/>
<source>Casing:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="398"/>
<source>If checked, you will get alerts about case announcements.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="411"/>
<source>Defense:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="412"/>
<source>If checked, you will get alerts about case announcements if a defense spot is open.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="425"/>
<source>Prosecution:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="426"/>
<source>If checked, you will get alerts about case announcements if a prosecutor spot is open.</source> <source>If checked, you will get alerts about case announcements if a prosecutor spot is open.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="400"/> <location filename="../../src/aooptionsdialog.cpp" line="439"/>
<source>Judge:</source> <source>Judge:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="401"/> <location filename="../../src/aooptionsdialog.cpp" line="440"/>
<source>If checked, you will get alerts about case announcements if the judge spot is open.</source> <source>If checked, you will get alerts about case announcements if the judge spot is open.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="414"/> <location filename="../../src/aooptionsdialog.cpp" line="453"/>
<source>Juror:</source> <source>Juror:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="415"/> <location filename="../../src/aooptionsdialog.cpp" line="454"/>
<source>If checked, you will get alerts about case announcements if a juror spot is open.</source> <source>If checked, you will get alerts about case announcements if a juror spot is open.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="428"/> <location filename="../../src/aooptionsdialog.cpp" line="467"/>
<source>Stenographer:</source> <source>Stenographer:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="429"/> <location filename="../../src/aooptionsdialog.cpp" line="468"/>
<source>If checked, you will get alerts about case announcements if a stenographer spot is open.</source> <source>If checked, you will get alerts about case announcements if a stenographer spot is open.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="442"/> <location filename="../../src/aooptionsdialog.cpp" line="481"/>
<source>CM:</source> <source>CM:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="443"/> <location filename="../../src/aooptionsdialog.cpp" line="482"/>
<source>If checked, you will appear amongst the potential CMs on the server.</source> <source>If checked, you will appear amongst the potential CMs on the server.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="456"/> <location filename="../../src/aooptionsdialog.cpp" line="493"/>
<source>Witness:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="494"/>
<source>If checked, you will appear amongst the potential witnesses on the server.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="507"/>
<source>Hosting cases:</source> <source>Hosting cases:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="457"/> <location filename="../../src/aooptionsdialog.cpp" line="508"/>
<source>If you&apos;re a CM, enter what cases you are willing to host.</source> <source>If you&apos;re a CM, enter what cases you are willing to host.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -389,353 +435,357 @@ Reason: %1</source>
<context> <context>
<name>Courtroom</name> <name>Courtroom</name>
<message> <message>
<location filename="../../src/charselect.cpp" line="21"/> <location filename="../../src/charselect.cpp" line="74"/>
<source>Password</source> <source>Password</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/charselect.cpp" line="27"/> <location filename="../../src/charselect.cpp" line="80"/>
<source>Spectator</source> <source>Spectator</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/charselect.cpp" line="30"/> <location filename="../../src/charselect.cpp" line="83"/>
<location filename="../../src/courtroom.cpp" line="138"/> <location filename="../../src/courtroom.cpp" line="164"/>
<source>Search</source> <source>Search</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/charselect.cpp" line="35"/> <location filename="../../src/charselect.cpp" line="88"/>
<source>Passworded</source> <source>Passworded</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/charselect.cpp" line="39"/> <location filename="../../src/charselect.cpp" line="92"/>
<source>Taken</source> <source>Taken</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/charselect.cpp" line="217"/> <location filename="../../src/charselect.cpp" line="182"/>
<source>Generating chars: <source>Could not find %1</source>
%1/%2</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="116"/> <location filename="../../src/courtroom.cpp" line="142"/>
<source>Showname</source> <source>Showname</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="120"/> <location filename="../../src/courtroom.cpp" line="146"/>
<source>Message</source> <source>Message</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="130"/> <location filename="../../src/courtroom.cpp" line="156"/>
<source>Name</source> <source>Name</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="183"/> <location filename="../../src/courtroom.cpp" line="209"/>
<source>Pre</source> <source>Pre</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="186"/> <location filename="../../src/courtroom.cpp" line="212"/>
<source>Flip</source> <source>Flip</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="190"/> <location filename="../../src/courtroom.cpp" line="223"/>
<source>Guard</source> <location filename="../../src/courtroom.cpp" line="637"/>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/courtroom.cpp" line="195"/>
<location filename="../../src/courtroom.cpp" line="608"/>
<source>Casing</source> <source>Casing</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="200"/> <location filename="../../src/courtroom.cpp" line="228"/>
<source>Shownames</source> <source>Shownames</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="203"/> <location filename="../../src/courtroom.cpp" line="231"/>
<source>No Interrupt</source> <source>No Interrupt</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="217"/> <location filename="../../src/courtroom.cpp" line="246"/>
<source>White</source> <source>White</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="218"/> <location filename="../../src/courtroom.cpp" line="247"/>
<source>Green</source> <source>Green</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="219"/> <location filename="../../src/courtroom.cpp" line="248"/>
<source>Red</source> <source>Red</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="220"/> <location filename="../../src/courtroom.cpp" line="249"/>
<source>Orange</source> <source>Orange</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="221"/> <location filename="../../src/courtroom.cpp" line="250"/>
<source>Blue</source> <source>Blue</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="222"/> <location filename="../../src/courtroom.cpp" line="251"/>
<source>Yellow</source> <source>Yellow</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2688"/> <location filename="../../src/courtroom.cpp" line="3040"/>
<source>This does nothing, but there you go.</source> <source>This does nothing, but there you go.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2824"/> <location filename="../../src/courtroom.cpp" line="3176"/>
<source>You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. <source>You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini.
Cases you can load: %1</source> Cases you can load: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2845"/> <location filename="../../src/courtroom.cpp" line="3197"/>
<source>Case made by %1.</source> <source>Case made by %1.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2851"/> <location filename="../../src/courtroom.cpp" line="3203"/>
<source>Navigate to %1 for the CM doc.</source> <source>Navigate to %1 for the CM doc.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2870"/> <location filename="../../src/courtroom.cpp" line="3222"/>
<source>Your case &quot;%1&quot; was loaded!</source> <source>Your case &quot;%1&quot; was loaded!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="583"/> <location filename="../../src/courtroom.cpp" line="612"/>
<location filename="../../src/courtroom.cpp" line="2959"/> <location filename="../../src/courtroom.cpp" line="3311"/>
<source>Server</source> <source>Server</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="692"/> <location filename="../../src/courtroom.cpp" line="724"/>
<source>Back to Lobby</source> <source>Back to Lobby</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="223"/> <location filename="../../src/courtroom.cpp" line="252"/>
<source>Rainbow</source> <source>Rainbow</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="224"/> <location filename="../../src/courtroom.cpp" line="217"/>
<source>Disable Modcalls</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/courtroom.cpp" line="253"/>
<source>Pink</source> <source>Pink</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="225"/> <location filename="../../src/courtroom.cpp" line="254"/>
<source>Cyan</source> <source>Cyan</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="248"/> <location filename="../../src/courtroom.cpp" line="277"/>
<source>% offset</source> <source>% offset</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="566"/> <location filename="../../src/courtroom.cpp" line="595"/>
<source>Music</source> <source>Music</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="568"/> <location filename="../../src/courtroom.cpp" line="597"/>
<source>Sfx</source> <source>Sfx</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="570"/> <location filename="../../src/courtroom.cpp" line="599"/>
<source>Blips</source> <source>Blips</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="573"/> <location filename="../../src/courtroom.cpp" line="602"/>
<source>Log limit</source> <source>Log limit</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="596"/> <location filename="../../src/courtroom.cpp" line="625"/>
<source>Change character</source> <source>Change character</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="599"/> <location filename="../../src/courtroom.cpp" line="628"/>
<source>Reload theme</source> <source>Reload theme</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="602"/> <location filename="../../src/courtroom.cpp" line="631"/>
<source>Call mod</source> <source>Call mod</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="605"/> <location filename="../../src/courtroom.cpp" line="634"/>
<source>Settings</source> <source>Settings</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="611"/> <location filename="../../src/courtroom.cpp" line="640"/>
<source>A/M</source> <source>A/M</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="614"/> <location filename="../../src/courtroom.cpp" line="643"/>
<source>Preanim</source> <source>Preanim</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2681"/> <location filename="../../src/courtroom.cpp" line="2838"/>
<source>You have been banned.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/courtroom.cpp" line="3033"/>
<source>You were granted the Guard button.</source> <source>You were granted the Guard button.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2695"/> <location filename="../../src/courtroom.cpp" line="3047"/>
<source>You opened the settings menu.</source> <source>You opened the settings menu.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2710"/> <location filename="../../src/courtroom.cpp" line="3062"/>
<source>You will now pair up with </source> <source>You will now pair up with </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2712"/> <location filename="../../src/courtroom.cpp" line="3064"/>
<source> if they also choose your character in return.</source> <source> if they also choose your character in return.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2718"/> <location filename="../../src/courtroom.cpp" line="3070"/>
<source>You are no longer paired with anyone.</source> <source>You are no longer paired with anyone.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2723"/> <location filename="../../src/courtroom.cpp" line="3075"/>
<source>Are you sure you typed that well? The char ID could not be recognised.</source> <source>Are you sure you typed that well? The char ID could not be recognised.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2739"/> <location filename="../../src/courtroom.cpp" line="3091"/>
<source>You have set your offset to </source> <source>You have set your offset to </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2746"/> <location filename="../../src/courtroom.cpp" line="3098"/>
<source>Your offset must be between -100% and 100%!</source> <source>Your offset must be between -100% and 100%!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2751"/> <location filename="../../src/courtroom.cpp" line="3103"/>
<source>That offset does not look like one.</source> <source>That offset does not look like one.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2757"/> <location filename="../../src/courtroom.cpp" line="3109"/>
<source>You switched your music and area list.</source> <source>You switched your music and area list.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2764"/> <location filename="../../src/courtroom.cpp" line="3116"/>
<source>You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this.</source> <source>You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2775"/> <location filename="../../src/courtroom.cpp" line="3127"/>
<source>Your pre-animations interrupt again.</source> <source>Your pre-animations interrupt again.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2777"/> <location filename="../../src/courtroom.cpp" line="3129"/>
<source>Your pre-animations will not interrupt text.</source> <source>Your pre-animations will not interrupt text.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2788"/> <location filename="../../src/courtroom.cpp" line="3140"/>
<source>Couldn&apos;t open chatlog.txt to write into.</source> <source>Couldn&apos;t open chatlog.txt to write into.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2801"/> <location filename="../../src/courtroom.cpp" line="3153"/>
<source>The IC chatlog has been saved.</source> <source>The IC chatlog has been saved.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2813"/> <location filename="../../src/courtroom.cpp" line="3165"/>
<source>You don&apos;t have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it&apos;s likely the case file you&apos;re looking for can&apos;t be found in there.</source> <source>You don&apos;t have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it&apos;s likely the case file you&apos;re looking for can&apos;t be found in there.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2832"/> <location filename="../../src/courtroom.cpp" line="3184"/>
<source>Too many arguments to load a case! You only need one filename, without extension.</source> <source>Too many arguments to load a case! You only need one filename, without extension.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2882"/> <location filename="../../src/courtroom.cpp" line="3234"/>
<source>You don&apos;t have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it&apos;s likely that you somehow deleted it.</source> <source>You don&apos;t have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it&apos;s likely that you somehow deleted it.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2893"/> <location filename="../../src/courtroom.cpp" line="3245"/>
<source>You need to give a filename to save (extension not needed) and the courtroom status!</source> <source>You need to give a filename to save (extension not needed) and the courtroom status!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2901"/> <location filename="../../src/courtroom.cpp" line="3253"/>
<source>Too many arguments to save a case! You only need a filename without extension and the courtroom status!</source> <source>Too many arguments to save a case! You only need a filename without extension and the courtroom status!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2923"/> <location filename="../../src/courtroom.cpp" line="3275"/>
<source>Succesfully saved, edit doc and cmdoc link on the ini!</source> <source>Succesfully saved, edit doc and cmdoc link on the ini!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2951"/> <location filename="../../src/courtroom.cpp" line="3303"/>
<source>Master</source> <source>Master</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="3422"/> <location filename="../../src/courtroom.cpp" line="3793"/>
<source>Reason:</source> <source>Reason:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="3423"/> <location filename="../../src/courtroom.cpp" line="3794"/>
<source>Call Moderator</source> <source>Call Moderator</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="3431"/> <location filename="../../src/courtroom.cpp" line="3802"/>
<location filename="../../src/courtroom.cpp" line="3434"/> <location filename="../../src/courtroom.cpp" line="3805"/>
<source>Error</source> <source>Error</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="3431"/> <location filename="../../src/courtroom.cpp" line="3802"/>
<source>You must provide a reason.</source> <source>You must provide a reason.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="3434"/> <location filename="../../src/courtroom.cpp" line="3805"/>
<source>The message is too long.</source> <source>The message is too long.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -768,39 +818,39 @@ Cases you can load: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/lobby.cpp" line="74"/> <location filename="../../src/lobby.cpp" line="75"/>
<source>It doesn&apos;t look like your client is set up correctly. <source>It doesn&apos;t look like your client is set up correctly.
Did you download all resources correctly from tiny.cc/getao, including the large &apos;base&apos; folder?</source> Did you download all resources correctly from tiny.cc/getao, including the large &apos;base&apos; folder?</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/lobby.cpp" line="104"/> <location filename="../../src/lobby.cpp" line="105"/>
<source>Version: %1</source> <source>Version: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/lobby.cpp" line="147"/> <location filename="../../src/lobby.cpp" line="148"/>
<source>Loading</source> <source>Loading</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/lobby.cpp" line="151"/> <location filename="../../src/lobby.cpp" line="152"/>
<source>Cancel</source> <source>Cancel</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/lobby.cpp" line="270"/> <location filename="../../src/lobby.cpp" line="275"/>
<source>&lt;h2&gt;Attorney Online %1&lt;/h2&gt;The courtroom drama simulator&lt;p&gt;&lt;b&gt;Source code:&lt;/b&gt; &lt;a href=&apos;https://github.com/AttorneyOnline/AO2-Client&apos;&gt;https://github.com/AttorneyOnline/AO2-Client&lt;/a&gt;&lt;p&gt;&lt;b&gt;Major development:&lt;/b&gt;&lt;br&gt;OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter&lt;p&gt;&lt;b&gt;Special thanks:&lt;/b&gt;&lt;br&gt;Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy</source> <source>&lt;h2&gt;Attorney Online %1&lt;/h2&gt;The courtroom drama simulator&lt;p&gt;&lt;b&gt;Source code:&lt;/b&gt; &lt;a href=&apos;https://github.com/AttorneyOnline/AO2-Client&apos;&gt;https://github.com/AttorneyOnline/AO2-Client&lt;/a&gt;&lt;p&gt;&lt;b&gt;Major development:&lt;/b&gt;&lt;br&gt;OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter&lt;p&gt;&lt;b&gt;Special thanks:&lt;/b&gt;&lt;br&gt;Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/lobby.cpp" line="376"/> <location filename="../../src/lobby.cpp" line="393"/>
<source>Online: %1/%2</source> <source>Online: %1/%2</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/lobby.cpp" line="114"/> <location filename="../../src/lobby.cpp" line="115"/>
<location filename="../../src/lobby.cpp" line="316"/> <location filename="../../src/lobby.cpp" line="325"/>
<source>Offline</source> <source>Offline</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS> <!DOCTYPE TS>
<TS version="2.0" language="es"> <TS version="2.1" language="es">
<context> <context>
<name>AOApplication</name> <name>AOApplication</name>
<message> <message>
@ -22,66 +22,67 @@ Please check your Internet connection and firewall, and please try again.</sourc
<translation>Hubo un error al obtener la lista de servidores. Verifique su conexión a Internet y firewall, y vuelva a intentarlo.</translation> <translation>Hubo un error al obtener la lista de servidores. Verifique su conexión a Internet y firewall, y vuelva a intentarlo.</translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="106"/> <location filename="../../src/packet_distribution.cpp" line="135"/>
<source>Outdated version! Your version: %1 <source>Outdated version! Your version: %1
Please go to aceattorneyonline.com to update.</source> Please go to aceattorneyonline.com to update.</source>
<translation>¡Versión desactualizada! Su versión: %1 Vaya a aceattorneyonline.com para actualizar.</translation> <translation>¡Versión desactualizada! Su versión: %1 Vaya a aceattorneyonline.com para actualizar.</translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="114"/> <location filename="../../src/packet_distribution.cpp" line="143"/>
<source>You have been exiled from AO. <source>You have been exiled from AO.
Have a nice day.</source> Have a nice day.</source>
<translation>Has sido exiliado de AO. <translation>Has sido exiliado de AO.
Que tengas un buen día.</translation> Que tengas un buen día.</translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="249"/> <location filename="../../src/packet_distribution.cpp" line="283"/>
<source>Attorney Online 2</source> <source>Attorney Online 2</source>
<translation>Attorney Online 2</translation> <translation>Attorney Online 2</translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="275"/> <location filename="../../src/packet_distribution.cpp" line="309"/>
<source>Loading</source> <source>Loading</source>
<translation>Cargando</translation> <translation>Cargando</translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="363"/> <location filename="../../src/packet_distribution.cpp" line="397"/>
<source>Loading evidence: <source>Loading evidence:
%1/%2</source> %1/%2</source>
<translation>Cargando evidencia: <translation>Cargando evidencia:
%1/%2</translation> %1/%2</translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="395"/> <location filename="../../src/packet_distribution.cpp" line="429"/>
<location filename="../../src/packet_distribution.cpp" line="490"/> <location filename="../../src/packet_distribution.cpp" line="538"/>
<source>Loading music: <source>Loading music:
%1/%2</source> %1/%2</source>
<translation>Cargando música: <translation>Cargando música:
%1/%2</translation> %1/%2</translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="467"/> <location filename="../../src/packet_distribution.cpp" line="353"/>
<location filename="../../src/packet_distribution.cpp" line="501"/>
<source>Loading chars: <source>Loading chars:
%1/%2</source> %1/%2</source>
<translation>Cargando personajes: <translation>Cargando personajes:
%1/%2</translation> %1/%2</translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="642"/> <location filename="../../src/packet_distribution.cpp" line="692"/>
<source>You have been kicked from the server. <source>You have been kicked from the server.
Reason: %1</source> Reason: %1</source>
<translation>Has sido expulsado del servidor. <translation>Has sido expulsado del servidor.
Razón: %1</translation> Razón: %1</translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="651"/> <location filename="../../src/packet_distribution.cpp" line="701"/>
<source>You have been banned from the server. <source>You have been banned from the server.
Reason: %1</source> Reason: %1</source>
<translation>Has sido bloqueado de este servidor. <translation>Has sido bloqueado de este servidor.
Razón: %1</translation> Razón: %1</translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="659"/> <location filename="../../src/packet_distribution.cpp" line="709"/>
<source>You are banned on this server. <source>You are banned on this server.
Reason: %1</source> Reason: %1</source>
<translation>Has sido bloqueado en este servidor. <translation>Has sido bloqueado en este servidor.
@ -137,271 +138,316 @@ Razón: </translation>
<source>Stenographer needed</source> <source>Stenographer needed</source>
<translation>Se necesita taquígrafo</translation> <translation>Se necesita taquígrafo</translation>
</message> </message>
<message>
<location filename="../../src/aocaseannouncerdialog.cpp" line="58"/>
<source>Witness needed</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>AOOptionsDialog</name> <name>AOOptionsDialog</name>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="11"/> <location filename="../../src/aooptionsdialog.cpp" line="10"/>
<source>Settings</source> <source>Settings</source>
<translation>Ajustes</translation> <translation>Ajustes</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="40"/> <location filename="../../src/aooptionsdialog.cpp" line="39"/>
<source>Gameplay</source> <source>Gameplay</source>
<translation>Jugabilidad</translation> <translation>Jugabilidad</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="51"/> <location filename="../../src/aooptionsdialog.cpp" line="50"/>
<source>Theme:</source> <source>Theme:</source>
<translation>Tema visual:</translation> <translation>Tema visual:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="52"/> <location filename="../../src/aooptionsdialog.cpp" line="51"/>
<source>Sets the theme used in-game. If the new theme changes the lobby&apos;s look as well, you&apos;ll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it.</source> <source>Sets the theme used in-game. If the new theme changes the lobby&apos;s look as well, you&apos;ll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it.</source>
<translation>Establece el tema visual utilizado en el juego. Si el nuevo tema también cambia el aspecto del lobby, deberá volver a cargar el lobby para que los cambios surtan efecto, como unirse a un servidor y volver al lobby.</translation> <translation>Establece el tema visual utilizado en el juego. Si el nuevo tema también cambia el aspecto del lobby, deberá volver a cargar el lobby para que los cambios surtan efecto, como unirse a un servidor y volver al lobby.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="81"/> <location filename="../../src/aooptionsdialog.cpp" line="80"/>
<source>Log goes downwards:</source> <source>Log goes downwards:</source>
<translation>Invertir historial IC:</translation> <translation>Invertir historial IC:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="82"/> <location filename="../../src/aooptionsdialog.cpp" line="81"/>
<source>If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked.</source> <source>If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked.</source>
<translation>Si está marcado, los nuevos mensajes aparecerán en la parte inferior (como el chat OOC).</translation> <translation>Si está marcado, los nuevos mensajes aparecerán en la parte inferior (como el chat OOC).</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="94"/> <location filename="../../src/aooptionsdialog.cpp" line="93"/>
<source>Log length:</source> <source>Log length:</source>
<translation>Limite del historial:</translation> <translation>Limite del historial:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="95"/> <location filename="../../src/aooptionsdialog.cpp" line="94"/>
<source>The amount of messages the IC chatlog will keep before deleting older messages. A value of 0 or below counts as &apos;infinite&apos;.</source> <source>The amount of messages the IC chatlog will keep before deleting older messages. A value of 0 or below counts as &apos;infinite&apos;.</source>
<translation>La cantidad de mensajes que mantendrá el historial del chat IC antes de eliminar mensajes más antiguos. 0 significa &apos;infinito&apos;.</translation> <translation>La cantidad de mensajes que mantendrá el historial del chat IC antes de eliminar mensajes más antiguos. 0 significa &apos;infinito&apos;.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="113"/> <location filename="../../src/aooptionsdialog.cpp" line="112"/>
<source>Default username:</source> <source>Default username:</source>
<translation>Usuario predeterminado:</translation> <translation>Usuario predeterminado:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="114"/> <location filename="../../src/aooptionsdialog.cpp" line="113"/>
<source>Your OOC name will be automatically set to this value when you join a server.</source> <source>Your OOC name will be automatically set to this value when you join a server.</source>
<translation>Su nombre OOC se establecerá automáticamente a este cuando se una a un servidor.</translation> <translation>Su nombre OOC se establecerá automáticamente a este cuando se una a un servidor.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="126"/> <location filename="../../src/aooptionsdialog.cpp" line="125"/>
<source>Custom shownames:</source> <source>Custom shownames:</source>
<translation>Mostrar nombres:</translation> <translation>Mostrar nombres:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="127"/> <location filename="../../src/aooptionsdialog.cpp" line="126"/>
<source>Gives the default value for the in-game &apos;Custom shownames&apos; tickbox, which in turn determines whether the client should display custom in-character names.</source> <source>Gives the default value for the in-game &apos;Custom shownames&apos; tickbox, which in turn determines whether the client should display custom in-character names.</source>
<translation>Activa la casilla &apos;Mostrar nombres&apos; de forma predeterminada en el juego, que a su vez determina si el cliente debe mostrar nombres personalizados en los personajes.</translation> <translation>Activa la casilla &apos;Mostrar nombres&apos; de forma predeterminada en el juego, que a su vez determina si el cliente debe mostrar nombres personalizados en los personajes.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="145"/> <location filename="../../src/aooptionsdialog.cpp" line="144"/>
<source>Backup MS:</source> <source>Backup MS:</source>
<translation>Master SV de respaldo:</translation> <translation>Master SV de respaldo:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="146"/> <location filename="../../src/aooptionsdialog.cpp" line="145"/>
<source>If the built-in server lookups fail, the game will try the address given here and use it as a backup master server address.</source> <source>If the built-in server lookups fail, the game will try the address given here and use it as a backup master server address.</source>
<translation>Si la lista de servidores predeterminada falla, el juego probará la dirección proporcionada aquí.</translation> <translation>Si la lista de servidores predeterminada falla, el juego probará la dirección proporcionada aquí.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="158"/> <location filename="../../src/aooptionsdialog.cpp" line="157"/>
<source>Discord:</source> <source>Discord:</source>
<translation>Discord:</translation> <translation>Discord:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="159"/> <location filename="../../src/aooptionsdialog.cpp" line="158"/>
<source>Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for.</source> <source>Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for.</source>
<translation>Permite a otros en Discord ver en qué servidor estás, qué personaje juegas y cuánto tiempo has estado jugando.</translation> <translation>Permite a otros en Discord ver en qué servidor estás, qué personaje juegas y cuánto tiempo has estado jugando.</translation>
</message> </message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="170"/>
<source>Allow Shake/Flash:</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="171"/> <location filename="../../src/aooptionsdialog.cpp" line="171"/>
<source>Allows screenshaking and flashing. Disable this if you have concerns or issues with photosensitivity and/or seizures.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="181"/>
<source>Language:</source> <source>Language:</source>
<translation>Idioma:</translation> <translation>Idioma:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="172"/> <location filename="../../src/aooptionsdialog.cpp" line="182"/>
<source>Sets the language if you don&apos;t want to use your system language.</source> <source>Sets the language if you don&apos;t want to use your system language.</source>
<translation>Establece el idioma si no desea utilizar el idioma de su sistema.</translation> <translation>Establece el idioma si no desea utilizar el idioma de su sistema.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="187"/> <location filename="../../src/aooptionsdialog.cpp" line="197"/>
<source>Callwords</source> <source>Callwords</source>
<translation>Palabras clave</translation> <translation>Palabras clave</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="212"/> <location filename="../../src/aooptionsdialog.cpp" line="222"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!&lt;br&gt;Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.&lt;/body&gt;&lt;/html&gt;</source> <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!&lt;br&gt;Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;Ingrese tantas palabras de llamada como desee.&lt;br&gt;Esto no distingue entre mayúsculas y minúsculas. ¡Asegúrese de dejar cada palabra en su propia línea!&lt;br&gt;No deje una línea con un espacio al final; recibirá una alerta cada vez que alguien use un espacio en sus mensajes.&lt;/body&gt;&lt;/html&gt;</translation> <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;Ingrese tantas palabras de llamada como desee.&lt;br&gt;Esto no distingue entre mayúsculas y minúsculas. ¡Asegúrese de dejar cada palabra en su propia línea!&lt;br&gt;No deje una línea con un espacio al final; recibirá una alerta cada vez que alguien use un espacio en sus mensajes.&lt;/body&gt;&lt;/html&gt;</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="218"/> <location filename="../../src/aooptionsdialog.cpp" line="228"/>
<source>Audio</source> <source>Audio</source>
<translation>Audio</translation> <translation>Audio</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="229"/> <location filename="../../src/aooptionsdialog.cpp" line="239"/>
<source>Audio device:</source> <source>Audio device:</source>
<translation>Dispositivo:</translation> <translation>Dispositivo:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="230"/> <location filename="../../src/aooptionsdialog.cpp" line="240"/>
<source>Sets the audio device for all sounds.</source> <source>Sets the audio device for all sounds.</source>
<translation>Establece el dispositivo de audio.</translation> <translation>Establece el dispositivo de audio.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="264"/> <location filename="../../src/aooptionsdialog.cpp" line="279"/>
<source>Music:</source> <source>Music:</source>
<translation>Música:</translation> <translation>Música:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="265"/> <location filename="../../src/aooptionsdialog.cpp" line="280"/>
<source>Sets the music&apos;s default volume.</source> <source>Sets the music&apos;s default volume.</source>
<translation>Establece el volumen predeterminado de la música.</translation> <translation>Establece el volumen predeterminado de la música.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="277"/> <location filename="../../src/aooptionsdialog.cpp" line="292"/>
<source>SFX:</source> <source>SFX:</source>
<translation>SFX:</translation> <translation>SFX:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="278"/> <location filename="../../src/aooptionsdialog.cpp" line="293"/>
<source>Sets the SFX&apos;s default volume. Interjections and actual sound effects count as &apos;SFX&apos;.</source> <source>Sets the SFX&apos;s default volume. Interjections and actual sound effects count as &apos;SFX&apos;.</source>
<translation>Establece el volumen predeterminado de SFX. Las interjecciones y los efectos de sonido reales cuentan como &apos;SFX&apos;.</translation> <translation>Establece el volumen predeterminado de SFX. Las interjecciones y los efectos de sonido reales cuentan como &apos;SFX&apos;.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="291"/> <location filename="../../src/aooptionsdialog.cpp" line="306"/>
<source>Blips:</source> <source>Blips:</source>
<translation>Blips:</translation> <translation>Blips:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="292"/> <location filename="../../src/aooptionsdialog.cpp" line="307"/>
<source>Sets the volume of the blips, the talking sound effects.</source> <source>Sets the volume of the blips, the talking sound effects.</source>
<translation>Establece el volumen de los blips, el sonido al hablar.</translation> <translation>Establece el volumen de los blips, el sonido al hablar.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="310"/> <location filename="../../src/aooptionsdialog.cpp" line="325"/>
<source>Blip rate:</source> <source>Blip rate:</source>
<translation>Tasa de blips:</translation> <translation>Tasa de blips:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="311"/> <location filename="../../src/aooptionsdialog.cpp" line="326"/>
<source>Sets the delay between playing the blip sounds.</source> <source>Sets the delay between playing the blip sounds.</source>
<translation>Establece el retraso entre la reproducción de los sonidos blip.</translation> <translation>Establece el retraso entre la reproducción de los sonidos blip.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="322"/> <location filename="../../src/aooptionsdialog.cpp" line="337"/>
<source>Blank blips:</source> <source>Blank blips:</source>
<translation>Blips en blanco:</translation> <translation>Blips en blanco:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="323"/> <location filename="../../src/aooptionsdialog.cpp" line="338"/>
<source>If true, the game will play a blip sound even when a space is &apos;being said&apos;.</source> <source>If true, the game will play a blip sound even when a space is &apos;being said&apos;.</source>
<translation>Si está marcada, el juego reproducirá un sonido blip incluso cuando se &apos;dice&apos; un espacio.</translation> <translation>Si está marcada, el juego reproducirá un sonido blip incluso cuando se &apos;dice&apos; un espacio.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="335"/> <location filename="../../src/aooptionsdialog.cpp" line="349"/>
<source>Enable Looping SFX:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="350"/>
<source>If true, the game will allow looping sound effects to play on preanimations.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="361"/>
<source>Kill Music On Objection:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="362"/>
<source>If true, the game will stop music when someone objects, like in the actual games.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="373"/>
<source>Casing</source> <source>Casing</source>
<translation>Caso</translation> <translation>Caso</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="349"/> <location filename="../../src/aooptionsdialog.cpp" line="387"/>
<source>This server supports case alerts.</source> <source>This server supports case alerts.</source>
<translation>Este servidor admite alertas de casos.</translation> <translation>Este servidor admite alertas de casos.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="351"/> <location filename="../../src/aooptionsdialog.cpp" line="389"/>
<source>This server does not support case alerts.</source> <source>This server does not support case alerts.</source>
<translation>Este servidor no admite alertas de casos.</translation> <translation>Este servidor no admite alertas de casos.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="352"/> <location filename="../../src/aooptionsdialog.cpp" line="390"/>
<source>Pretty self-explanatory.</source> <source>Pretty self-explanatory.</source>
<translation>Bastante autoexplicativo.</translation> <translation>Bastante autoexplicativo.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="359"/> <location filename="../../src/aooptionsdialog.cpp" line="397"/>
<source>Casing:</source> <source>Casing:</source>
<translation>Caso:</translation> <translation>Caso:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="360"/> <location filename="../../src/aooptionsdialog.cpp" line="398"/>
<source>If checked, you will get alerts about case announcements.</source> <source>If checked, you will get alerts about case announcements.</source>
<translation>Si está marcado, recibirá anuncios de casos.</translation> <translation>Si está marcado, recibirá anuncios de casos.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="373"/> <location filename="../../src/aooptionsdialog.cpp" line="411"/>
<source>Defense:</source> <source>Defense:</source>
<translation>Abogado:</translation> <translation>Abogado:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="374"/> <location filename="../../src/aooptionsdialog.cpp" line="412"/>
<source>If checked, you will get alerts about case announcements if a defense spot is open.</source> <source>If checked, you will get alerts about case announcements if a defense spot is open.</source>
<translation>Si está marcado, recibirá alertas sobre anuncios de casos si hay un lugar de abogado libre.</translation> <translation>Si está marcado, recibirá alertas sobre anuncios de casos si hay un lugar de abogado libre.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="387"/> <location filename="../../src/aooptionsdialog.cpp" line="425"/>
<source>Prosecution:</source> <source>Prosecution:</source>
<translation>Fiscal:</translation> <translation>Fiscal:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="388"/> <location filename="../../src/aooptionsdialog.cpp" line="426"/>
<source>If checked, you will get alerts about case announcements if a prosecutor spot is open.</source> <source>If checked, you will get alerts about case announcements if a prosecutor spot is open.</source>
<translation>Si está marcada, recibirá alertas sobre anuncios de casos si hay un puesto de fiscal libre.</translation> <translation>Si está marcada, recibirá alertas sobre anuncios de casos si hay un puesto de fiscal libre.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="401"/> <location filename="../../src/aooptionsdialog.cpp" line="439"/>
<source>Judge:</source> <source>Judge:</source>
<translation>Juez:</translation> <translation>Juez:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="402"/> <location filename="../../src/aooptionsdialog.cpp" line="440"/>
<source>If checked, you will get alerts about case announcements if the judge spot is open.</source> <source>If checked, you will get alerts about case announcements if the judge spot is open.</source>
<translation>Si está marcado, recibirá alertas sobre anuncios de casos si el puesto de juez está libre.</translation> <translation>Si está marcado, recibirá alertas sobre anuncios de casos si el puesto de juez está libre.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="415"/> <location filename="../../src/aooptionsdialog.cpp" line="453"/>
<source>Juror:</source> <source>Juror:</source>
<translation>Jurado:</translation> <translation>Jurado:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="416"/> <location filename="../../src/aooptionsdialog.cpp" line="454"/>
<source>If checked, you will get alerts about case announcements if a juror spot is open.</source> <source>If checked, you will get alerts about case announcements if a juror spot is open.</source>
<translation>Si está marcado, recibirá alertas sobre anuncios de casos si hay un puesto de jurado libre.</translation> <translation>Si está marcado, recibirá alertas sobre anuncios de casos si hay un puesto de jurado libre.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="429"/> <location filename="../../src/aooptionsdialog.cpp" line="467"/>
<source>Stenographer:</source> <source>Stenographer:</source>
<translation>Taquígrafo:</translation> <translation>Taquígrafo:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="430"/> <location filename="../../src/aooptionsdialog.cpp" line="468"/>
<source>If checked, you will get alerts about case announcements if a stenographer spot is open.</source> <source>If checked, you will get alerts about case announcements if a stenographer spot is open.</source>
<translation>Si está marcado, recibirá alertas sobre anuncios de casos si hay un lugar de taquígrafo libre.</translation> <translation>Si está marcado, recibirá alertas sobre anuncios de casos si hay un lugar de taquígrafo libre.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="443"/> <location filename="../../src/aooptionsdialog.cpp" line="481"/>
<source>CM:</source> <source>CM:</source>
<translation>CM:</translation> <translation>CM:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="444"/> <location filename="../../src/aooptionsdialog.cpp" line="482"/>
<source>If checked, you will appear amongst the potential CMs on the server.</source> <source>If checked, you will appear amongst the potential CMs on the server.</source>
<translation>Si está marcado, aparecerá entre los posibles CM en el servidor.</translation> <translation>Si está marcado, aparecerá entre los posibles CM en el servidor.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="457"/> <location filename="../../src/aooptionsdialog.cpp" line="493"/>
<source>Witness:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="494"/>
<source>If checked, you will appear amongst the potential witnesses on the server.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="507"/>
<source>Hosting cases:</source> <source>Hosting cases:</source>
<translation>Casos:</translation> <translation>Casos:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="458"/> <location filename="../../src/aooptionsdialog.cpp" line="508"/>
<source>If you&apos;re a CM, enter what cases you are willing to host.</source> <source>If you&apos;re a CM, enter what cases you are willing to host.</source>
<translation>Si eres un CM, ingresa qué casos estás dispuesto a organizar.</translation> <translation>Si eres un CM, ingresa qué casos estás dispuesto a organizar.</translation>
</message> </message>
@ -409,36 +455,40 @@ Razón: </translation>
<context> <context>
<name>Courtroom</name> <name>Courtroom</name>
<message> <message>
<location filename="../../src/charselect.cpp" line="21"/> <location filename="../../src/charselect.cpp" line="74"/>
<source>Password</source> <source>Password</source>
<translation>Contraseña</translation> <translation>Contraseña</translation>
</message> </message>
<message> <message>
<location filename="../../src/charselect.cpp" line="27"/> <location filename="../../src/charselect.cpp" line="80"/>
<source>Spectator</source> <source>Spectator</source>
<translation>Espectador</translation> <translation>Espectador</translation>
</message> </message>
<message> <message>
<location filename="../../src/charselect.cpp" line="30"/> <location filename="../../src/charselect.cpp" line="83"/>
<location filename="../../src/courtroom.cpp" line="138"/> <location filename="../../src/courtroom.cpp" line="164"/>
<source>Search</source> <source>Search</source>
<translation>Buscar</translation> <translation>Buscar</translation>
</message> </message>
<message> <message>
<location filename="../../src/charselect.cpp" line="35"/> <location filename="../../src/charselect.cpp" line="88"/>
<source>Passworded</source> <source>Passworded</source>
<translation>Contraseña</translation> <translation>Contraseña</translation>
</message> </message>
<message> <message>
<location filename="../../src/charselect.cpp" line="39"/> <location filename="../../src/charselect.cpp" line="92"/>
<source>Taken</source> <source>Taken</source>
<translation>En uso</translation> <translation>En uso</translation>
</message> </message>
<message> <message>
<location filename="../../src/charselect.cpp" line="218"/> <location filename="../../src/charselect.cpp" line="182"/>
<source>Could not find %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Generating chars: <source>Generating chars:
%1/%2</source> %1/%2</source>
<translation>Generando personajes: <translation type="vanished">Generando personajes:
%1/%2</translation> %1/%2</translation>
</message> </message>
<message> <message>
@ -448,260 +498,264 @@ Razón: </translation>
</translation> </translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="116"/> <location filename="../../src/courtroom.cpp" line="142"/>
<source>Showname</source> <source>Showname</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="120"/> <location filename="../../src/courtroom.cpp" line="146"/>
<source>Message</source> <source>Message</source>
<translation>Mensaje</translation> <translation>Mensaje</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="130"/> <location filename="../../src/courtroom.cpp" line="156"/>
<source>Name</source> <source>Name</source>
<translation>Nombre</translation> <translation>Nombre</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="183"/> <location filename="../../src/courtroom.cpp" line="209"/>
<source>Pre</source> <source>Pre</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="186"/> <location filename="../../src/courtroom.cpp" line="212"/>
<source>Flip</source> <source>Flip</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="190"/>
<source>Guard</source> <source>Guard</source>
<translation>Guardia</translation> <translation type="vanished">Guardia</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="195"/> <location filename="../../src/courtroom.cpp" line="223"/>
<location filename="../../src/courtroom.cpp" line="608"/> <location filename="../../src/courtroom.cpp" line="637"/>
<source>Casing</source> <source>Casing</source>
<translation>Caso</translation> <translation>Caso</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="200"/> <location filename="../../src/courtroom.cpp" line="228"/>
<source>Shownames</source> <source>Shownames</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="203"/> <location filename="../../src/courtroom.cpp" line="231"/>
<source>No Interrupt</source> <source>No Interrupt</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="217"/> <location filename="../../src/courtroom.cpp" line="246"/>
<source>White</source> <source>White</source>
<translation>Blanco</translation> <translation>Blanco</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="218"/> <location filename="../../src/courtroom.cpp" line="247"/>
<source>Green</source> <source>Green</source>
<translation>Verde</translation> <translation>Verde</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="219"/> <location filename="../../src/courtroom.cpp" line="248"/>
<source>Red</source> <source>Red</source>
<translation>Rojo</translation> <translation>Rojo</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="220"/> <location filename="../../src/courtroom.cpp" line="249"/>
<source>Orange</source> <source>Orange</source>
<translation>Naranja</translation> <translation>Naranja</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="221"/> <location filename="../../src/courtroom.cpp" line="250"/>
<source>Blue</source> <source>Blue</source>
<translation>Azul</translation> <translation>Azul</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="222"/> <location filename="../../src/courtroom.cpp" line="251"/>
<source>Yellow</source> <source>Yellow</source>
<translation>Amarillo</translation> <translation>Amarillo</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="223"/> <location filename="../../src/courtroom.cpp" line="252"/>
<source>Rainbow</source> <source>Rainbow</source>
<translation>Arcoíris</translation> <translation>Arcoíris</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="224"/> <location filename="../../src/courtroom.cpp" line="253"/>
<source>Pink</source> <source>Pink</source>
<translation>Rosado</translation> <translation>Rosado</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="225"/> <location filename="../../src/courtroom.cpp" line="254"/>
<source>Cyan</source> <source>Cyan</source>
<translation>Cian</translation> <translation>Cian</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="248"/> <location filename="../../src/courtroom.cpp" line="277"/>
<source>% offset</source> <source>% offset</source>
<translation>% desplazamiento</translation> <translation>% desplazamiento</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="566"/> <location filename="../../src/courtroom.cpp" line="595"/>
<source>Music</source> <source>Music</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="568"/> <location filename="../../src/courtroom.cpp" line="597"/>
<source>Sfx</source> <source>Sfx</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="570"/> <location filename="../../src/courtroom.cpp" line="599"/>
<source>Blips</source> <source>Blips</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="573"/> <location filename="../../src/courtroom.cpp" line="602"/>
<source>Log limit</source> <source>Log limit</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="596"/> <location filename="../../src/courtroom.cpp" line="625"/>
<source>Change character</source> <source>Change character</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="599"/> <location filename="../../src/courtroom.cpp" line="628"/>
<source>Reload theme</source> <source>Reload theme</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="602"/> <location filename="../../src/courtroom.cpp" line="631"/>
<source>Call mod</source> <source>Call mod</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="605"/> <location filename="../../src/courtroom.cpp" line="634"/>
<source>Settings</source> <source>Settings</source>
<translation>Ajustes</translation> <translation>Ajustes</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="611"/> <location filename="../../src/courtroom.cpp" line="640"/>
<source>A/M</source> <source>A/M</source>
<translation>A/M</translation> <translation>A/M</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="614"/> <location filename="../../src/courtroom.cpp" line="643"/>
<source>Preanim</source> <source>Preanim</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="692"/> <location filename="../../src/courtroom.cpp" line="724"/>
<source>Back to Lobby</source> <source>Back to Lobby</source>
<translation>Volver al lobby</translation> <translation>Volver al lobby</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2681"/> <location filename="../../src/courtroom.cpp" line="2838"/>
<source>You have been banned.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/courtroom.cpp" line="3033"/>
<source>You were granted the Guard button.</source> <source>You were granted the Guard button.</source>
<translation>Te ha sido otorgado el botón Guardia.</translation> <translation>Te ha sido otorgado el botón Guardia.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2688"/> <location filename="../../src/courtroom.cpp" line="3040"/>
<source>This does nothing, but there you go.</source> <source>This does nothing, but there you go.</source>
<translation>Esto no hace nada, pero ahí lo tienes.</translation> <translation>Esto no hace nada, pero ahí lo tienes.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2695"/> <location filename="../../src/courtroom.cpp" line="3047"/>
<source>You opened the settings menu.</source> <source>You opened the settings menu.</source>
<translation>Abriste el menú de configuración.</translation> <translation>Abriste el menú de configuración.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2710"/> <location filename="../../src/courtroom.cpp" line="3062"/>
<source>You will now pair up with </source> <source>You will now pair up with </source>
<translation>Ahora te emparejarás con </translation> <translation>Ahora te emparejarás con </translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2712"/> <location filename="../../src/courtroom.cpp" line="3064"/>
<source> if they also choose your character in return.</source> <source> if they also choose your character in return.</source>
<translation> si ellos también eligen a tu personaje a cambio.</translation> <translation> si ellos también eligen a tu personaje a cambio.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2718"/> <location filename="../../src/courtroom.cpp" line="3070"/>
<source>You are no longer paired with anyone.</source> <source>You are no longer paired with anyone.</source>
<translation>Ya no estás emparejado con nadie.</translation> <translation>Ya no estás emparejado con nadie.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2723"/> <location filename="../../src/courtroom.cpp" line="3075"/>
<source>Are you sure you typed that well? The char ID could not be recognised.</source> <source>Are you sure you typed that well? The char ID could not be recognised.</source>
<translation>¿Estás seguro de que lo escribiste bien? El ID de personaje no pudo ser reconocido.</translation> <translation>¿Estás seguro de que lo escribiste bien? El ID de personaje no pudo ser reconocido.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2739"/> <location filename="../../src/courtroom.cpp" line="3091"/>
<source>You have set your offset to </source> <source>You have set your offset to </source>
<translation>Ha configurado su desplazamiento en </translation> <translation>Ha configurado su desplazamiento en </translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2746"/> <location filename="../../src/courtroom.cpp" line="3098"/>
<source>Your offset must be between -100% and 100%!</source> <source>Your offset must be between -100% and 100%!</source>
<translation>¡Su desplazamiento debe estar entre -100% y 100%!</translation> <translation>¡Su desplazamiento debe estar entre -100% y 100%!</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2751"/> <location filename="../../src/courtroom.cpp" line="3103"/>
<source>That offset does not look like one.</source> <source>That offset does not look like one.</source>
<translation>Ese desplazamiento no se parece a uno.</translation> <translation>Ese desplazamiento no se parece a uno.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2757"/> <location filename="../../src/courtroom.cpp" line="3109"/>
<source>You switched your music and area list.</source> <source>You switched your music and area list.</source>
<translation>Cambiaste tu lista de música y área.</translation> <translation>Cambiaste tu lista de música y área.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2764"/> <location filename="../../src/courtroom.cpp" line="3116"/>
<source>You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this.</source> <source>You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this.</source>
<translation>Ha habilitado forzosamente funciones que el servidor puede no admitir. Es posible que no pueda hablar IC, o peor, debido a esto.</translation> <translation>Ha habilitado forzosamente funciones que el servidor puede no admitir. Es posible que no pueda hablar IC, o peor, debido a esto.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2775"/> <location filename="../../src/courtroom.cpp" line="3127"/>
<source>Your pre-animations interrupt again.</source> <source>Your pre-animations interrupt again.</source>
<translation>Sus pre-animaciones interrumpen de nuevo.</translation> <translation>Sus pre-animaciones interrumpen de nuevo.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2777"/> <location filename="../../src/courtroom.cpp" line="3129"/>
<source>Your pre-animations will not interrupt text.</source> <source>Your pre-animations will not interrupt text.</source>
<translation>Sus pre-animaciones no interrumpirán el texto.</translation> <translation>Sus pre-animaciones no interrumpirán el texto.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2788"/> <location filename="../../src/courtroom.cpp" line="3140"/>
<source>Couldn&apos;t open chatlog.txt to write into.</source> <source>Couldn&apos;t open chatlog.txt to write into.</source>
<translation>No se pudo abrir chatlog.txt para escribir.</translation> <translation>No se pudo abrir chatlog.txt para escribir.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2801"/> <location filename="../../src/courtroom.cpp" line="3153"/>
<source>The IC chatlog has been saved.</source> <source>The IC chatlog has been saved.</source>
<translation>El chat IC se ha guardado.</translation> <translation>El chat IC se ha guardado.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2813"/> <location filename="../../src/courtroom.cpp" line="3165"/>
<source>You don&apos;t have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it&apos;s likely the case file you&apos;re looking for can&apos;t be found in there.</source> <source>You don&apos;t have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it&apos;s likely the case file you&apos;re looking for can&apos;t be found in there.</source>
<translation>¡No tienes una carpeta `base/cases /`! Ha sido creada para ti. Pero debido a que no existia la carpeta, tampoco habían casos guardados ahí.</translation> <translation>¡No tienes una carpeta `base/cases /`! Ha sido creada para ti. Pero debido a que no existia la carpeta, tampoco habían casos guardados ahí.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2824"/> <location filename="../../src/courtroom.cpp" line="3176"/>
<source>You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. <source>You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini.
Cases you can load: %1</source> Cases you can load: %1</source>
<translation>¡Debe dar un nombre de archivo para cargar (no se necesita extensión)! Asegúrese de que esté en la carpeta `base/cases/` y de que tenga el formato correcto. <translation>¡Debe dar un nombre de archivo para cargar (no se necesita extensión)! Asegúrese de que esté en la carpeta `base/cases/` y de que tenga el formato correcto.
Casos que puede cargar: %1</translation> Casos que puede cargar: %1</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2845"/> <location filename="../../src/courtroom.cpp" line="3197"/>
<source>Case made by %1.</source> <source>Case made by %1.</source>
<translation>Caso hecho por %1.</translation> <translation>Caso hecho por %1.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2851"/> <location filename="../../src/courtroom.cpp" line="3203"/>
<source>Navigate to %1 for the CM doc.</source> <source>Navigate to %1 for the CM doc.</source>
<translation>Navegue a %1 para el documento del CM.</translation> <translation>Navegue a %1 para el documento del CM.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2870"/> <location filename="../../src/courtroom.cpp" line="3222"/>
<source>Your case &quot;%1&quot; was loaded!</source> <source>Your case &quot;%1&quot; was loaded!</source>
<translation>Su caso &quot;%1&quot; fue cargado!</translation> <translation>Su caso &quot;%1&quot; fue cargado!</translation>
</message> </message>
@ -712,7 +766,7 @@ Cases you can load: </source>
Casos que puede cargar: </translation> Casos que puede cargar: </translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2832"/> <location filename="../../src/courtroom.cpp" line="3184"/>
<source>Too many arguments to load a case! You only need one filename, without extension.</source> <source>Too many arguments to load a case! You only need one filename, without extension.</source>
<translation>¡Demasiados argumentos para cargar un caso! Solo necesita un nombre de archivo, sin extensión.</translation> <translation>¡Demasiados argumentos para cargar un caso! Solo necesita un nombre de archivo, sin extensión.</translation>
</message> </message>
@ -737,60 +791,65 @@ Casos que puede cargar: </translation>
<translation type="obsolete">&quot; fue cargado!</translation> <translation type="obsolete">&quot; fue cargado!</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2882"/> <location filename="../../src/courtroom.cpp" line="3234"/>
<source>You don&apos;t have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it&apos;s likely that you somehow deleted it.</source> <source>You don&apos;t have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it&apos;s likely that you somehow deleted it.</source>
<translation>¡No tienes una carpeta `base/cases /`! Fue creada para ti.</translation> <translation>¡No tienes una carpeta `base/cases /`! Fue creada para ti.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2893"/> <location filename="../../src/courtroom.cpp" line="3245"/>
<source>You need to give a filename to save (extension not needed) and the courtroom status!</source> <source>You need to give a filename to save (extension not needed) and the courtroom status!</source>
<translation>¡Debe dar un nombre de archivo para guardar (no se necesita la extensión) y el estado de la sala del tribunal!</translation> <translation>¡Debe dar un nombre de archivo para guardar (no se necesita la extensión) y el estado de la sala del tribunal!</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2901"/> <location filename="../../src/courtroom.cpp" line="3253"/>
<source>Too many arguments to save a case! You only need a filename without extension and the courtroom status!</source> <source>Too many arguments to save a case! You only need a filename without extension and the courtroom status!</source>
<translatorcomment>why two exclamations, seems excesive.</translatorcomment> <translatorcomment>why two exclamations, seems excesive.</translatorcomment>
<translation>¡Demasiados argumentos para salvar un caso! Solo necesita un nombre de archivo sin extensión y el estado de la sala del tribunal.</translation> <translation>¡Demasiados argumentos para salvar un caso! Solo necesita un nombre de archivo sin extensión y el estado de la sala del tribunal.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2923"/> <location filename="../../src/courtroom.cpp" line="3275"/>
<source>Succesfully saved, edit doc and cmdoc link on the ini!</source> <source>Succesfully saved, edit doc and cmdoc link on the ini!</source>
<translation>¡Guardado con éxito, puede editar el doc y doc link en el archivo ini!</translation> <translation>¡Guardado con éxito, puede editar el doc y doc link en el archivo ini!</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2951"/> <location filename="../../src/courtroom.cpp" line="3303"/>
<source>Master</source> <source>Master</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="583"/> <location filename="../../src/courtroom.cpp" line="612"/>
<location filename="../../src/courtroom.cpp" line="2959"/> <location filename="../../src/courtroom.cpp" line="3311"/>
<source>Server</source> <source>Server</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="3422"/> <location filename="../../src/courtroom.cpp" line="217"/>
<source>Disable Modcalls</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/courtroom.cpp" line="3793"/>
<source>Reason:</source> <source>Reason:</source>
<translation>Razón:</translation> <translation>Razón:</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="3423"/> <location filename="../../src/courtroom.cpp" line="3794"/>
<source>Call Moderator</source> <source>Call Moderator</source>
<translation>Llamar Moderador</translation> <translation>Llamar Moderador</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="3431"/> <location filename="../../src/courtroom.cpp" line="3802"/>
<location filename="../../src/courtroom.cpp" line="3434"/> <location filename="../../src/courtroom.cpp" line="3805"/>
<source>Error</source> <source>Error</source>
<translation>Error</translation> <translation>Error</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="3431"/> <location filename="../../src/courtroom.cpp" line="3802"/>
<source>You must provide a reason.</source> <source>You must provide a reason.</source>
<translation>Debes proporcionar una razón.</translation> <translation>Debes proporcionar una razón.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="3434"/> <location filename="../../src/courtroom.cpp" line="3805"/>
<source>The message is too long.</source> <source>The message is too long.</source>
<translation>El mensaje es muy largo.</translation> <translation>El mensaje es muy largo.</translation>
</message> </message>
@ -823,40 +882,40 @@ Casos que puede cargar: </translation>
<translation>Nombre</translation> <translation>Nombre</translation>
</message> </message>
<message> <message>
<location filename="../../src/lobby.cpp" line="74"/> <location filename="../../src/lobby.cpp" line="75"/>
<source>It doesn&apos;t look like your client is set up correctly. <source>It doesn&apos;t look like your client is set up correctly.
Did you download all resources correctly from tiny.cc/getao, including the large &apos;base&apos; folder?</source> Did you download all resources correctly from tiny.cc/getao, including the large &apos;base&apos; folder?</source>
<translation>No parece que su cliente esté configurado correctamente. <translation>No parece que su cliente esté configurado correctamente.
¿Descargó todos los recursos correctamente desde tiny.cc/getao, incluida la gran carpeta &apos;base&apos;?</translation> ¿Descargó todos los recursos correctamente desde tiny.cc/getao, incluida la gran carpeta &apos;base&apos;?</translation>
</message> </message>
<message> <message>
<location filename="../../src/lobby.cpp" line="104"/> <location filename="../../src/lobby.cpp" line="105"/>
<source>Version: %1</source> <source>Version: %1</source>
<translation>Versión: %1</translation> <translation>Versión: %1</translation>
</message> </message>
<message> <message>
<location filename="../../src/lobby.cpp" line="147"/> <location filename="../../src/lobby.cpp" line="148"/>
<source>Loading</source> <source>Loading</source>
<translation>Cargando</translation> <translation>Cargando</translation>
</message> </message>
<message> <message>
<location filename="../../src/lobby.cpp" line="151"/> <location filename="../../src/lobby.cpp" line="152"/>
<source>Cancel</source> <source>Cancel</source>
<translation>Cancelar</translation> <translation>Cancelar</translation>
</message> </message>
<message> <message>
<location filename="../../src/lobby.cpp" line="270"/> <location filename="../../src/lobby.cpp" line="275"/>
<source>&lt;h2&gt;Attorney Online %1&lt;/h2&gt;The courtroom drama simulator&lt;p&gt;&lt;b&gt;Source code:&lt;/b&gt; &lt;a href=&apos;https://github.com/AttorneyOnline/AO2-Client&apos;&gt;https://github.com/AttorneyOnline/AO2-Client&lt;/a&gt;&lt;p&gt;&lt;b&gt;Major development:&lt;/b&gt;&lt;br&gt;OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter&lt;p&gt;&lt;b&gt;Special thanks:&lt;/b&gt;&lt;br&gt;Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy</source> <source>&lt;h2&gt;Attorney Online %1&lt;/h2&gt;The courtroom drama simulator&lt;p&gt;&lt;b&gt;Source code:&lt;/b&gt; &lt;a href=&apos;https://github.com/AttorneyOnline/AO2-Client&apos;&gt;https://github.com/AttorneyOnline/AO2-Client&lt;/a&gt;&lt;p&gt;&lt;b&gt;Major development:&lt;/b&gt;&lt;br&gt;OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter&lt;p&gt;&lt;b&gt;Special thanks:&lt;/b&gt;&lt;br&gt;Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy</source>
<translation>&lt;h2&gt;Attorney Online %1&lt;/h2&gt;El simulador de drama legal&lt;p&gt;&lt;b&gt;Código fuente:&lt;/b&gt; &lt;a href=&apos;https://github.com/AttorneyOnline/AO2-Client&apos;&gt;https: //github.com/AttorneyOnline/AO2-Client&lt;/a&gt;&lt;p&gt;&lt;b&gt;Desarrollo mayor:&lt;/b&gt; &lt;br&gt;OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter&lt;p&gt;&lt;b&gt;Agradecimiento especial:&lt;/b&gt;&lt;br&gt;Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (diseño de interfaz de usuario), Draxirch (diseño de interfaz de usuario), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy</translation> <translation>&lt;h2&gt;Attorney Online %1&lt;/h2&gt;El simulador de drama legal&lt;p&gt;&lt;b&gt;Código fuente:&lt;/b&gt; &lt;a href=&apos;https://github.com/AttorneyOnline/AO2-Client&apos;&gt;https: //github.com/AttorneyOnline/AO2-Client&lt;/a&gt;&lt;p&gt;&lt;b&gt;Desarrollo mayor:&lt;/b&gt; &lt;br&gt;OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter&lt;p&gt;&lt;b&gt;Agradecimiento especial:&lt;/b&gt;&lt;br&gt;Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (diseño de interfaz de usuario), Draxirch (diseño de interfaz de usuario), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy</translation>
</message> </message>
<message> <message>
<location filename="../../src/lobby.cpp" line="376"/> <location filename="../../src/lobby.cpp" line="393"/>
<source>Online: %1/%2</source> <source>Online: %1/%2</source>
<translation>En línea: %1/%2</translation> <translation>En línea: %1/%2</translation>
</message> </message>
<message> <message>
<location filename="../../src/lobby.cpp" line="114"/> <location filename="../../src/lobby.cpp" line="115"/>
<location filename="../../src/lobby.cpp" line="316"/> <location filename="../../src/lobby.cpp" line="325"/>
<source>Offline</source> <source>Offline</source>
<translation>Fuera de línea</translation> <translation>Fuera de línea</translation>
</message> </message>

View File

@ -21,60 +21,61 @@ Please check your Internet connection and firewall, and please try again.</sourc
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="106"/> <location filename="../../src/packet_distribution.cpp" line="135"/>
<source>Outdated version! Your version: %1 <source>Outdated version! Your version: %1
Please go to aceattorneyonline.com to update.</source> Please go to aceattorneyonline.com to update.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="114"/> <location filename="../../src/packet_distribution.cpp" line="143"/>
<source>You have been exiled from AO. <source>You have been exiled from AO.
Have a nice day.</source> Have a nice day.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="249"/> <location filename="../../src/packet_distribution.cpp" line="283"/>
<source>Attorney Online 2</source> <source>Attorney Online 2</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="275"/> <location filename="../../src/packet_distribution.cpp" line="309"/>
<source>Loading</source> <source>Loading</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="363"/> <location filename="../../src/packet_distribution.cpp" line="397"/>
<source>Loading evidence: <source>Loading evidence:
%1/%2</source> %1/%2</source>
<translation>: %1/%2</translation> <translation>: %1/%2</translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="395"/> <location filename="../../src/packet_distribution.cpp" line="429"/>
<location filename="../../src/packet_distribution.cpp" line="490"/> <location filename="../../src/packet_distribution.cpp" line="538"/>
<source>Loading music: <source>Loading music:
%1/%2</source> %1/%2</source>
<translation>: %1/%2</translation> <translation>: %1/%2</translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="467"/> <location filename="../../src/packet_distribution.cpp" line="353"/>
<location filename="../../src/packet_distribution.cpp" line="501"/>
<source>Loading chars: <source>Loading chars:
%1/%2</source> %1/%2</source>
<translation>: %1/%2</translation> <translation>: %1/%2</translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="642"/> <location filename="../../src/packet_distribution.cpp" line="692"/>
<source>You have been kicked from the server. <source>You have been kicked from the server.
Reason: %1</source> Reason: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="651"/> <location filename="../../src/packet_distribution.cpp" line="701"/>
<source>You have been banned from the server. <source>You have been banned from the server.
Reason: %1</source> Reason: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="659"/> <location filename="../../src/packet_distribution.cpp" line="709"/>
<source>You are banned on this server. <source>You are banned on this server.
Reason: %1</source> Reason: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -117,271 +118,316 @@ Reason: %1</source>
<source>Stenographer needed</source> <source>Stenographer needed</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../../src/aocaseannouncerdialog.cpp" line="58"/>
<source>Witness needed</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>AOOptionsDialog</name> <name>AOOptionsDialog</name>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="11"/> <location filename="../../src/aooptionsdialog.cpp" line="10"/>
<source>Settings</source> <source>Settings</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="40"/> <location filename="../../src/aooptionsdialog.cpp" line="39"/>
<source>Gameplay</source> <source>Gameplay</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="51"/> <location filename="../../src/aooptionsdialog.cpp" line="50"/>
<source>Theme:</source> <source>Theme:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="52"/> <location filename="../../src/aooptionsdialog.cpp" line="51"/>
<source>Sets the theme used in-game. If the new theme changes the lobby&apos;s look as well, you&apos;ll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it.</source> <source>Sets the theme used in-game. If the new theme changes the lobby&apos;s look as well, you&apos;ll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="81"/> <location filename="../../src/aooptionsdialog.cpp" line="80"/>
<source>Log goes downwards:</source> <source>Log goes downwards:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="82"/> <location filename="../../src/aooptionsdialog.cpp" line="81"/>
<source>If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked.</source> <source>If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="94"/> <location filename="../../src/aooptionsdialog.cpp" line="93"/>
<source>Log length:</source> <source>Log length:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="95"/> <location filename="../../src/aooptionsdialog.cpp" line="94"/>
<source>The amount of messages the IC chatlog will keep before deleting older messages. A value of 0 or below counts as &apos;infinite&apos;.</source> <source>The amount of messages the IC chatlog will keep before deleting older messages. A value of 0 or below counts as &apos;infinite&apos;.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="113"/> <location filename="../../src/aooptionsdialog.cpp" line="112"/>
<source>Default username:</source> <source>Default username:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="114"/> <location filename="../../src/aooptionsdialog.cpp" line="113"/>
<source>Your OOC name will be automatically set to this value when you join a server.</source> <source>Your OOC name will be automatically set to this value when you join a server.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="126"/> <location filename="../../src/aooptionsdialog.cpp" line="125"/>
<source>Custom shownames:</source> <source>Custom shownames:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="127"/> <location filename="../../src/aooptionsdialog.cpp" line="126"/>
<source>Gives the default value for the in-game &apos;Custom shownames&apos; tickbox, which in turn determines whether the client should display custom in-character names.</source> <source>Gives the default value for the in-game &apos;Custom shownames&apos; tickbox, which in turn determines whether the client should display custom in-character names.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="145"/> <location filename="../../src/aooptionsdialog.cpp" line="144"/>
<source>Backup MS:</source> <source>Backup MS:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="146"/> <location filename="../../src/aooptionsdialog.cpp" line="145"/>
<source>If the built-in server lookups fail, the game will try the address given here and use it as a backup master server address.</source> <source>If the built-in server lookups fail, the game will try the address given here and use it as a backup master server address.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="158"/> <location filename="../../src/aooptionsdialog.cpp" line="157"/>
<source>Discord:</source> <source>Discord:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="159"/> <location filename="../../src/aooptionsdialog.cpp" line="158"/>
<source>Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for.</source> <source>Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="170"/>
<source>Allow Shake/Flash:</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="171"/> <location filename="../../src/aooptionsdialog.cpp" line="171"/>
<source>Allows screenshaking and flashing. Disable this if you have concerns or issues with photosensitivity and/or seizures.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="181"/>
<source>Language:</source> <source>Language:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="172"/> <location filename="../../src/aooptionsdialog.cpp" line="182"/>
<source>Sets the language if you don&apos;t want to use your system language.</source> <source>Sets the language if you don&apos;t want to use your system language.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="186"/> <location filename="../../src/aooptionsdialog.cpp" line="197"/>
<source>Callwords</source> <source>Callwords</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="211"/> <location filename="../../src/aooptionsdialog.cpp" line="222"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!&lt;br&gt;Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.&lt;/body&gt;&lt;/html&gt;</source> <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!&lt;br&gt;Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="217"/> <location filename="../../src/aooptionsdialog.cpp" line="228"/>
<source>Audio</source> <source>Audio</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="228"/> <location filename="../../src/aooptionsdialog.cpp" line="239"/>
<source>Audio device:</source> <source>Audio device:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="229"/> <location filename="../../src/aooptionsdialog.cpp" line="240"/>
<source>Sets the audio device for all sounds.</source> <source>Sets the audio device for all sounds.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="263"/> <location filename="../../src/aooptionsdialog.cpp" line="279"/>
<source>Music:</source> <source>Music:</source>
<translation>:</translation> <translation>:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="264"/> <location filename="../../src/aooptionsdialog.cpp" line="280"/>
<source>Sets the music&apos;s default volume.</source> <source>Sets the music&apos;s default volume.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="276"/> <location filename="../../src/aooptionsdialog.cpp" line="292"/>
<source>SFX:</source> <source>SFX:</source>
<translation>:</translation> <translation>:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="277"/> <location filename="../../src/aooptionsdialog.cpp" line="293"/>
<source>Sets the SFX&apos;s default volume. Interjections and actual sound effects count as &apos;SFX&apos;.</source> <source>Sets the SFX&apos;s default volume. Interjections and actual sound effects count as &apos;SFX&apos;.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="290"/> <location filename="../../src/aooptionsdialog.cpp" line="306"/>
<source>Blips:</source> <source>Blips:</source>
<translation>:</translation> <translation>:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="291"/> <location filename="../../src/aooptionsdialog.cpp" line="307"/>
<source>Sets the volume of the blips, the talking sound effects.</source> <source>Sets the volume of the blips, the talking sound effects.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="309"/> <location filename="../../src/aooptionsdialog.cpp" line="325"/>
<source>Blip rate:</source> <source>Blip rate:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="310"/> <location filename="../../src/aooptionsdialog.cpp" line="326"/>
<source>Sets the delay between playing the blip sounds.</source> <source>Sets the delay between playing the blip sounds.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="321"/> <location filename="../../src/aooptionsdialog.cpp" line="337"/>
<source>Blank blips:</source> <source>Blank blips:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="322"/> <location filename="../../src/aooptionsdialog.cpp" line="338"/>
<source>If true, the game will play a blip sound even when a space is &apos;being said&apos;.</source> <source>If true, the game will play a blip sound even when a space is &apos;being said&apos;.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="334"/> <location filename="../../src/aooptionsdialog.cpp" line="349"/>
<source>Casing</source> <source>Enable Looping SFX:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="348"/>
<source>This server supports case alerts.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="350"/> <location filename="../../src/aooptionsdialog.cpp" line="350"/>
<source>This server does not support case alerts.</source> <source>If true, the game will allow looping sound effects to play on preanimations.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="351"/> <location filename="../../src/aooptionsdialog.cpp" line="361"/>
<source>Pretty self-explanatory.</source> <source>Kill Music On Objection:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="358"/> <location filename="../../src/aooptionsdialog.cpp" line="362"/>
<source>Casing:</source> <source>If true, the game will stop music when someone objects, like in the actual games.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="359"/>
<source>If checked, you will get alerts about case announcements.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="372"/>
<source>Defense:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="373"/> <location filename="../../src/aooptionsdialog.cpp" line="373"/>
<source>If checked, you will get alerts about case announcements if a defense spot is open.</source> <source>Casing</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="386"/>
<source>Prosecution:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="387"/> <location filename="../../src/aooptionsdialog.cpp" line="387"/>
<source>This server supports case alerts.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="389"/>
<source>This server does not support case alerts.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="390"/>
<source>Pretty self-explanatory.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="397"/>
<source>Casing:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="398"/>
<source>If checked, you will get alerts about case announcements.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="411"/>
<source>Defense:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="412"/>
<source>If checked, you will get alerts about case announcements if a defense spot is open.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="425"/>
<source>Prosecution:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="426"/>
<source>If checked, you will get alerts about case announcements if a prosecutor spot is open.</source> <source>If checked, you will get alerts about case announcements if a prosecutor spot is open.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="400"/> <location filename="../../src/aooptionsdialog.cpp" line="439"/>
<source>Judge:</source> <source>Judge:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="401"/> <location filename="../../src/aooptionsdialog.cpp" line="440"/>
<source>If checked, you will get alerts about case announcements if the judge spot is open.</source> <source>If checked, you will get alerts about case announcements if the judge spot is open.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="414"/> <location filename="../../src/aooptionsdialog.cpp" line="453"/>
<source>Juror:</source> <source>Juror:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="415"/> <location filename="../../src/aooptionsdialog.cpp" line="454"/>
<source>If checked, you will get alerts about case announcements if a juror spot is open.</source> <source>If checked, you will get alerts about case announcements if a juror spot is open.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="428"/> <location filename="../../src/aooptionsdialog.cpp" line="467"/>
<source>Stenographer:</source> <source>Stenographer:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="429"/> <location filename="../../src/aooptionsdialog.cpp" line="468"/>
<source>If checked, you will get alerts about case announcements if a stenographer spot is open.</source> <source>If checked, you will get alerts about case announcements if a stenographer spot is open.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="442"/> <location filename="../../src/aooptionsdialog.cpp" line="481"/>
<source>CM:</source> <source>CM:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="443"/> <location filename="../../src/aooptionsdialog.cpp" line="482"/>
<source>If checked, you will appear amongst the potential CMs on the server.</source> <source>If checked, you will appear amongst the potential CMs on the server.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="456"/> <location filename="../../src/aooptionsdialog.cpp" line="493"/>
<source>Witness:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="494"/>
<source>If checked, you will appear amongst the potential witnesses on the server.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="507"/>
<source>Hosting cases:</source> <source>Hosting cases:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="457"/> <location filename="../../src/aooptionsdialog.cpp" line="508"/>
<source>If you&apos;re a CM, enter what cases you are willing to host.</source> <source>If you&apos;re a CM, enter what cases you are willing to host.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -389,353 +435,361 @@ Reason: %1</source>
<context> <context>
<name>Courtroom</name> <name>Courtroom</name>
<message> <message>
<location filename="../../src/charselect.cpp" line="21"/> <location filename="../../src/charselect.cpp" line="74"/>
<source>Password</source> <source>Password</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/charselect.cpp" line="27"/> <location filename="../../src/charselect.cpp" line="80"/>
<source>Spectator</source> <source>Spectator</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../../src/charselect.cpp" line="30"/> <location filename="../../src/charselect.cpp" line="83"/>
<location filename="../../src/courtroom.cpp" line="138"/> <location filename="../../src/courtroom.cpp" line="164"/>
<source>Search</source> <source>Search</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/charselect.cpp" line="35"/> <location filename="../../src/charselect.cpp" line="88"/>
<source>Passworded</source> <source>Passworded</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/charselect.cpp" line="39"/> <location filename="../../src/charselect.cpp" line="92"/>
<source>Taken</source> <source>Taken</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/charselect.cpp" line="217"/> <location filename="../../src/charselect.cpp" line="182"/>
<source>Generating chars: <source>Could not find %1</source>
%1/%2</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="116"/> <location filename="../../src/courtroom.cpp" line="142"/>
<source>Showname</source> <source>Showname</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="120"/> <location filename="../../src/courtroom.cpp" line="146"/>
<source>Message</source> <source>Message</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="130"/> <location filename="../../src/courtroom.cpp" line="156"/>
<source>Name</source> <source>Name</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="183"/> <location filename="../../src/courtroom.cpp" line="209"/>
<source>Pre</source> <source>Pre</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="186"/> <location filename="../../src/courtroom.cpp" line="212"/>
<source>Flip</source> <source>Flip</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="190"/>
<source>Guard</source> <source>Guard</source>
<translation></translation> <translation type="vanished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="195"/> <location filename="../../src/courtroom.cpp" line="223"/>
<location filename="../../src/courtroom.cpp" line="608"/> <location filename="../../src/courtroom.cpp" line="637"/>
<source>Casing</source> <source>Casing</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="200"/> <location filename="../../src/courtroom.cpp" line="228"/>
<source>Shownames</source> <source>Shownames</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="203"/> <location filename="../../src/courtroom.cpp" line="231"/>
<source>No Interrupt</source> <source>No Interrupt</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="217"/> <location filename="../../src/courtroom.cpp" line="246"/>
<source>White</source> <source>White</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="218"/> <location filename="../../src/courtroom.cpp" line="247"/>
<source>Green</source> <source>Green</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="219"/> <location filename="../../src/courtroom.cpp" line="248"/>
<source>Red</source> <source>Red</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="220"/> <location filename="../../src/courtroom.cpp" line="249"/>
<source>Orange</source> <source>Orange</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="221"/> <location filename="../../src/courtroom.cpp" line="250"/>
<source>Blue</source> <source>Blue</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="222"/> <location filename="../../src/courtroom.cpp" line="251"/>
<source>Yellow</source> <source>Yellow</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2688"/> <location filename="../../src/courtroom.cpp" line="3040"/>
<source>This does nothing, but there you go.</source> <source>This does nothing, but there you go.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2824"/> <location filename="../../src/courtroom.cpp" line="3176"/>
<source>You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. <source>You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini.
Cases you can load: %1</source> Cases you can load: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2845"/> <location filename="../../src/courtroom.cpp" line="3197"/>
<source>Case made by %1.</source> <source>Case made by %1.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2851"/> <location filename="../../src/courtroom.cpp" line="3203"/>
<source>Navigate to %1 for the CM doc.</source> <source>Navigate to %1 for the CM doc.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2870"/> <location filename="../../src/courtroom.cpp" line="3222"/>
<source>Your case &quot;%1&quot; was loaded!</source> <source>Your case &quot;%1&quot; was loaded!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="583"/> <location filename="../../src/courtroom.cpp" line="612"/>
<location filename="../../src/courtroom.cpp" line="2959"/> <location filename="../../src/courtroom.cpp" line="3311"/>
<source>Server</source> <source>Server</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="692"/> <location filename="../../src/courtroom.cpp" line="724"/>
<source>Back to Lobby</source> <source>Back to Lobby</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="223"/> <location filename="../../src/courtroom.cpp" line="252"/>
<source>Rainbow</source> <source>Rainbow</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="224"/> <location filename="../../src/courtroom.cpp" line="217"/>
<source>Disable Modcalls</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/courtroom.cpp" line="253"/>
<source>Pink</source> <source>Pink</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="225"/> <location filename="../../src/courtroom.cpp" line="254"/>
<source>Cyan</source> <source>Cyan</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="248"/> <location filename="../../src/courtroom.cpp" line="277"/>
<source>% offset</source> <source>% offset</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="566"/> <location filename="../../src/courtroom.cpp" line="595"/>
<source>Music</source> <source>Music</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="568"/> <location filename="../../src/courtroom.cpp" line="597"/>
<source>Sfx</source> <source>Sfx</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="570"/> <location filename="../../src/courtroom.cpp" line="599"/>
<source>Blips</source> <source>Blips</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="573"/> <location filename="../../src/courtroom.cpp" line="602"/>
<source>Log limit</source> <source>Log limit</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="596"/> <location filename="../../src/courtroom.cpp" line="625"/>
<source>Change character</source> <source>Change character</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="599"/> <location filename="../../src/courtroom.cpp" line="628"/>
<source>Reload theme</source> <source>Reload theme</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="602"/> <location filename="../../src/courtroom.cpp" line="631"/>
<source>Call mod</source> <source>Call mod</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="605"/> <location filename="../../src/courtroom.cpp" line="634"/>
<source>Settings</source> <source>Settings</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="611"/> <location filename="../../src/courtroom.cpp" line="640"/>
<source>A/M</source> <source>A/M</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="614"/> <location filename="../../src/courtroom.cpp" line="643"/>
<source>Preanim</source> <source>Preanim</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2681"/> <location filename="../../src/courtroom.cpp" line="2838"/>
<source>You have been banned.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/courtroom.cpp" line="3033"/>
<source>You were granted the Guard button.</source> <source>You were granted the Guard button.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2695"/> <location filename="../../src/courtroom.cpp" line="3047"/>
<source>You opened the settings menu.</source> <source>You opened the settings menu.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2710"/> <location filename="../../src/courtroom.cpp" line="3062"/>
<source>You will now pair up with </source> <source>You will now pair up with </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2712"/> <location filename="../../src/courtroom.cpp" line="3064"/>
<source> if they also choose your character in return.</source> <source> if they also choose your character in return.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2718"/> <location filename="../../src/courtroom.cpp" line="3070"/>
<source>You are no longer paired with anyone.</source> <source>You are no longer paired with anyone.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2723"/> <location filename="../../src/courtroom.cpp" line="3075"/>
<source>Are you sure you typed that well? The char ID could not be recognised.</source> <source>Are you sure you typed that well? The char ID could not be recognised.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2739"/> <location filename="../../src/courtroom.cpp" line="3091"/>
<source>You have set your offset to </source> <source>You have set your offset to </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2746"/> <location filename="../../src/courtroom.cpp" line="3098"/>
<source>Your offset must be between -100% and 100%!</source> <source>Your offset must be between -100% and 100%!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2751"/> <location filename="../../src/courtroom.cpp" line="3103"/>
<source>That offset does not look like one.</source> <source>That offset does not look like one.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2757"/> <location filename="../../src/courtroom.cpp" line="3109"/>
<source>You switched your music and area list.</source> <source>You switched your music and area list.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2764"/> <location filename="../../src/courtroom.cpp" line="3116"/>
<source>You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this.</source> <source>You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2775"/> <location filename="../../src/courtroom.cpp" line="3127"/>
<source>Your pre-animations interrupt again.</source> <source>Your pre-animations interrupt again.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2777"/> <location filename="../../src/courtroom.cpp" line="3129"/>
<source>Your pre-animations will not interrupt text.</source> <source>Your pre-animations will not interrupt text.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2788"/> <location filename="../../src/courtroom.cpp" line="3140"/>
<source>Couldn&apos;t open chatlog.txt to write into.</source> <source>Couldn&apos;t open chatlog.txt to write into.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2801"/> <location filename="../../src/courtroom.cpp" line="3153"/>
<source>The IC chatlog has been saved.</source> <source>The IC chatlog has been saved.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2813"/> <location filename="../../src/courtroom.cpp" line="3165"/>
<source>You don&apos;t have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it&apos;s likely the case file you&apos;re looking for can&apos;t be found in there.</source> <source>You don&apos;t have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it&apos;s likely the case file you&apos;re looking for can&apos;t be found in there.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2832"/> <location filename="../../src/courtroom.cpp" line="3184"/>
<source>Too many arguments to load a case! You only need one filename, without extension.</source> <source>Too many arguments to load a case! You only need one filename, without extension.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2882"/> <location filename="../../src/courtroom.cpp" line="3234"/>
<source>You don&apos;t have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it&apos;s likely that you somehow deleted it.</source> <source>You don&apos;t have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it&apos;s likely that you somehow deleted it.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2893"/> <location filename="../../src/courtroom.cpp" line="3245"/>
<source>You need to give a filename to save (extension not needed) and the courtroom status!</source> <source>You need to give a filename to save (extension not needed) and the courtroom status!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2901"/> <location filename="../../src/courtroom.cpp" line="3253"/>
<source>Too many arguments to save a case! You only need a filename without extension and the courtroom status!</source> <source>Too many arguments to save a case! You only need a filename without extension and the courtroom status!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2923"/> <location filename="../../src/courtroom.cpp" line="3275"/>
<source>Succesfully saved, edit doc and cmdoc link on the ini!</source> <source>Succesfully saved, edit doc and cmdoc link on the ini!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2951"/> <location filename="../../src/courtroom.cpp" line="3303"/>
<source>Master</source> <source>Master</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="3422"/> <location filename="../../src/courtroom.cpp" line="3793"/>
<source>Reason:</source> <source>Reason:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="3423"/> <location filename="../../src/courtroom.cpp" line="3794"/>
<source>Call Moderator</source> <source>Call Moderator</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="3431"/> <location filename="../../src/courtroom.cpp" line="3802"/>
<location filename="../../src/courtroom.cpp" line="3434"/> <location filename="../../src/courtroom.cpp" line="3805"/>
<source>Error</source> <source>Error</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="3431"/> <location filename="../../src/courtroom.cpp" line="3802"/>
<source>You must provide a reason.</source> <source>You must provide a reason.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="3434"/> <location filename="../../src/courtroom.cpp" line="3805"/>
<source>The message is too long.</source> <source>The message is too long.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -791,39 +845,39 @@ Cases you can load: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/lobby.cpp" line="74"/> <location filename="../../src/lobby.cpp" line="75"/>
<source>It doesn&apos;t look like your client is set up correctly. <source>It doesn&apos;t look like your client is set up correctly.
Did you download all resources correctly from tiny.cc/getao, including the large &apos;base&apos; folder?</source> Did you download all resources correctly from tiny.cc/getao, including the large &apos;base&apos; folder?</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/lobby.cpp" line="104"/> <location filename="../../src/lobby.cpp" line="105"/>
<source>Version: %1</source> <source>Version: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/lobby.cpp" line="147"/> <location filename="../../src/lobby.cpp" line="148"/>
<source>Loading</source> <source>Loading</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../../src/lobby.cpp" line="151"/> <location filename="../../src/lobby.cpp" line="152"/>
<source>Cancel</source> <source>Cancel</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../../src/lobby.cpp" line="270"/> <location filename="../../src/lobby.cpp" line="275"/>
<source>&lt;h2&gt;Attorney Online %1&lt;/h2&gt;The courtroom drama simulator&lt;p&gt;&lt;b&gt;Source code:&lt;/b&gt; &lt;a href=&apos;https://github.com/AttorneyOnline/AO2-Client&apos;&gt;https://github.com/AttorneyOnline/AO2-Client&lt;/a&gt;&lt;p&gt;&lt;b&gt;Major development:&lt;/b&gt;&lt;br&gt;OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter&lt;p&gt;&lt;b&gt;Special thanks:&lt;/b&gt;&lt;br&gt;Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy</source> <source>&lt;h2&gt;Attorney Online %1&lt;/h2&gt;The courtroom drama simulator&lt;p&gt;&lt;b&gt;Source code:&lt;/b&gt; &lt;a href=&apos;https://github.com/AttorneyOnline/AO2-Client&apos;&gt;https://github.com/AttorneyOnline/AO2-Client&lt;/a&gt;&lt;p&gt;&lt;b&gt;Major development:&lt;/b&gt;&lt;br&gt;OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter&lt;p&gt;&lt;b&gt;Special thanks:&lt;/b&gt;&lt;br&gt;Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/lobby.cpp" line="376"/> <location filename="../../src/lobby.cpp" line="393"/>
<source>Online: %1/%2</source> <source>Online: %1/%2</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/lobby.cpp" line="114"/> <location filename="../../src/lobby.cpp" line="115"/>
<location filename="../../src/lobby.cpp" line="316"/> <location filename="../../src/lobby.cpp" line="325"/>
<source>Offline</source> <source>Offline</source>
<translation></translation> <translation></translation>
</message> </message>

View File

@ -23,67 +23,68 @@ Używamy wielu głównych serwerów, aby zminimalizować każdą możliwą przer
Proszę sprawdzić swoje połączenie internetowe oraz zaporę ogniową i spróbować ponownie.</translation> Proszę sprawdzić swoje połączenie internetowe oraz zaporę ogniową i spróbować ponownie.</translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="106"/> <location filename="../../src/packet_distribution.cpp" line="135"/>
<source>Outdated version! Your version: %1 <source>Outdated version! Your version: %1
Please go to aceattorneyonline.com to update.</source> Please go to aceattorneyonline.com to update.</source>
<translation>Nieaktualna wersja! Twoja wersja: %1 <translation>Nieaktualna wersja! Twoja wersja: %1
Proszę udać się do aceattorneyonline.com, aby zaktualizować.</translation> Proszę udać się do aceattorneyonline.com, aby zaktualizować.</translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="114"/> <location filename="../../src/packet_distribution.cpp" line="143"/>
<source>You have been exiled from AO. <source>You have been exiled from AO.
Have a nice day.</source> Have a nice day.</source>
<translation>Zostałeś wygnany z AO2. <translation>Zostałeś wygnany z AO2.
Życzę miłego dnia.</translation> Życzę miłego dnia.</translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="249"/> <location filename="../../src/packet_distribution.cpp" line="283"/>
<source>Attorney Online 2</source> <source>Attorney Online 2</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="275"/> <location filename="../../src/packet_distribution.cpp" line="309"/>
<source>Loading</source> <source>Loading</source>
<translation>Ładowanie</translation> <translation>Ładowanie</translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="363"/> <location filename="../../src/packet_distribution.cpp" line="397"/>
<source>Loading evidence: <source>Loading evidence:
%1/%2</source> %1/%2</source>
<translation>Ładowanie dowodów: <translation>Ładowanie dowodów:
%1/%2</translation> %1/%2</translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="395"/> <location filename="../../src/packet_distribution.cpp" line="429"/>
<location filename="../../src/packet_distribution.cpp" line="490"/> <location filename="../../src/packet_distribution.cpp" line="538"/>
<source>Loading music: <source>Loading music:
%1/%2</source> %1/%2</source>
<translation>Ładowanie muzyki: <translation>Ładowanie muzyki:
%1/%2</translation> %1/%2</translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="467"/> <location filename="../../src/packet_distribution.cpp" line="353"/>
<location filename="../../src/packet_distribution.cpp" line="501"/>
<source>Loading chars: <source>Loading chars:
%1/%2</source> %1/%2</source>
<translation>Ładowanie postaci: <translation>Ładowanie postaci:
%1/%2</translation> %1/%2</translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="642"/> <location filename="../../src/packet_distribution.cpp" line="692"/>
<source>You have been kicked from the server. <source>You have been kicked from the server.
Reason: %1</source> Reason: %1</source>
<translation>Zostałeś wyrzucony z tego serwera. <translation>Zostałeś wyrzucony z tego serwera.
Powód: %1</translation> Powód: %1</translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="651"/> <location filename="../../src/packet_distribution.cpp" line="701"/>
<source>You have been banned from the server. <source>You have been banned from the server.
Reason: %1</source> Reason: %1</source>
<translation>Zostałeś zbanowany z tego serwera. <translation>Zostałeś zbanowany z tego serwera.
Powód: %1</translation> Powód: %1</translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="659"/> <location filename="../../src/packet_distribution.cpp" line="709"/>
<source>You are banned on this server. <source>You are banned on this server.
Reason: %1</source> Reason: %1</source>
<translation>Jesteś zbanowany na tym serwerze. <translation>Jesteś zbanowany na tym serwerze.
@ -127,272 +128,317 @@ Powód: %1</translation>
<source>Stenographer needed</source> <source>Stenographer needed</source>
<translation>Potrzebny stenograf</translation> <translation>Potrzebny stenograf</translation>
</message> </message>
<message>
<location filename="../../src/aocaseannouncerdialog.cpp" line="58"/>
<source>Witness needed</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>AOOptionsDialog</name> <name>AOOptionsDialog</name>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="11"/> <location filename="../../src/aooptionsdialog.cpp" line="10"/>
<source>Settings</source> <source>Settings</source>
<translation>Ustawienia</translation> <translation>Ustawienia</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="40"/> <location filename="../../src/aooptionsdialog.cpp" line="39"/>
<source>Gameplay</source> <source>Gameplay</source>
<translation>Rozgrywka</translation> <translation>Rozgrywka</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="51"/> <location filename="../../src/aooptionsdialog.cpp" line="50"/>
<source>Theme:</source> <source>Theme:</source>
<translation>Motyw:</translation> <translation>Motyw:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="52"/> <location filename="../../src/aooptionsdialog.cpp" line="51"/>
<source>Sets the theme used in-game. If the new theme changes the lobby&apos;s look as well, you&apos;ll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it.</source> <source>Sets the theme used in-game. If the new theme changes the lobby&apos;s look as well, you&apos;ll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it.</source>
<translation>Ustawia motyw używany w grze. Jeżeli nowy motyw równiesz zmienia wygląd poczekalni, musisz odświeżyć poczekalnię, aby zmiany zaczęły działać, np. poprzez dołączenie do serwera i wyjście z niego.</translation> <translation>Ustawia motyw używany w grze. Jeżeli nowy motyw równiesz zmienia wygląd poczekalni, musisz odświeżyć poczekalnię, aby zmiany zaczęły działać, np. poprzez dołączenie do serwera i wyjście z niego.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="81"/> <location filename="../../src/aooptionsdialog.cpp" line="80"/>
<source>Log goes downwards:</source> <source>Log goes downwards:</source>
<translation>Dziennik idzie w dół:</translation> <translation>Dziennik idzie w dół:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="82"/> <location filename="../../src/aooptionsdialog.cpp" line="81"/>
<source>If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked.</source> <source>If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked.</source>
<translation>Jeżeli zaznaczone, nowe wiadomości zaczną się pojawiać na dole (tak jak na czacie OOC). Tradycyjne (AO1) zachowanie jest równoważne do tego bycia nie zaznaczonym.</translation> <translation>Jeżeli zaznaczone, nowe wiadomości zaczną się pojawiać na dole (tak jak na czacie OOC). Tradycyjne (AO1) zachowanie jest równoważne do tego bycia nie zaznaczonym.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="94"/> <location filename="../../src/aooptionsdialog.cpp" line="93"/>
<source>Log length:</source> <source>Log length:</source>
<translation>Długość dziennika:</translation> <translation>Długość dziennika:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="95"/> <location filename="../../src/aooptionsdialog.cpp" line="94"/>
<source>The amount of messages the IC chatlog will keep before deleting older messages. A value of 0 or below counts as &apos;infinite&apos;.</source> <source>The amount of messages the IC chatlog will keep before deleting older messages. A value of 0 or below counts as &apos;infinite&apos;.</source>
<translation>Ilość wiadomości, jakie czat IC będzie zostawiał zanim usunie starsze wiadomości. Wartośc 0 albo niżej, liczy się jako &apos;nieskończone&apos;.</translation> <translation>Ilość wiadomości, jakie czat IC będzie zostawiał zanim usunie starsze wiadomości. Wartośc 0 albo niżej, liczy się jako &apos;nieskończone&apos;.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="113"/> <location filename="../../src/aooptionsdialog.cpp" line="112"/>
<source>Default username:</source> <source>Default username:</source>
<translation>Domyślna nazwa użytkownika:</translation> <translation>Domyślna nazwa użytkownika:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="114"/> <location filename="../../src/aooptionsdialog.cpp" line="113"/>
<source>Your OOC name will be automatically set to this value when you join a server.</source> <source>Your OOC name will be automatically set to this value when you join a server.</source>
<translation>Twoja nazwa OOC będzie ustawiana automatycznie do tej wartości, kiedy dołączysz na serwer.</translation> <translation>Twoja nazwa OOC będzie ustawiana automatycznie do tej wartości, kiedy dołączysz na serwer.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="126"/> <location filename="../../src/aooptionsdialog.cpp" line="125"/>
<source>Custom shownames:</source> <source>Custom shownames:</source>
<translation>Niestandardowe ksywki:</translation> <translation>Niestandardowe ksywki:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="127"/> <location filename="../../src/aooptionsdialog.cpp" line="126"/>
<source>Gives the default value for the in-game &apos;Custom shownames&apos; tickbox, which in turn determines whether the client should display custom in-character names.</source> <source>Gives the default value for the in-game &apos;Custom shownames&apos; tickbox, which in turn determines whether the client should display custom in-character names.</source>
<translation>Daje domyślną wartość przyciskowi wyboru &apos;Niestandardowe ksywki&apos;, który określa czy klient powinien pokazywać niestandardowe IC nazwy.</translation> <translation>Daje domyślną wartość przyciskowi wyboru &apos;Niestandardowe ksywki&apos;, który określa czy klient powinien pokazywać niestandardowe IC nazwy.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="145"/> <location filename="../../src/aooptionsdialog.cpp" line="144"/>
<source>Backup MS:</source> <source>Backup MS:</source>
<translation>Kopia zapasowa głównego serwera:</translation> <translation>Kopia zapasowa głównego serwera:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="146"/> <location filename="../../src/aooptionsdialog.cpp" line="145"/>
<source>If the built-in server lookups fail, the game will try the address given here and use it as a backup master server address.</source> <source>If the built-in server lookups fail, the game will try the address given here and use it as a backup master server address.</source>
<translation>Jeśli wbudowane szukanie serwerów zawiedzie, gra spróbuje użyć adresu podanego tutaj i użyje go jako adresu zapasowego głównego serwera.</translation> <translation>Jeśli wbudowane szukanie serwerów zawiedzie, gra spróbuje użyć adresu podanego tutaj i użyje go jako adresu zapasowego głównego serwera.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="158"/> <location filename="../../src/aooptionsdialog.cpp" line="157"/>
<source>Discord:</source> <source>Discord:</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="159"/> <location filename="../../src/aooptionsdialog.cpp" line="158"/>
<source>Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for.</source> <source>Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for.</source>
<translation>Pozwala innym na Discordzie zobaczyć na jakim serwerze się znajdujesz, jaką postać używasz i jak długo grałeś.</translation> <translation>Pozwala innym na Discordzie zobaczyć na jakim serwerze się znajdujesz, jaką postać używasz i jak długo grałeś.</translation>
</message> </message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="170"/>
<source>Allow Shake/Flash:</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="171"/> <location filename="../../src/aooptionsdialog.cpp" line="171"/>
<source>Allows screenshaking and flashing. Disable this if you have concerns or issues with photosensitivity and/or seizures.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="181"/>
<source>Language:</source> <source>Language:</source>
<translation>Język:</translation> <translation>Język:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="172"/> <location filename="../../src/aooptionsdialog.cpp" line="182"/>
<source>Sets the language if you don&apos;t want to use your system language.</source> <source>Sets the language if you don&apos;t want to use your system language.</source>
<translation>Ustawia język, jeśli nie chcesz używać języka systemowego.</translation> <translation>Ustawia język, jeśli nie chcesz używać języka systemowego.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="186"/> <location filename="../../src/aooptionsdialog.cpp" line="197"/>
<source>Callwords</source> <source>Callwords</source>
<translation>Zawołania</translation> <translation>Zawołania</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="211"/> <location filename="../../src/aooptionsdialog.cpp" line="222"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!&lt;br&gt;Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.&lt;/body&gt;&lt;/html&gt;</source> <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!&lt;br&gt;Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;Wpisz tyle zawołań, ile dusza zapragnie. Wielkość liter nie ma znaczenia. Miej na uwadze, aby każde zawołanie było na swojej lini!&lt;br&gt;Nie zostawiaj spacji na końcu -- zostaniesz zaalarmowany za każdym razem, kiedy ktoś użyje spacji w swojej wiadomości.&lt;/body&gt;&lt;/html&gt;</translation> <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;Wpisz tyle zawołań, ile dusza zapragnie. Wielkość liter nie ma znaczenia. Miej na uwadze, aby każde zawołanie było na swojej lini!&lt;br&gt;Nie zostawiaj spacji na końcu -- zostaniesz zaalarmowany za każdym razem, kiedy ktoś użyje spacji w swojej wiadomości.&lt;/body&gt;&lt;/html&gt;</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="217"/> <location filename="../../src/aooptionsdialog.cpp" line="228"/>
<source>Audio</source> <source>Audio</source>
<translation>Dźwięk</translation> <translation>Dźwięk</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="228"/> <location filename="../../src/aooptionsdialog.cpp" line="239"/>
<source>Audio device:</source> <source>Audio device:</source>
<translation>Urządzenie dźwiękowe:</translation> <translation>Urządzenie dźwiękowe:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="229"/> <location filename="../../src/aooptionsdialog.cpp" line="240"/>
<source>Sets the audio device for all sounds.</source> <source>Sets the audio device for all sounds.</source>
<translation>Ustawia urządzenie dźwiękowe na wszystkie dźwięki.</translation> <translation>Ustawia urządzenie dźwiękowe na wszystkie dźwięki.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="263"/> <location filename="../../src/aooptionsdialog.cpp" line="279"/>
<source>Music:</source> <source>Music:</source>
<translation>Muzyka:</translation> <translation>Muzyka:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="264"/> <location filename="../../src/aooptionsdialog.cpp" line="280"/>
<source>Sets the music&apos;s default volume.</source> <source>Sets the music&apos;s default volume.</source>
<translation>Ustawia domyślną głośność muzyki.</translation> <translation>Ustawia domyślną głośność muzyki.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="276"/> <location filename="../../src/aooptionsdialog.cpp" line="292"/>
<source>SFX:</source> <source>SFX:</source>
<translation>Efekty dźwiękowe (SFX):</translation> <translation>Efekty dźwiękowe (SFX):</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="277"/> <location filename="../../src/aooptionsdialog.cpp" line="293"/>
<source>Sets the SFX&apos;s default volume. Interjections and actual sound effects count as &apos;SFX&apos;.</source> <source>Sets the SFX&apos;s default volume. Interjections and actual sound effects count as &apos;SFX&apos;.</source>
<translation>Ustawia domyślną głośność efektów specjalnych (SFX). Wtrącenia się i same efekty specjalne zaliczane jako &apos;SFX&apos;.</translation> <translation>Ustawia domyślną głośność efektów specjalnych (SFX). Wtrącenia się i same efekty specjalne zaliczane jako &apos;SFX&apos;.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="290"/> <location filename="../../src/aooptionsdialog.cpp" line="306"/>
<source>Blips:</source> <source>Blips:</source>
<translation>Blipy:</translation> <translation>Blipy:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="291"/> <location filename="../../src/aooptionsdialog.cpp" line="307"/>
<source>Sets the volume of the blips, the talking sound effects.</source> <source>Sets the volume of the blips, the talking sound effects.</source>
<translation>Ustawia głośność blipów, efektów dźwiękowych mówienia.</translation> <translation>Ustawia głośność blipów, efektów dźwiękowych mówienia.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="309"/> <location filename="../../src/aooptionsdialog.cpp" line="325"/>
<source>Blip rate:</source> <source>Blip rate:</source>
<translation>Szybkość blipów:</translation> <translation>Szybkość blipów:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="310"/> <location filename="../../src/aooptionsdialog.cpp" line="326"/>
<source>Sets the delay between playing the blip sounds.</source> <source>Sets the delay between playing the blip sounds.</source>
<translation>Ustawia opóźnienie pomiędzy graniem blipów.</translation> <translation>Ustawia opóźnienie pomiędzy graniem blipów.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="321"/> <location filename="../../src/aooptionsdialog.cpp" line="337"/>
<source>Blank blips:</source> <source>Blank blips:</source>
<translatorcomment>The &apos;blip&apos; isn&apos;t an accurate polish representation of this english word.</translatorcomment> <translatorcomment>The &apos;blip&apos; isn&apos;t an accurate polish representation of this english word.</translatorcomment>
<translation>Puste blipy:</translation> <translation>Puste blipy:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="322"/> <location filename="../../src/aooptionsdialog.cpp" line="338"/>
<source>If true, the game will play a blip sound even when a space is &apos;being said&apos;.</source> <source>If true, the game will play a blip sound even when a space is &apos;being said&apos;.</source>
<translation>Jeśli prawdziwe, gra zagra dźwięk blip za każdym razem spacja &apos;jest mówiona&apos;.</translation> <translation>Jeśli prawdziwe, gra zagra dźwięk blip za każdym razem spacja &apos;jest mówiona&apos;.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="334"/> <location filename="../../src/aooptionsdialog.cpp" line="349"/>
<source>Enable Looping SFX:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="350"/>
<source>If true, the game will allow looping sound effects to play on preanimations.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="361"/>
<source>Kill Music On Objection:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="362"/>
<source>If true, the game will stop music when someone objects, like in the actual games.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="373"/>
<source>Casing</source> <source>Casing</source>
<translation>Rozprawa</translation> <translation>Rozprawa</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="348"/> <location filename="../../src/aooptionsdialog.cpp" line="387"/>
<source>This server supports case alerts.</source> <source>This server supports case alerts.</source>
<translation>Ten serwer wspiera komunikaty rozpraw.</translation> <translation>Ten serwer wspiera komunikaty rozpraw.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="350"/> <location filename="../../src/aooptionsdialog.cpp" line="389"/>
<source>This server does not support case alerts.</source> <source>This server does not support case alerts.</source>
<translation>Ten serwer nie wspiera komunikatów rozpraw.</translation> <translation>Ten serwer nie wspiera komunikatów rozpraw.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="351"/> <location filename="../../src/aooptionsdialog.cpp" line="390"/>
<source>Pretty self-explanatory.</source> <source>Pretty self-explanatory.</source>
<translation>Dosyć oczywiste.</translation> <translation>Dosyć oczywiste.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="358"/> <location filename="../../src/aooptionsdialog.cpp" line="397"/>
<source>Casing:</source> <source>Casing:</source>
<translation>Rozprawy:</translation> <translation>Rozprawy:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="359"/> <location filename="../../src/aooptionsdialog.cpp" line="398"/>
<source>If checked, you will get alerts about case announcements.</source> <source>If checked, you will get alerts about case announcements.</source>
<translation>Jeżeli zaznaczone, dostaniesz komunikaty o ogłoszeniach rozpraw.</translation> <translation>Jeżeli zaznaczone, dostaniesz komunikaty o ogłoszeniach rozpraw.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="372"/> <location filename="../../src/aooptionsdialog.cpp" line="411"/>
<source>Defense:</source> <source>Defense:</source>
<translation>Obrona:</translation> <translation>Obrona:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="373"/> <location filename="../../src/aooptionsdialog.cpp" line="412"/>
<source>If checked, you will get alerts about case announcements if a defense spot is open.</source> <source>If checked, you will get alerts about case announcements if a defense spot is open.</source>
<translation>Jeżeli zaznaczone, dostaniesz komunikaty o ogłoszeniach rozpraw, jeśli miejsce obrony jest otwarte.</translation> <translation>Jeżeli zaznaczone, dostaniesz komunikaty o ogłoszeniach rozpraw, jeśli miejsce obrony jest otwarte.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="386"/> <location filename="../../src/aooptionsdialog.cpp" line="425"/>
<source>Prosecution:</source> <source>Prosecution:</source>
<translation>Prokuratura:</translation> <translation>Prokuratura:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="387"/> <location filename="../../src/aooptionsdialog.cpp" line="426"/>
<source>If checked, you will get alerts about case announcements if a prosecutor spot is open.</source> <source>If checked, you will get alerts about case announcements if a prosecutor spot is open.</source>
<translation>Jeżeli zaznaczone, dostaniesz komunikaty o ogłoszeniach rozpraw, jeśli miejsce prokuratury jest otwarte.</translation> <translation>Jeżeli zaznaczone, dostaniesz komunikaty o ogłoszeniach rozpraw, jeśli miejsce prokuratury jest otwarte.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="400"/> <location filename="../../src/aooptionsdialog.cpp" line="439"/>
<source>Judge:</source> <source>Judge:</source>
<translation>Sędzia:</translation> <translation>Sędzia:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="401"/> <location filename="../../src/aooptionsdialog.cpp" line="440"/>
<source>If checked, you will get alerts about case announcements if the judge spot is open.</source> <source>If checked, you will get alerts about case announcements if the judge spot is open.</source>
<translation>Jeśli zaznaczone, dostaniesz komunikaty o ogłoszeniach rozpraw, jeśli miejsce sędzi jest otwarte.</translation> <translation>Jeśli zaznaczone, dostaniesz komunikaty o ogłoszeniach rozpraw, jeśli miejsce sędzi jest otwarte.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="414"/> <location filename="../../src/aooptionsdialog.cpp" line="453"/>
<source>Juror:</source> <source>Juror:</source>
<translation>Ławnik:</translation> <translation>Ławnik:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="415"/> <location filename="../../src/aooptionsdialog.cpp" line="454"/>
<source>If checked, you will get alerts about case announcements if a juror spot is open.</source> <source>If checked, you will get alerts about case announcements if a juror spot is open.</source>
<translation>Jeśli zaznaczone, dostaniesz komunikaty o ogłoszeniach rozpraw, jeśli miejsce ławnika jest otwarte.</translation> <translation>Jeśli zaznaczone, dostaniesz komunikaty o ogłoszeniach rozpraw, jeśli miejsce ławnika jest otwarte.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="428"/> <location filename="../../src/aooptionsdialog.cpp" line="467"/>
<source>Stenographer:</source> <source>Stenographer:</source>
<translation>Stenograf:</translation> <translation>Stenograf:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="429"/> <location filename="../../src/aooptionsdialog.cpp" line="468"/>
<source>If checked, you will get alerts about case announcements if a stenographer spot is open.</source> <source>If checked, you will get alerts about case announcements if a stenographer spot is open.</source>
<translation>Jeśli zaznaczone, dostaniesz komunikaty o ogłoszeniach rozpraw, jeśli miejsce stenografa jest otwarte.</translation> <translation>Jeśli zaznaczone, dostaniesz komunikaty o ogłoszeniach rozpraw, jeśli miejsce stenografa jest otwarte.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="442"/> <location filename="../../src/aooptionsdialog.cpp" line="481"/>
<source>CM:</source> <source>CM:</source>
<translation>Mistrz rozpraw (CM):</translation> <translation>Mistrz rozpraw (CM):</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="443"/> <location filename="../../src/aooptionsdialog.cpp" line="482"/>
<source>If checked, you will appear amongst the potential CMs on the server.</source> <source>If checked, you will appear amongst the potential CMs on the server.</source>
<translation>Jeśli zaznaczone, pojawisz się wśród potencjalnych mistrzów rozpraw (CM) na serwerze.</translation> <translation>Jeśli zaznaczone, pojawisz się wśród potencjalnych mistrzów rozpraw (CM) na serwerze.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="456"/> <location filename="../../src/aooptionsdialog.cpp" line="493"/>
<source>Witness:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="494"/>
<source>If checked, you will appear amongst the potential witnesses on the server.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="507"/>
<source>Hosting cases:</source> <source>Hosting cases:</source>
<translation>Hostowane rozprawy:</translation> <translation>Hostowane rozprawy:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="457"/> <location filename="../../src/aooptionsdialog.cpp" line="508"/>
<source>If you&apos;re a CM, enter what cases you are willing to host.</source> <source>If you&apos;re a CM, enter what cases you are willing to host.</source>
<translation>Jeśli jesteś mistrzem rozpraw (CM), wpisz jakie rozprawy jesteś chętny hostowania.</translation> <translation>Jeśli jesteś mistrzem rozpraw (CM), wpisz jakie rozprawy jesteś chętny hostowania.</translation>
</message> </message>
@ -400,356 +446,369 @@ Powód: %1</translation>
<context> <context>
<name>Courtroom</name> <name>Courtroom</name>
<message> <message>
<location filename="../../src/charselect.cpp" line="21"/> <location filename="../../src/charselect.cpp" line="74"/>
<source>Password</source> <source>Password</source>
<translation>Hasło</translation> <translation>Hasło</translation>
</message> </message>
<message> <message>
<location filename="../../src/charselect.cpp" line="27"/> <location filename="../../src/charselect.cpp" line="80"/>
<source>Spectator</source> <source>Spectator</source>
<translation>Widz</translation> <translation>Widz</translation>
</message> </message>
<message> <message>
<location filename="../../src/charselect.cpp" line="30"/> <location filename="../../src/charselect.cpp" line="83"/>
<location filename="../../src/courtroom.cpp" line="138"/> <location filename="../../src/courtroom.cpp" line="164"/>
<source>Search</source> <source>Search</source>
<translation>Wyszukaj</translation> <translation>Wyszukaj</translation>
</message> </message>
<message> <message>
<location filename="../../src/charselect.cpp" line="35"/> <location filename="../../src/charselect.cpp" line="88"/>
<source>Passworded</source> <source>Passworded</source>
<translation>Zahasłowany</translation> <translation>Zahasłowany</translation>
</message> </message>
<message> <message>
<location filename="../../src/charselect.cpp" line="39"/> <location filename="../../src/charselect.cpp" line="92"/>
<source>Taken</source> <source>Taken</source>
<translation>Zajęty</translation> <translation>Zajęty</translation>
</message> </message>
<message> <message>
<location filename="../../src/charselect.cpp" line="217"/> <location filename="../../src/charselect.cpp" line="182"/>
<source>Could not find %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Generating chars: <source>Generating chars:
%1/%2</source> %1/%2</source>
<translation>Generowanie postaci: <translation type="vanished">Generowanie postaci:
%1.%2</translation> %1.%2</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="116"/> <location filename="../../src/courtroom.cpp" line="142"/>
<source>Showname</source> <source>Showname</source>
<translation>Ksywka</translation> <translation>Ksywka</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="120"/> <location filename="../../src/courtroom.cpp" line="146"/>
<source>Message</source> <source>Message</source>
<translation>Wiadomość</translation> <translation>Wiadomość</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="130"/> <location filename="../../src/courtroom.cpp" line="156"/>
<source>Name</source> <source>Name</source>
<translation>Nazwa</translation> <translation>Nazwa</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="183"/> <location filename="../../src/courtroom.cpp" line="209"/>
<source>Pre</source> <source>Pre</source>
<translation>przed-</translation> <translation>przed-</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="186"/> <location filename="../../src/courtroom.cpp" line="212"/>
<source>Flip</source> <source>Flip</source>
<translation>Odwróć</translation> <translation>Odwróć</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="190"/>
<source>Guard</source> <source>Guard</source>
<translation>Na Służbie (mod)</translation> <translation type="vanished">Na Służbie (mod)</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="195"/> <location filename="../../src/courtroom.cpp" line="223"/>
<location filename="../../src/courtroom.cpp" line="608"/> <location filename="../../src/courtroom.cpp" line="637"/>
<source>Casing</source> <source>Casing</source>
<translation>Rozprawa</translation> <translation>Rozprawa</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="200"/> <location filename="../../src/courtroom.cpp" line="228"/>
<source>Shownames</source> <source>Shownames</source>
<translation>Ksywki</translation> <translation>Ksywki</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="203"/> <location filename="../../src/courtroom.cpp" line="231"/>
<source>No Interrupt</source> <source>No Interrupt</source>
<translation>Bez przerwy</translation> <translation>Bez przerwy</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="217"/> <location filename="../../src/courtroom.cpp" line="246"/>
<source>White</source> <source>White</source>
<translation>Biały</translation> <translation>Biały</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="218"/> <location filename="../../src/courtroom.cpp" line="247"/>
<source>Green</source> <source>Green</source>
<translation>Zielony</translation> <translation>Zielony</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="219"/> <location filename="../../src/courtroom.cpp" line="248"/>
<source>Red</source> <source>Red</source>
<translation>Czerwony</translation> <translation>Czerwony</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="220"/> <location filename="../../src/courtroom.cpp" line="249"/>
<source>Orange</source> <source>Orange</source>
<translation>Pomarańczowy</translation> <translation>Pomarańczowy</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="221"/> <location filename="../../src/courtroom.cpp" line="250"/>
<source>Blue</source> <source>Blue</source>
<translation>Niebieski</translation> <translation>Niebieski</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="222"/> <location filename="../../src/courtroom.cpp" line="251"/>
<source>Yellow</source> <source>Yellow</source>
<translation>Żółty</translation> <translation>Żółty</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2688"/> <location filename="../../src/courtroom.cpp" line="3040"/>
<source>This does nothing, but there you go.</source> <source>This does nothing, but there you go.</source>
<translation>To nic nie robi, ale proszę bardzo.</translation> <translation>To nic nie robi, ale proszę bardzo.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2824"/> <location filename="../../src/courtroom.cpp" line="3176"/>
<source>You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. <source>You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini.
Cases you can load: %1</source> Cases you can load: %1</source>
<translation>Musisz podać nazwę pliku, którego chcesz załadować (rozszerzenie nie potrzebne!) Upewnij się, że jest w folderze `base/cases/` i że jest to poprawnie sformatowane ini. <translation>Musisz podać nazwę pliku, którego chcesz załadować (rozszerzenie nie potrzebne!) Upewnij się, że jest w folderze `base/cases/` i że jest to poprawnie sformatowane ini.
Rozprawy które możesz załadować: %1</translation> Rozprawy które możesz załadować: %1</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2845"/> <location filename="../../src/courtroom.cpp" line="3197"/>
<source>Case made by %1.</source> <source>Case made by %1.</source>
<translation>Rozprawa zrobiona przez %1.</translation> <translation>Rozprawa zrobiona przez %1.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2851"/> <location filename="../../src/courtroom.cpp" line="3203"/>
<source>Navigate to %1 for the CM doc.</source> <source>Navigate to %1 for the CM doc.</source>
<translation>Przejdź do %1, aby dojść do dokumentu CM.</translation> <translation>Przejdź do %1, aby dojść do dokumentu CM.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2870"/> <location filename="../../src/courtroom.cpp" line="3222"/>
<source>Your case &quot;%1&quot; was loaded!</source> <source>Your case &quot;%1&quot; was loaded!</source>
<translation>Twoja rozprawa &quot;%1&quot; została wczytana!</translation> <translation>Twoja rozprawa &quot;%1&quot; została wczytana!</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="583"/> <location filename="../../src/courtroom.cpp" line="612"/>
<location filename="../../src/courtroom.cpp" line="2959"/> <location filename="../../src/courtroom.cpp" line="3311"/>
<source>Server</source> <source>Server</source>
<translation>Serwer</translation> <translation>Serwer</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="692"/> <location filename="../../src/courtroom.cpp" line="724"/>
<source>Back to Lobby</source> <source>Back to Lobby</source>
<translation>Powrót do poczekalni</translation> <translation>Powrót do poczekalni</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="223"/> <location filename="../../src/courtroom.cpp" line="252"/>
<source>Rainbow</source> <source>Rainbow</source>
<translation>Tęczowy</translation> <translation>Tęczowy</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="224"/> <location filename="../../src/courtroom.cpp" line="217"/>
<source>Disable Modcalls</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/courtroom.cpp" line="253"/>
<source>Pink</source> <source>Pink</source>
<translation>Różowy</translation> <translation>Różowy</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="225"/> <location filename="../../src/courtroom.cpp" line="254"/>
<source>Cyan</source> <source>Cyan</source>
<translation>Turkusowy</translation> <translation>Turkusowy</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="248"/> <location filename="../../src/courtroom.cpp" line="277"/>
<source>% offset</source> <source>% offset</source>
<translation>% wyrówanie</translation> <translation>% wyrówanie</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="566"/> <location filename="../../src/courtroom.cpp" line="595"/>
<source>Music</source> <source>Music</source>
<translation>Muzyka</translation> <translation>Muzyka</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="568"/> <location filename="../../src/courtroom.cpp" line="597"/>
<source>Sfx</source> <source>Sfx</source>
<translation>Sfx</translation> <translation>Sfx</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="570"/> <location filename="../../src/courtroom.cpp" line="599"/>
<source>Blips</source> <source>Blips</source>
<translation>Blipy</translation> <translation>Blipy</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="573"/> <location filename="../../src/courtroom.cpp" line="602"/>
<source>Log limit</source> <source>Log limit</source>
<translation>Limit dziennika</translation> <translation>Limit dziennika</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="596"/> <location filename="../../src/courtroom.cpp" line="625"/>
<source>Change character</source> <source>Change character</source>
<translation>Zmiena postaci</translation> <translation>Zmiena postaci</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="599"/> <location filename="../../src/courtroom.cpp" line="628"/>
<source>Reload theme</source> <source>Reload theme</source>
<translation>Odśwież motyw</translation> <translation>Odśwież motyw</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="602"/> <location filename="../../src/courtroom.cpp" line="631"/>
<source>Call mod</source> <source>Call mod</source>
<translation>Wezwij moda</translation> <translation>Wezwij moda</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="605"/> <location filename="../../src/courtroom.cpp" line="634"/>
<source>Settings</source> <source>Settings</source>
<translation>Ustawienia</translation> <translation>Ustawienia</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="611"/> <location filename="../../src/courtroom.cpp" line="640"/>
<source>A/M</source> <source>A/M</source>
<translatorcomment>O meaning &apos;Obszar&apos; and M meaning &apos;Muzyka&apos;.</translatorcomment> <translatorcomment>O meaning &apos;Obszar&apos; and M meaning &apos;Muzyka&apos;.</translatorcomment>
<translation>O/M</translation> <translation>O/M</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="614"/> <location filename="../../src/courtroom.cpp" line="643"/>
<source>Preanim</source> <source>Preanim</source>
<translation>przed-animacja</translation> <translation>przed-animacja</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2681"/> <location filename="../../src/courtroom.cpp" line="2838"/>
<source>You have been banned.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/courtroom.cpp" line="3033"/>
<source>You were granted the Guard button.</source> <source>You were granted the Guard button.</source>
<translation>Zostałeś obdarzonym przyciskiem Na Służbie.</translation> <translation>Zostałeś obdarzonym przyciskiem Na Służbie.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2695"/> <location filename="../../src/courtroom.cpp" line="3047"/>
<source>You opened the settings menu.</source> <source>You opened the settings menu.</source>
<translation>Otworzyłeś opcje.</translation> <translation>Otworzyłeś opcje.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2710"/> <location filename="../../src/courtroom.cpp" line="3062"/>
<source>You will now pair up with </source> <source>You will now pair up with </source>
<translation>Będzie teraz w parze z </translation> <translation>Będzie teraz w parze z </translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2712"/> <location filename="../../src/courtroom.cpp" line="3064"/>
<source> if they also choose your character in return.</source> <source> if they also choose your character in return.</source>
<translation> jeżeli oni również wybiorą ciebie spowrotem.</translation> <translation> jeżeli oni również wybiorą ciebie spowrotem.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2718"/> <location filename="../../src/courtroom.cpp" line="3070"/>
<source>You are no longer paired with anyone.</source> <source>You are no longer paired with anyone.</source>
<translation>Nie jesteś już w parze z kimkolwiek.</translation> <translation>Nie jesteś już w parze z kimkolwiek.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2723"/> <location filename="../../src/courtroom.cpp" line="3075"/>
<source>Are you sure you typed that well? The char ID could not be recognised.</source> <source>Are you sure you typed that well? The char ID could not be recognised.</source>
<translation>Czy jesteś pewien, że dobrze to napisałeś? ID postaci nie zostało rozpoznane.</translation> <translation>Czy jesteś pewien, że dobrze to napisałeś? ID postaci nie zostało rozpoznane.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2739"/> <location filename="../../src/courtroom.cpp" line="3091"/>
<source>You have set your offset to </source> <source>You have set your offset to </source>
<translation>Musisz ustawić swoje wyrównanie do </translation> <translation>Musisz ustawić swoje wyrównanie do </translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2746"/> <location filename="../../src/courtroom.cpp" line="3098"/>
<source>Your offset must be between -100% and 100%!</source> <source>Your offset must be between -100% and 100%!</source>
<translation>Twoje wyrównanie musi być między -100%, a 100%!</translation> <translation>Twoje wyrównanie musi być między -100%, a 100%!</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2751"/> <location filename="../../src/courtroom.cpp" line="3103"/>
<source>That offset does not look like one.</source> <source>That offset does not look like one.</source>
<translation>To wyrównanie nie wygląda na jedno.</translation> <translation>To wyrównanie nie wygląda na jedno.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2757"/> <location filename="../../src/courtroom.cpp" line="3109"/>
<source>You switched your music and area list.</source> <source>You switched your music and area list.</source>
<translation>Przełączyłeś swoją listę obszarów i muzyki.</translation> <translation>Przełączyłeś swoją listę obszarów i muzyki.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2764"/> <location filename="../../src/courtroom.cpp" line="3116"/>
<source>You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this.</source> <source>You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this.</source>
<translation>Włączyłeś funkcje, które ten serwer może nie wspierać. Możliwe że, nie możesz rozmawiać na czacie IC lub gorzej przez to.</translation> <translation>Włączyłeś funkcje, które ten serwer może nie wspierać. Możliwe że, nie możesz rozmawiać na czacie IC lub gorzej przez to.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2775"/> <location filename="../../src/courtroom.cpp" line="3127"/>
<source>Your pre-animations interrupt again.</source> <source>Your pre-animations interrupt again.</source>
<translation>Twoje przed-animacje przerywają tekst spowrotem.</translation> <translation>Twoje przed-animacje przerywają tekst spowrotem.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2777"/> <location filename="../../src/courtroom.cpp" line="3129"/>
<source>Your pre-animations will not interrupt text.</source> <source>Your pre-animations will not interrupt text.</source>
<translation>Twoje przed-animacje nie będą przerywać tekstu.</translation> <translation>Twoje przed-animacje nie będą przerywać tekstu.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2788"/> <location filename="../../src/courtroom.cpp" line="3140"/>
<source>Couldn&apos;t open chatlog.txt to write into.</source> <source>Couldn&apos;t open chatlog.txt to write into.</source>
<translation>Nie można było otworzyć chatlog.txt, aby zapisać do niego.</translation> <translation>Nie można było otworzyć chatlog.txt, aby zapisać do niego.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2801"/> <location filename="../../src/courtroom.cpp" line="3153"/>
<source>The IC chatlog has been saved.</source> <source>The IC chatlog has been saved.</source>
<translation>Dziennik czatu IC został zapisany.</translation> <translation>Dziennik czatu IC został zapisany.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2813"/> <location filename="../../src/courtroom.cpp" line="3165"/>
<source>You don&apos;t have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it&apos;s likely the case file you&apos;re looking for can&apos;t be found in there.</source> <source>You don&apos;t have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it&apos;s likely the case file you&apos;re looking for can&apos;t be found in there.</source>
<translation>Nie masz folderu `base/cases/`! Został zrobiony tylko dla ciebie, ale widząc, że ZOSTAŁ zrobiony tylko dla ciebie, prawdopodobnie plik rozpraw, którego szukasz nie został znaleziony tutaj.</translation> <translation>Nie masz folderu `base/cases/`! Został zrobiony tylko dla ciebie, ale widząc, że ZOSTAŁ zrobiony tylko dla ciebie, prawdopodobnie plik rozpraw, którego szukasz nie został znaleziony tutaj.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2832"/> <location filename="../../src/courtroom.cpp" line="3184"/>
<source>Too many arguments to load a case! You only need one filename, without extension.</source> <source>Too many arguments to load a case! You only need one filename, without extension.</source>
<translation>Za dużo parametrów, aby załadować rozprawę! Potrzebujesz tylko jedną nazwę pliku, bez rozszerzenia nazwy pliku.</translation> <translation>Za dużo parametrów, aby załadować rozprawę! Potrzebujesz tylko jedną nazwę pliku, bez rozszerzenia nazwy pliku.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2882"/> <location filename="../../src/courtroom.cpp" line="3234"/>
<source>You don&apos;t have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it&apos;s likely that you somehow deleted it.</source> <source>You don&apos;t have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it&apos;s likely that you somehow deleted it.</source>
<translation>Nie masz folderu `base/cases/`! Został zrobiony tylko dla ciebie, ale widząc, że ZOSTAŁ zrobiony tylko dla ciebie, prawdopodobnie jakoś usunąłeś go.</translation> <translation>Nie masz folderu `base/cases/`! Został zrobiony tylko dla ciebie, ale widząc, że ZOSTAŁ zrobiony tylko dla ciebie, prawdopodobnie jakoś usunąłeś go.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2893"/> <location filename="../../src/courtroom.cpp" line="3245"/>
<source>You need to give a filename to save (extension not needed) and the courtroom status!</source> <source>You need to give a filename to save (extension not needed) and the courtroom status!</source>
<translation>Musisz podać nazwę pliku, aby go zapisać (rozszerzenie nie potrzebne) i status sali sądowej!</translation> <translation>Musisz podać nazwę pliku, aby go zapisać (rozszerzenie nie potrzebne) i status sali sądowej!</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2901"/> <location filename="../../src/courtroom.cpp" line="3253"/>
<source>Too many arguments to save a case! You only need a filename without extension and the courtroom status!</source> <source>Too many arguments to save a case! You only need a filename without extension and the courtroom status!</source>
<translation>Za dużo parametrów, aby zapisać rozprawę! Potrzebujesz tylko jedną nazwę pliku, bez rozszerzenia nazwy pliku i statusu sali sądowej!</translation> <translation>Za dużo parametrów, aby zapisać rozprawę! Potrzebujesz tylko jedną nazwę pliku, bez rozszerzenia nazwy pliku i statusu sali sądowej!</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2923"/> <location filename="../../src/courtroom.cpp" line="3275"/>
<source>Succesfully saved, edit doc and cmdoc link on the ini!</source> <source>Succesfully saved, edit doc and cmdoc link on the ini!</source>
<translation>Zapisano pomyślnie, edytuj dokument i link cmdoc w .ini!</translation> <translation>Zapisano pomyślnie, edytuj dokument i link cmdoc w .ini!</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2951"/> <location filename="../../src/courtroom.cpp" line="3303"/>
<source>Master</source> <source>Master</source>
<translation>Główny</translation> <translation>Główny</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="3422"/> <location filename="../../src/courtroom.cpp" line="3793"/>
<source>Reason:</source> <source>Reason:</source>
<translation>Powód:</translation> <translation>Powód:</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="3423"/> <location filename="../../src/courtroom.cpp" line="3794"/>
<source>Call Moderator</source> <source>Call Moderator</source>
<translation>Wezwij Moderatora</translation> <translation>Wezwij Moderatora</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="3431"/> <location filename="../../src/courtroom.cpp" line="3802"/>
<location filename="../../src/courtroom.cpp" line="3434"/> <location filename="../../src/courtroom.cpp" line="3805"/>
<source>Error</source> <source>Error</source>
<translation>Błąd</translation> <translation>Błąd</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="3431"/> <location filename="../../src/courtroom.cpp" line="3802"/>
<source>You must provide a reason.</source> <source>You must provide a reason.</source>
<translation>Musisz podać przyczynę.</translation> <translation>Musisz podać przyczynę.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="3434"/> <location filename="../../src/courtroom.cpp" line="3805"/>
<source>The message is too long.</source> <source>The message is too long.</source>
<translation>Ta wiadomość jest za długa.</translation> <translation>Ta wiadomość jest za długa.</translation>
</message> </message>
@ -782,40 +841,40 @@ Rozprawy które możesz załadować: %1</translation>
<translation>Nazwa</translation> <translation>Nazwa</translation>
</message> </message>
<message> <message>
<location filename="../../src/lobby.cpp" line="74"/> <location filename="../../src/lobby.cpp" line="75"/>
<source>It doesn&apos;t look like your client is set up correctly. <source>It doesn&apos;t look like your client is set up correctly.
Did you download all resources correctly from tiny.cc/getao, including the large &apos;base&apos; folder?</source> Did you download all resources correctly from tiny.cc/getao, including the large &apos;base&apos; folder?</source>
<translation>Wygłąda na to, że twój klient nie jest ustawiony poprawnie. <translation>Wygłąda na to, że twój klient nie jest ustawiony poprawnie.
Czy pobrałeś wszystkie zasoby poprawnie z tiny.cc/getao, włączając duży folder &apos;base&apos;?</translation> Czy pobrałeś wszystkie zasoby poprawnie z tiny.cc/getao, włączając duży folder &apos;base&apos;?</translation>
</message> </message>
<message> <message>
<location filename="../../src/lobby.cpp" line="104"/> <location filename="../../src/lobby.cpp" line="105"/>
<source>Version: %1</source> <source>Version: %1</source>
<translation>Wersja: %1</translation> <translation>Wersja: %1</translation>
</message> </message>
<message> <message>
<location filename="../../src/lobby.cpp" line="147"/> <location filename="../../src/lobby.cpp" line="148"/>
<source>Loading</source> <source>Loading</source>
<translation>Ładowanie</translation> <translation>Ładowanie</translation>
</message> </message>
<message> <message>
<location filename="../../src/lobby.cpp" line="151"/> <location filename="../../src/lobby.cpp" line="152"/>
<source>Cancel</source> <source>Cancel</source>
<translation>Anuluj</translation> <translation>Anuluj</translation>
</message> </message>
<message> <message>
<location filename="../../src/lobby.cpp" line="270"/> <location filename="../../src/lobby.cpp" line="275"/>
<source>&lt;h2&gt;Attorney Online %1&lt;/h2&gt;The courtroom drama simulator&lt;p&gt;&lt;b&gt;Source code:&lt;/b&gt; &lt;a href=&apos;https://github.com/AttorneyOnline/AO2-Client&apos;&gt;https://github.com/AttorneyOnline/AO2-Client&lt;/a&gt;&lt;p&gt;&lt;b&gt;Major development:&lt;/b&gt;&lt;br&gt;OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter&lt;p&gt;&lt;b&gt;Special thanks:&lt;/b&gt;&lt;br&gt;Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy</source> <source>&lt;h2&gt;Attorney Online %1&lt;/h2&gt;The courtroom drama simulator&lt;p&gt;&lt;b&gt;Source code:&lt;/b&gt; &lt;a href=&apos;https://github.com/AttorneyOnline/AO2-Client&apos;&gt;https://github.com/AttorneyOnline/AO2-Client&lt;/a&gt;&lt;p&gt;&lt;b&gt;Major development:&lt;/b&gt;&lt;br&gt;OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter&lt;p&gt;&lt;b&gt;Special thanks:&lt;/b&gt;&lt;br&gt;Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy</source>
<translation>&lt;h2&gt;Attorney Online: %1&lt;/h2&gt;Symulator dramy sądowej&lt;p&gt;&lt;b&gt;Kod żródłowy:&lt;/b&gt; &lt;a href=&apos;https://github.com/AttorneyOnline/AO2-Client&apos;&gt;https://github.com/AttorneyOnline/AO2-Client&lt;/a&gt;&lt;p&gt;&lt;b&gt;Główny rozwój:&lt;/b&gt;&lt;br&gt;OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter&lt;p&gt;&lt;b&gt;Szczególne podziękowania:&lt;/b&gt;&lt;br&gt;Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy</translation> <translation>&lt;h2&gt;Attorney Online: %1&lt;/h2&gt;Symulator dramy sądowej&lt;p&gt;&lt;b&gt;Kod żródłowy:&lt;/b&gt; &lt;a href=&apos;https://github.com/AttorneyOnline/AO2-Client&apos;&gt;https://github.com/AttorneyOnline/AO2-Client&lt;/a&gt;&lt;p&gt;&lt;b&gt;Główny rozwój:&lt;/b&gt;&lt;br&gt;OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter&lt;p&gt;&lt;b&gt;Szczególne podziękowania:&lt;/b&gt;&lt;br&gt;Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy</translation>
</message> </message>
<message> <message>
<location filename="../../src/lobby.cpp" line="376"/> <location filename="../../src/lobby.cpp" line="393"/>
<source>Online: %1/%2</source> <source>Online: %1/%2</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../../src/lobby.cpp" line="114"/> <location filename="../../src/lobby.cpp" line="115"/>
<location filename="../../src/lobby.cpp" line="316"/> <location filename="../../src/lobby.cpp" line="325"/>
<source>Offline</source> <source>Offline</source>
<translation></translation> <translation></translation>
</message> </message>

View File

@ -22,66 +22,67 @@ Please check your Internet connection and firewall, and please try again.</sourc
Пожалуйста, проверьте ваши Интернет-соединение, настройки браундмауэра, и попробуйте перезайти.</translation> Пожалуйста, проверьте ваши Интернет-соединение, настройки браундмауэра, и попробуйте перезайти.</translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="106"/> <location filename="../../src/packet_distribution.cpp" line="135"/>
<source>Outdated version! Your version: %1 <source>Outdated version! Your version: %1
Please go to aceattorneyonline.com to update.</source> Please go to aceattorneyonline.com to update.</source>
<translation>Устаревшая версия! У вас установлена %1 <translation>Устаревшая версия! У вас установлена %1
Проследуйте на сайт aceattorneyonline.com для обновления.</translation> Проследуйте на сайт aceattorneyonline.com для обновления.</translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="114"/> <location filename="../../src/packet_distribution.cpp" line="143"/>
<source>You have been exiled from AO. <source>You have been exiled from AO.
Have a nice day.</source> Have a nice day.</source>
<translation>Из AO вас отправили в жизнь. <translation>Из AO вас отправили в жизнь.
Хорошего дня.</translation> Хорошего дня.</translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="249"/> <location filename="../../src/packet_distribution.cpp" line="283"/>
<source>Attorney Online 2</source> <source>Attorney Online 2</source>
<translation>Attorney Online 2</translation> <translation>Attorney Online 2</translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="275"/> <location filename="../../src/packet_distribution.cpp" line="309"/>
<source>Loading</source> <source>Loading</source>
<translation>Загрузка</translation> <translation>Загрузка</translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="363"/> <location filename="../../src/packet_distribution.cpp" line="397"/>
<source>Loading evidence: <source>Loading evidence:
%1/%2</source> %1/%2</source>
<translation>Загрузка вещдоков: <translation>Загрузка вещдоков:
%1/%2</translation> %1/%2</translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="395"/> <location filename="../../src/packet_distribution.cpp" line="429"/>
<location filename="../../src/packet_distribution.cpp" line="490"/> <location filename="../../src/packet_distribution.cpp" line="538"/>
<source>Loading music: <source>Loading music:
%1/%2</source> %1/%2</source>
<translation>Загрузка музыки: <translation>Загрузка музыки:
%1/%2</translation> %1/%2</translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="467"/> <location filename="../../src/packet_distribution.cpp" line="353"/>
<location filename="../../src/packet_distribution.cpp" line="501"/>
<source>Loading chars: <source>Loading chars:
%1/%2</source> %1/%2</source>
<translation>Загрузка персонажей: <translation>Загрузка персонажей:
%1/%2</translation> %1/%2</translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="642"/> <location filename="../../src/packet_distribution.cpp" line="692"/>
<source>You have been kicked from the server. <source>You have been kicked from the server.
Reason: %1</source> Reason: %1</source>
<translation>Вас выпнули с сервера. <translation>Вас выпнули с сервера.
Причина: %1</translation> Причина: %1</translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="651"/> <location filename="../../src/packet_distribution.cpp" line="701"/>
<source>You have been banned from the server. <source>You have been banned from the server.
Reason: %1</source> Reason: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/packet_distribution.cpp" line="659"/> <location filename="../../src/packet_distribution.cpp" line="709"/>
<source>You are banned on this server. <source>You are banned on this server.
Reason: %1</source> Reason: %1</source>
<translation>Вас отправили в баню. <translation>Вас отправили в баню.
@ -137,271 +138,316 @@ Reason: </source>
<source>Stenographer needed</source> <source>Stenographer needed</source>
<translation>Нужен стенографист?</translation> <translation>Нужен стенографист?</translation>
</message> </message>
<message>
<location filename="../../src/aocaseannouncerdialog.cpp" line="58"/>
<source>Witness needed</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>AOOptionsDialog</name> <name>AOOptionsDialog</name>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="11"/> <location filename="../../src/aooptionsdialog.cpp" line="10"/>
<source>Settings</source> <source>Settings</source>
<translation>Настройки</translation> <translation>Настройки</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="40"/> <location filename="../../src/aooptionsdialog.cpp" line="39"/>
<source>Gameplay</source> <source>Gameplay</source>
<translation>Игра</translation> <translation>Игра</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="51"/> <location filename="../../src/aooptionsdialog.cpp" line="50"/>
<source>Theme:</source> <source>Theme:</source>
<translation>Тема:</translation> <translation>Тема:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="52"/> <location filename="../../src/aooptionsdialog.cpp" line="51"/>
<source>Sets the theme used in-game. If the new theme changes the lobby&apos;s look as well, you&apos;ll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it.</source> <source>Sets the theme used in-game. If the new theme changes the lobby&apos;s look as well, you&apos;ll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it.</source>
<translation>Устанавливает внешний вид игры. Может понадобиться перезайти на сервер.</translation> <translation>Устанавливает внешний вид игры. Может понадобиться перезайти на сервер.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="81"/> <location filename="../../src/aooptionsdialog.cpp" line="80"/>
<source>Log goes downwards:</source> <source>Log goes downwards:</source>
<translation>Портянку вниз:</translation> <translation>Портянку вниз:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="82"/> <location filename="../../src/aooptionsdialog.cpp" line="81"/>
<source>If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked.</source> <source>If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked.</source>
<translation>Отметьте галочку, если хотите, чтобы сообщения в игровом чате отображались снизу, а не сверху.</translation> <translation>Отметьте галочку, если хотите, чтобы сообщения в игровом чате отображались снизу, а не сверху.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="94"/> <location filename="../../src/aooptionsdialog.cpp" line="93"/>
<source>Log length:</source> <source>Log length:</source>
<translation>Длина игрового чата:</translation> <translation>Длина игрового чата:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="95"/> <location filename="../../src/aooptionsdialog.cpp" line="94"/>
<source>The amount of messages the IC chatlog will keep before deleting older messages. A value of 0 or below counts as &apos;infinite&apos;.</source> <source>The amount of messages the IC chatlog will keep before deleting older messages. A value of 0 or below counts as &apos;infinite&apos;.</source>
<translation>Количество сообщений, максимально хранимых в игровом чате. Значение, равное 0 или меньше, будет расценено как снятие такого ограничения.</translation> <translation>Количество сообщений, максимально хранимых в игровом чате. Значение, равное 0 или меньше, будет расценено как снятие такого ограничения.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="113"/> <location filename="../../src/aooptionsdialog.cpp" line="112"/>
<source>Default username:</source> <source>Default username:</source>
<translation>Никнейм по умолчанию:</translation> <translation>Никнейм по умолчанию:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="114"/> <location filename="../../src/aooptionsdialog.cpp" line="113"/>
<source>Your OOC name will be automatically set to this value when you join a server.</source> <source>Your OOC name will be automatically set to this value when you join a server.</source>
<translation>Псевдоним, используемый при соединении с сервером. В основном, его видно в чате сервера.</translation> <translation>Псевдоним, используемый при соединении с сервером. В основном, его видно в чате сервера.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="126"/> <location filename="../../src/aooptionsdialog.cpp" line="125"/>
<source>Custom shownames:</source> <source>Custom shownames:</source>
<translation>Произвольные имена:</translation> <translation>Произвольные имена:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="127"/> <location filename="../../src/aooptionsdialog.cpp" line="126"/>
<source>Gives the default value for the in-game &apos;Custom shownames&apos; tickbox, which in turn determines whether the client should display custom in-character names.</source> <source>Gives the default value for the in-game &apos;Custom shownames&apos; tickbox, which in turn determines whether the client should display custom in-character names.</source>
<translation>Отображать произвольные имена персонажей, установленные самими игроками.</translation> <translation>Отображать произвольные имена персонажей, установленные самими игроками.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="145"/> <location filename="../../src/aooptionsdialog.cpp" line="144"/>
<source>Backup MS:</source> <source>Backup MS:</source>
<translation>Запасной ГС:</translation> <translation>Запасной ГС:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="146"/> <location filename="../../src/aooptionsdialog.cpp" line="145"/>
<source>If the built-in server lookups fail, the game will try the address given here and use it as a backup master server address.</source> <source>If the built-in server lookups fail, the game will try the address given here and use it as a backup master server address.</source>
<translation>Отображать перечень серверов от главного сервера, указанного здесь, когда не удалось соединиться с первичным ГС.</translation> <translation>Отображать перечень серверов от главного сервера, указанного здесь, когда не удалось соединиться с первичным ГС.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="158"/> <location filename="../../src/aooptionsdialog.cpp" line="157"/>
<source>Discord:</source> <source>Discord:</source>
<translation>Discord:</translation> <translation>Discord:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="159"/> <location filename="../../src/aooptionsdialog.cpp" line="158"/>
<source>Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for.</source> <source>Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for.</source>
<translation>Показать в Discord сервер, на котором вы играете, каким персонажем управляете и время игры.</translation> <translation>Показать в Discord сервер, на котором вы играете, каким персонажем управляете и время игры.</translation>
</message> </message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="170"/>
<source>Allow Shake/Flash:</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="171"/> <location filename="../../src/aooptionsdialog.cpp" line="171"/>
<source>Allows screenshaking and flashing. Disable this if you have concerns or issues with photosensitivity and/or seizures.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="181"/>
<source>Language:</source> <source>Language:</source>
<translation>Язык:</translation> <translation>Язык:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="172"/> <location filename="../../src/aooptionsdialog.cpp" line="182"/>
<source>Sets the language if you don&apos;t want to use your system language.</source> <source>Sets the language if you don&apos;t want to use your system language.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="186"/> <location filename="../../src/aooptionsdialog.cpp" line="197"/>
<source>Callwords</source> <source>Callwords</source>
<translation>Позывные</translation> <translation>Позывные</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="211"/> <location filename="../../src/aooptionsdialog.cpp" line="222"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!&lt;br&gt;Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.&lt;/body&gt;&lt;/html&gt;</source> <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!&lt;br&gt;Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;Введите на отдельных строках свои позывные, при указании которых в сообщениях будет подан звуковой сигнал.&lt;/body&gt;&lt;/html&gt;</translation> <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;Введите на отдельных строках свои позывные, при указании которых в сообщениях будет подан звуковой сигнал.&lt;/body&gt;&lt;/html&gt;</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="217"/> <location filename="../../src/aooptionsdialog.cpp" line="228"/>
<source>Audio</source> <source>Audio</source>
<translation>Аудио</translation> <translation>Аудио</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="228"/> <location filename="../../src/aooptionsdialog.cpp" line="239"/>
<source>Audio device:</source> <source>Audio device:</source>
<translation>Устройство воспроизведения:</translation> <translation>Устройство воспроизведения:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="229"/> <location filename="../../src/aooptionsdialog.cpp" line="240"/>
<source>Sets the audio device for all sounds.</source> <source>Sets the audio device for all sounds.</source>
<translation>Куда вещать звук из игры.</translation> <translation>Куда вещать звук из игры.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="263"/> <location filename="../../src/aooptionsdialog.cpp" line="279"/>
<source>Music:</source> <source>Music:</source>
<translation>Музыка:</translation> <translation>Музыка:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="264"/> <location filename="../../src/aooptionsdialog.cpp" line="280"/>
<source>Sets the music&apos;s default volume.</source> <source>Sets the music&apos;s default volume.</source>
<translation>Громкость музыки по умолчанию.</translation> <translation>Громкость музыки по умолчанию.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="276"/> <location filename="../../src/aooptionsdialog.cpp" line="292"/>
<source>SFX:</source> <source>SFX:</source>
<translation>Звук. эффекты:</translation> <translation>Звук. эффекты:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="277"/> <location filename="../../src/aooptionsdialog.cpp" line="293"/>
<source>Sets the SFX&apos;s default volume. Interjections and actual sound effects count as &apos;SFX&apos;.</source> <source>Sets the SFX&apos;s default volume. Interjections and actual sound effects count as &apos;SFX&apos;.</source>
<translation>Громкость звуковых эффектов по умолчанию.</translation> <translation>Громкость звуковых эффектов по умолчанию.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="290"/> <location filename="../../src/aooptionsdialog.cpp" line="306"/>
<source>Blips:</source> <source>Blips:</source>
<translation>Сигналы:</translation> <translation>Сигналы:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="291"/> <location filename="../../src/aooptionsdialog.cpp" line="307"/>
<source>Sets the volume of the blips, the talking sound effects.</source> <source>Sets the volume of the blips, the talking sound effects.</source>
<translation>Громкость сигналов, заменяющих голос, по умолчанию.</translation> <translation>Громкость сигналов, заменяющих голос, по умолчанию.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="309"/> <location filename="../../src/aooptionsdialog.cpp" line="325"/>
<source>Blip rate:</source> <source>Blip rate:</source>
<translation>Пер. сигналов:</translation> <translation>Пер. сигналов:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="310"/> <location filename="../../src/aooptionsdialog.cpp" line="326"/>
<source>Sets the delay between playing the blip sounds.</source> <source>Sets the delay between playing the blip sounds.</source>
<translation>Период между сигналами, заменяющими голос, по умолчанию.</translation> <translation>Период между сигналами, заменяющими голос, по умолчанию.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="321"/> <location filename="../../src/aooptionsdialog.cpp" line="337"/>
<source>Blank blips:</source> <source>Blank blips:</source>
<translation>Пустые сигналы:</translation> <translation>Пустые сигналы:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="322"/> <location filename="../../src/aooptionsdialog.cpp" line="338"/>
<source>If true, the game will play a blip sound even when a space is &apos;being said&apos;.</source> <source>If true, the game will play a blip sound even when a space is &apos;being said&apos;.</source>
<translation>Проигрывать сигналы даже для пробелов.</translation> <translation>Проигрывать сигналы даже для пробелов.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="334"/> <location filename="../../src/aooptionsdialog.cpp" line="349"/>
<source>Enable Looping SFX:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="350"/>
<source>If true, the game will allow looping sound effects to play on preanimations.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="361"/>
<source>Kill Music On Objection:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="362"/>
<source>If true, the game will stop music when someone objects, like in the actual games.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="373"/>
<source>Casing</source> <source>Casing</source>
<translation>Заседание</translation> <translation>Заседание</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="348"/> <location filename="../../src/aooptionsdialog.cpp" line="387"/>
<source>This server supports case alerts.</source> <source>This server supports case alerts.</source>
<translation>Этот сервер поддерживает объявление заседания.</translation> <translation>Этот сервер поддерживает объявление заседания.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="350"/> <location filename="../../src/aooptionsdialog.cpp" line="389"/>
<source>This server does not support case alerts.</source> <source>This server does not support case alerts.</source>
<translation>Этот сервер не поддерживает объявление заседания.</translation> <translation>Этот сервер не поддерживает объявление заседания.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="351"/> <location filename="../../src/aooptionsdialog.cpp" line="390"/>
<source>Pretty self-explanatory.</source> <source>Pretty self-explanatory.</source>
<translation>Весьма доходчиво.</translation> <translation>Весьма доходчиво.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="358"/> <location filename="../../src/aooptionsdialog.cpp" line="397"/>
<source>Casing:</source> <source>Casing:</source>
<translation>Новое дело:</translation> <translation>Новое дело:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="359"/> <location filename="../../src/aooptionsdialog.cpp" line="398"/>
<source>If checked, you will get alerts about case announcements.</source> <source>If checked, you will get alerts about case announcements.</source>
<translation>При заведении дела вы получите уведомление.</translation> <translation>При заведении дела вы получите уведомление.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="372"/> <location filename="../../src/aooptionsdialog.cpp" line="411"/>
<source>Defense:</source> <source>Defense:</source>
<translation>Защита:</translation> <translation>Защита:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="373"/> <location filename="../../src/aooptionsdialog.cpp" line="412"/>
<source>If checked, you will get alerts about case announcements if a defense spot is open.</source> <source>If checked, you will get alerts about case announcements if a defense spot is open.</source>
<translation>При заведении дела, в котором нужна сторона защиты, вы получите уведомление.</translation> <translation>При заведении дела, в котором нужна сторона защиты, вы получите уведомление.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="386"/> <location filename="../../src/aooptionsdialog.cpp" line="425"/>
<source>Prosecution:</source> <source>Prosecution:</source>
<translation>Обвинение:</translation> <translation>Обвинение:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="387"/> <location filename="../../src/aooptionsdialog.cpp" line="426"/>
<source>If checked, you will get alerts about case announcements if a prosecutor spot is open.</source> <source>If checked, you will get alerts about case announcements if a prosecutor spot is open.</source>
<translation>При заведении дела, в котором нужна сторона обвинения, вы получите уведомление.</translation> <translation>При заведении дела, в котором нужна сторона обвинения, вы получите уведомление.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="400"/> <location filename="../../src/aooptionsdialog.cpp" line="439"/>
<source>Judge:</source> <source>Judge:</source>
<translation>Судья:</translation> <translation>Судья:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="401"/> <location filename="../../src/aooptionsdialog.cpp" line="440"/>
<source>If checked, you will get alerts about case announcements if the judge spot is open.</source> <source>If checked, you will get alerts about case announcements if the judge spot is open.</source>
<translation>При заведении дела, в котором нужен судья, вы получите уведомление.</translation> <translation>При заведении дела, в котором нужен судья, вы получите уведомление.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="414"/> <location filename="../../src/aooptionsdialog.cpp" line="453"/>
<source>Juror:</source> <source>Juror:</source>
<translation>Присяжный:</translation> <translation>Присяжный:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="415"/> <location filename="../../src/aooptionsdialog.cpp" line="454"/>
<source>If checked, you will get alerts about case announcements if a juror spot is open.</source> <source>If checked, you will get alerts about case announcements if a juror spot is open.</source>
<translation>При заведении дела, в котором нужны присяжные заседатели, вы получите уведомление.</translation> <translation>При заведении дела, в котором нужны присяжные заседатели, вы получите уведомление.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="428"/> <location filename="../../src/aooptionsdialog.cpp" line="467"/>
<source>Stenographer:</source> <source>Stenographer:</source>
<translation>Стенографист:</translation> <translation>Стенографист:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="429"/> <location filename="../../src/aooptionsdialog.cpp" line="468"/>
<source>If checked, you will get alerts about case announcements if a stenographer spot is open.</source> <source>If checked, you will get alerts about case announcements if a stenographer spot is open.</source>
<translation>При заведении дела, в котором нужна стенография, вы получите уведомление.</translation> <translation>При заведении дела, в котором нужна стенография, вы получите уведомление.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="442"/> <location filename="../../src/aooptionsdialog.cpp" line="481"/>
<source>CM:</source> <source>CM:</source>
<translation>ПД:</translation> <translation>ПД:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="443"/> <location filename="../../src/aooptionsdialog.cpp" line="482"/>
<source>If checked, you will appear amongst the potential CMs on the server.</source> <source>If checked, you will appear amongst the potential CMs on the server.</source>
<translation>Отметьте, если вы хотите состоять в числе производителей дел.</translation> <translation>Отметьте, если вы хотите состоять в числе производителей дел.</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="456"/> <location filename="../../src/aooptionsdialog.cpp" line="493"/>
<source>Witness:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="494"/>
<source>If checked, you will appear amongst the potential witnesses on the server.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/aooptionsdialog.cpp" line="507"/>
<source>Hosting cases:</source> <source>Hosting cases:</source>
<translation>ПД акт.:</translation> <translation>ПД акт.:</translation>
</message> </message>
<message> <message>
<location filename="../../src/aooptionsdialog.cpp" line="457"/> <location filename="../../src/aooptionsdialog.cpp" line="508"/>
<source>If you&apos;re a CM, enter what cases you are willing to host.</source> <source>If you&apos;re a CM, enter what cases you are willing to host.</source>
<translation>Будучи производителем дела (ПД), вы можете войти в зону и заниматься её оркестровкой.</translation> <translation>Будучи производителем дела (ПД), вы можете войти в зону и заниматься её оркестровкой.</translation>
</message> </message>
@ -409,36 +455,40 @@ Reason: </source>
<context> <context>
<name>Courtroom</name> <name>Courtroom</name>
<message> <message>
<location filename="../../src/charselect.cpp" line="21"/> <location filename="../../src/charselect.cpp" line="74"/>
<source>Password</source> <source>Password</source>
<translation>Пароль</translation> <translation>Пароль</translation>
</message> </message>
<message> <message>
<location filename="../../src/charselect.cpp" line="27"/> <location filename="../../src/charselect.cpp" line="80"/>
<source>Spectator</source> <source>Spectator</source>
<translation>Наблюдатель</translation> <translation>Наблюдатель</translation>
</message> </message>
<message> <message>
<location filename="../../src/charselect.cpp" line="30"/> <location filename="../../src/charselect.cpp" line="83"/>
<location filename="../../src/courtroom.cpp" line="138"/> <location filename="../../src/courtroom.cpp" line="164"/>
<source>Search</source> <source>Search</source>
<translation>Поиск</translation> <translation>Поиск</translation>
</message> </message>
<message> <message>
<location filename="../../src/charselect.cpp" line="35"/> <location filename="../../src/charselect.cpp" line="88"/>
<source>Passworded</source> <source>Passworded</source>
<translation>Ограничен паролем</translation> <translation>Ограничен паролем</translation>
</message> </message>
<message> <message>
<location filename="../../src/charselect.cpp" line="39"/> <location filename="../../src/charselect.cpp" line="92"/>
<source>Taken</source> <source>Taken</source>
<translation>Занят</translation> <translation>Занят</translation>
</message> </message>
<message> <message>
<location filename="../../src/charselect.cpp" line="217"/> <location filename="../../src/charselect.cpp" line="182"/>
<source>Could not find %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Generating chars: <source>Generating chars:
%1/%2</source> %1/%2</source>
<translation>Генерация персонажей: <translation type="vanished">Генерация персонажей:
%1/%2</translation> %1/%2</translation>
</message> </message>
<message> <message>
@ -448,322 +498,331 @@ Reason: </source>
</translation> </translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="116"/> <location filename="../../src/courtroom.cpp" line="142"/>
<source>Showname</source> <source>Showname</source>
<translation>Имя</translation> <translation>Имя</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="120"/> <location filename="../../src/courtroom.cpp" line="146"/>
<source>Message</source> <source>Message</source>
<translation>Сообщение</translation> <translation>Сообщение</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="130"/> <location filename="../../src/courtroom.cpp" line="156"/>
<source>Name</source> <source>Name</source>
<translation>Никнейм</translation> <translation>Никнейм</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="183"/> <location filename="../../src/courtroom.cpp" line="209"/>
<source>Pre</source> <source>Pre</source>
<translation>Пред.</translation> <translation>Пред.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="186"/> <location filename="../../src/courtroom.cpp" line="212"/>
<source>Flip</source> <source>Flip</source>
<translation>Разв.</translation> <translation>Разв.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="190"/>
<source>Guard</source> <source>Guard</source>
<translation>Охрана</translation> <translation type="vanished">Охрана</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="195"/> <location filename="../../src/courtroom.cpp" line="223"/>
<location filename="../../src/courtroom.cpp" line="608"/> <location filename="../../src/courtroom.cpp" line="637"/>
<source>Casing</source> <source>Casing</source>
<translation>Дело</translation> <translation>Дело</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="200"/> <location filename="../../src/courtroom.cpp" line="228"/>
<source>Shownames</source> <source>Shownames</source>
<translation>Произв. имена</translation> <translation>Произв. имена</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="203"/> <location filename="../../src/courtroom.cpp" line="231"/>
<source>No Interrupt</source> <source>No Interrupt</source>
<translation>Говорить сразу</translation> <translation>Говорить сразу</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="217"/> <location filename="../../src/courtroom.cpp" line="246"/>
<source>White</source> <source>White</source>
<translation>Белый</translation> <translation>Белый</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="218"/> <location filename="../../src/courtroom.cpp" line="247"/>
<source>Green</source> <source>Green</source>
<translation>Зелëный</translation> <translation>Зелëный</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="219"/> <location filename="../../src/courtroom.cpp" line="248"/>
<source>Red</source> <source>Red</source>
<translation>Красный</translation> <translation>Красный</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="220"/> <location filename="../../src/courtroom.cpp" line="249"/>
<source>Orange</source> <source>Orange</source>
<translation>Оранжевый</translation> <translation>Оранжевый</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="221"/> <location filename="../../src/courtroom.cpp" line="250"/>
<source>Blue</source> <source>Blue</source>
<translation>Синий</translation> <translation>Синий</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="222"/> <location filename="../../src/courtroom.cpp" line="251"/>
<source>Yellow</source> <source>Yellow</source>
<translation>Жëлтый</translation> <translation>Жëлтый</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2688"/> <location filename="../../src/courtroom.cpp" line="3040"/>
<source>This does nothing, but there you go.</source> <source>This does nothing, but there you go.</source>
<translation>В общем-то, это ни на что не влияет...</translation> <translation>В общем-то, это ни на что не влияет...</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2824"/> <location filename="../../src/courtroom.cpp" line="3176"/>
<source>You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. <source>You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini.
Cases you can load: %1</source> Cases you can load: %1</source>
<translation>Укажите имя файла с делом (без расширения) для загрузки. Убедитесь, что оно расположено в папке `base/cases`. <translation>Укажите имя файла с делом (без расширения) для загрузки. Убедитесь, что оно расположено в папке `base/cases`.
Были найдены: %1</translation> Были найдены: %1</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2845"/> <location filename="../../src/courtroom.cpp" line="3197"/>
<source>Case made by %1.</source> <source>Case made by %1.</source>
<translation>Дело завëл игрок: %1.</translation> <translation>Дело завëл игрок: %1.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2851"/> <location filename="../../src/courtroom.cpp" line="3203"/>
<source>Navigate to %1 for the CM doc.</source> <source>Navigate to %1 for the CM doc.</source>
<translation>Перейдите к %1 для получения материалов дела.</translation> <translation>Перейдите к %1 для получения материалов дела.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2870"/> <location filename="../../src/courtroom.cpp" line="3222"/>
<source>Your case &quot;%1&quot; was loaded!</source> <source>Your case &quot;%1&quot; was loaded!</source>
<translation>Дело под кодовым названием &quot;%1&quot; готово!</translation> <translation>Дело под кодовым названием &quot;%1&quot; готово!</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="583"/> <location filename="../../src/courtroom.cpp" line="612"/>
<location filename="../../src/courtroom.cpp" line="2959"/> <location filename="../../src/courtroom.cpp" line="3311"/>
<source>Server</source> <source>Server</source>
<translation>Сервер</translation> <translation>Сервер</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="692"/> <location filename="../../src/courtroom.cpp" line="724"/>
<source>Back to Lobby</source> <source>Back to Lobby</source>
<translation>Назад в лобби</translation> <translation>Назад в лобби</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="223"/> <location filename="../../src/courtroom.cpp" line="252"/>
<source>Rainbow</source> <source>Rainbow</source>
<translation>Радужный</translation> <translation>Радужный</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="224"/> <location filename="../../src/courtroom.cpp" line="217"/>
<source>Disable Modcalls</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/courtroom.cpp" line="253"/>
<source>Pink</source> <source>Pink</source>
<translation>Розовый</translation> <translation>Розовый</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="225"/> <location filename="../../src/courtroom.cpp" line="254"/>
<source>Cyan</source> <source>Cyan</source>
<translation>Голубой</translation> <translation>Голубой</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="248"/> <location filename="../../src/courtroom.cpp" line="277"/>
<source>% offset</source> <source>% offset</source>
<translation>% сдвига</translation> <translation>% сдвига</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="566"/> <location filename="../../src/courtroom.cpp" line="595"/>
<source>Music</source> <source>Music</source>
<translation>Музыка</translation> <translation>Музыка</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="568"/> <location filename="../../src/courtroom.cpp" line="597"/>
<source>Sfx</source> <source>Sfx</source>
<translation>Звук. эффекты</translation> <translation>Звук. эффекты</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="570"/> <location filename="../../src/courtroom.cpp" line="599"/>
<source>Blips</source> <source>Blips</source>
<translation>Сигналы</translation> <translation>Сигналы</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="573"/> <location filename="../../src/courtroom.cpp" line="602"/>
<source>Log limit</source> <source>Log limit</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="596"/> <location filename="../../src/courtroom.cpp" line="625"/>
<source>Change character</source> <source>Change character</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="599"/> <location filename="../../src/courtroom.cpp" line="628"/>
<source>Reload theme</source> <source>Reload theme</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="602"/> <location filename="../../src/courtroom.cpp" line="631"/>
<source>Call mod</source> <source>Call mod</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="605"/> <location filename="../../src/courtroom.cpp" line="634"/>
<source>Settings</source> <source>Settings</source>
<translation>Настройки</translation> <translation>Настройки</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="611"/> <location filename="../../src/courtroom.cpp" line="640"/>
<source>A/M</source> <source>A/M</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="614"/> <location filename="../../src/courtroom.cpp" line="643"/>
<source>Preanim</source> <source>Preanim</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2681"/> <location filename="../../src/courtroom.cpp" line="2838"/>
<source>You have been banned.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/courtroom.cpp" line="3033"/>
<source>You were granted the Guard button.</source> <source>You were granted the Guard button.</source>
<translation>Теперь у вас есть кнопка &quot;Охрана&quot;.</translation> <translation>Теперь у вас есть кнопка &quot;Охрана&quot;.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2695"/> <location filename="../../src/courtroom.cpp" line="3047"/>
<source>You opened the settings menu.</source> <source>You opened the settings menu.</source>
<translation>Вы открыли меню настроек.</translation> <translation>Вы открыли меню настроек.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2710"/> <location filename="../../src/courtroom.cpp" line="3062"/>
<source>You will now pair up with </source> <source>You will now pair up with </source>
<translation>Вы встанете парой с персонажем по имени </translation> <translation>Вы встанете парой с персонажем по имени </translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2712"/> <location filename="../../src/courtroom.cpp" line="3064"/>
<source> if they also choose your character in return.</source> <source> if they also choose your character in return.</source>
<translation> (если он выберет вас в ответ).</translation> <translation> (если он выберет вас в ответ).</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2718"/> <location filename="../../src/courtroom.cpp" line="3070"/>
<source>You are no longer paired with anyone.</source> <source>You are no longer paired with anyone.</source>
<translation>Теперь вы не стоите в парах.</translation> <translation>Теперь вы не стоите в парах.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2723"/> <location filename="../../src/courtroom.cpp" line="3075"/>
<source>Are you sure you typed that well? The char ID could not be recognised.</source> <source>Are you sure you typed that well? The char ID could not be recognised.</source>
<translation>Кажется, вам нужно поменять запрос: такой идентификатор персонажа не был найден.</translation> <translation>Кажется, вам нужно поменять запрос: такой идентификатор персонажа не был найден.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2739"/> <location filename="../../src/courtroom.cpp" line="3091"/>
<source>You have set your offset to </source> <source>You have set your offset to </source>
<translation>Вы установили сдвиг персонажа на </translation> <translation>Вы установили сдвиг персонажа на </translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2746"/> <location filename="../../src/courtroom.cpp" line="3098"/>
<source>Your offset must be between -100% and 100%!</source> <source>Your offset must be between -100% and 100%!</source>
<translation>Сдвиг персонажа должен быть между -100% и 100%!</translation> <translation>Сдвиг персонажа должен быть между -100% и 100%!</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2751"/> <location filename="../../src/courtroom.cpp" line="3103"/>
<source>That offset does not look like one.</source> <source>That offset does not look like one.</source>
<translation>Неверный сдвиг персонажа.</translation> <translation>Неверный сдвиг персонажа.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2757"/> <location filename="../../src/courtroom.cpp" line="3109"/>
<source>You switched your music and area list.</source> <source>You switched your music and area list.</source>
<translation>Вы переключили перечень зон и музыки.</translation> <translation>Вы переключили перечень зон и музыки.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2764"/> <location filename="../../src/courtroom.cpp" line="3116"/>
<source>You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this.</source> <source>You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this.</source>
<translation>Из-за того, что вы включили не поддержимаемые сервером возможности, он может не принять ваши сообщения.</translation> <translation>Из-за того, что вы включили не поддержимаемые сервером возможности, он может не принять ваши сообщения.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2775"/> <location filename="../../src/courtroom.cpp" line="3127"/>
<source>Your pre-animations interrupt again.</source> <source>Your pre-animations interrupt again.</source>
<translation>Персонаж будет говорить только после анимации.</translation> <translation>Персонаж будет говорить только после анимации.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2777"/> <location filename="../../src/courtroom.cpp" line="3129"/>
<source>Your pre-animations will not interrupt text.</source> <source>Your pre-animations will not interrupt text.</source>
<translation>Персонаж будет говорить и во время анимации.</translation> <translation>Персонаж будет говорить и во время анимации.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2788"/> <location filename="../../src/courtroom.cpp" line="3140"/>
<source>Couldn&apos;t open chatlog.txt to write into.</source> <source>Couldn&apos;t open chatlog.txt to write into.</source>
<translation>Не могу открыть `chatlog.txt` для записи лога.</translation> <translation>Не могу открыть `chatlog.txt` для записи лога.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2801"/> <location filename="../../src/courtroom.cpp" line="3153"/>
<source>The IC chatlog has been saved.</source> <source>The IC chatlog has been saved.</source>
<translation>Лог игрового чата сохранëн.</translation> <translation>Лог игрового чата сохранëн.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2813"/> <location filename="../../src/courtroom.cpp" line="3165"/>
<source>You don&apos;t have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it&apos;s likely the case file you&apos;re looking for can&apos;t be found in there.</source> <source>You don&apos;t have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it&apos;s likely the case file you&apos;re looking for can&apos;t be found in there.</source>
<translation>Файл с делом не найден. Если найдëте, положите его в папку `base/cases/`, которую мы для вас создали.</translation> <translation>Файл с делом не найден. Если найдëте, положите его в папку `base/cases/`, которую мы для вас создали.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2832"/> <location filename="../../src/courtroom.cpp" line="3184"/>
<source>Too many arguments to load a case! You only need one filename, without extension.</source> <source>Too many arguments to load a case! You only need one filename, without extension.</source>
<translation>Введите имя файла без расширения.</translation> <translation>Введите имя файла без расширения.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2882"/> <location filename="../../src/courtroom.cpp" line="3234"/>
<source>You don&apos;t have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it&apos;s likely that you somehow deleted it.</source> <source>You don&apos;t have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it&apos;s likely that you somehow deleted it.</source>
<translation>Папка `base/cases/` отсутствует!</translation> <translation>Папка `base/cases/` отсутствует!</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2893"/> <location filename="../../src/courtroom.cpp" line="3245"/>
<source>You need to give a filename to save (extension not needed) and the courtroom status!</source> <source>You need to give a filename to save (extension not needed) and the courtroom status!</source>
<translation>Введите имя файла (без расширения) и предоставьте статус зоны.</translation> <translation>Введите имя файла (без расширения) и предоставьте статус зоны.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2901"/> <location filename="../../src/courtroom.cpp" line="3253"/>
<source>Too many arguments to save a case! You only need a filename without extension and the courtroom status!</source> <source>Too many arguments to save a case! You only need a filename without extension and the courtroom status!</source>
<translation>Убедитесь, что имя файла не содержит расширение.</translation> <translation>Убедитесь, что имя файла не содержит расширение.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2923"/> <location filename="../../src/courtroom.cpp" line="3275"/>
<source>Succesfully saved, edit doc and cmdoc link on the ini!</source> <source>Succesfully saved, edit doc and cmdoc link on the ini!</source>
<translation>Сохранение прошло успешно!</translation> <translation>Сохранение прошло успешно!</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="2951"/> <location filename="../../src/courtroom.cpp" line="3303"/>
<source>Master</source> <source>Master</source>
<translation>Мастер</translation> <translation>Мастер</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="3422"/> <location filename="../../src/courtroom.cpp" line="3793"/>
<source>Reason:</source> <source>Reason:</source>
<translation>Причина:</translation> <translation>Причина:</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="3423"/> <location filename="../../src/courtroom.cpp" line="3794"/>
<source>Call Moderator</source> <source>Call Moderator</source>
<translation>Позвать модератора</translation> <translation>Позвать модератора</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="3431"/> <location filename="../../src/courtroom.cpp" line="3802"/>
<location filename="../../src/courtroom.cpp" line="3434"/> <location filename="../../src/courtroom.cpp" line="3805"/>
<source>Error</source> <source>Error</source>
<translation>Ошибка</translation> <translation>Ошибка</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="3431"/> <location filename="../../src/courtroom.cpp" line="3802"/>
<source>You must provide a reason.</source> <source>You must provide a reason.</source>
<translation>Укажите причину.</translation> <translation>Укажите причину.</translation>
</message> </message>
<message> <message>
<location filename="../../src/courtroom.cpp" line="3434"/> <location filename="../../src/courtroom.cpp" line="3805"/>
<source>The message is too long.</source> <source>The message is too long.</source>
<translation>Слишком длинный текст.</translation> <translation>Слишком длинный текст.</translation>
</message> </message>
@ -796,40 +855,40 @@ Cases you can load: %1</source>
<translation>Никнейм</translation> <translation>Никнейм</translation>
</message> </message>
<message> <message>
<location filename="../../src/lobby.cpp" line="74"/> <location filename="../../src/lobby.cpp" line="75"/>
<source>It doesn&apos;t look like your client is set up correctly. <source>It doesn&apos;t look like your client is set up correctly.
Did you download all resources correctly from tiny.cc/getao, including the large &apos;base&apos; folder?</source> Did you download all resources correctly from tiny.cc/getao, including the large &apos;base&apos; folder?</source>
<translation>Не похоже, что ваш клиент установлен правильно. <translation>Не похоже, что ваш клиент установлен правильно.
Скачали ли вы все ресурсы (tiny.cc/getao), включая огромную папку `base`?</translation> Скачали ли вы все ресурсы (tiny.cc/getao), включая огромную папку `base`?</translation>
</message> </message>
<message> <message>
<location filename="../../src/lobby.cpp" line="104"/> <location filename="../../src/lobby.cpp" line="105"/>
<source>Version: %1</source> <source>Version: %1</source>
<translation>Версия: %1</translation> <translation>Версия: %1</translation>
</message> </message>
<message> <message>
<location filename="../../src/lobby.cpp" line="147"/> <location filename="../../src/lobby.cpp" line="148"/>
<source>Loading</source> <source>Loading</source>
<translation>Загрузка</translation> <translation>Загрузка</translation>
</message> </message>
<message> <message>
<location filename="../../src/lobby.cpp" line="151"/> <location filename="../../src/lobby.cpp" line="152"/>
<source>Cancel</source> <source>Cancel</source>
<translation>Отмена</translation> <translation>Отмена</translation>
</message> </message>
<message> <message>
<location filename="../../src/lobby.cpp" line="270"/> <location filename="../../src/lobby.cpp" line="275"/>
<source>&lt;h2&gt;Attorney Online %1&lt;/h2&gt;The courtroom drama simulator&lt;p&gt;&lt;b&gt;Source code:&lt;/b&gt; &lt;a href=&apos;https://github.com/AttorneyOnline/AO2-Client&apos;&gt;https://github.com/AttorneyOnline/AO2-Client&lt;/a&gt;&lt;p&gt;&lt;b&gt;Major development:&lt;/b&gt;&lt;br&gt;OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter&lt;p&gt;&lt;b&gt;Special thanks:&lt;/b&gt;&lt;br&gt;Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy</source> <source>&lt;h2&gt;Attorney Online %1&lt;/h2&gt;The courtroom drama simulator&lt;p&gt;&lt;b&gt;Source code:&lt;/b&gt; &lt;a href=&apos;https://github.com/AttorneyOnline/AO2-Client&apos;&gt;https://github.com/AttorneyOnline/AO2-Client&lt;/a&gt;&lt;p&gt;&lt;b&gt;Major development:&lt;/b&gt;&lt;br&gt;OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter&lt;p&gt;&lt;b&gt;Special thanks:&lt;/b&gt;&lt;br&gt;Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy</source>
<translation>&lt;h2&gt;Attorney Online %1&lt;/h2&gt;Симулятор судебной драмы&lt;p&gt;&lt;b&gt;Исходный код:&lt;/b&gt; &lt;a href=&apos;https://github.com/AttorneyOnline/AO2-Client&apos;&gt;https://github.com/AttorneyOnline/AO2-Client&lt;/a&gt;&lt;p&gt;&lt;b&gt;Основной разработкой занимались:&lt;/b&gt;&lt;br&gt;OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter&lt;p&gt;&lt;b&gt;Особенная благодарность:&lt;/b&gt;&lt;br&gt;Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (дизайн интерфейса), Draxirch (дизайн интерфейса), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy</translation> <translation>&lt;h2&gt;Attorney Online %1&lt;/h2&gt;Симулятор судебной драмы&lt;p&gt;&lt;b&gt;Исходный код:&lt;/b&gt; &lt;a href=&apos;https://github.com/AttorneyOnline/AO2-Client&apos;&gt;https://github.com/AttorneyOnline/AO2-Client&lt;/a&gt;&lt;p&gt;&lt;b&gt;Основной разработкой занимались:&lt;/b&gt;&lt;br&gt;OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter&lt;p&gt;&lt;b&gt;Особенная благодарность:&lt;/b&gt;&lt;br&gt;Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (дизайн интерфейса), Draxirch (дизайн интерфейса), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy</translation>
</message> </message>
<message> <message>
<location filename="../../src/lobby.cpp" line="376"/> <location filename="../../src/lobby.cpp" line="393"/>
<source>Online: %1/%2</source> <source>Online: %1/%2</source>
<translation>Онлайн: %1/%2</translation> <translation>Онлайн: %1/%2</translation>
</message> </message>
<message> <message>
<location filename="../../src/lobby.cpp" line="114"/> <location filename="../../src/lobby.cpp" line="115"/>
<location filename="../../src/lobby.cpp" line="316"/> <location filename="../../src/lobby.cpp" line="325"/>
<source>Offline</source> <source>Offline</source>
<translation>Вне сети</translation> <translation>Вне сети</translation>
</message> </message>

View File

@ -54,12 +54,15 @@ AOCaseAnnouncerDialog::AOCaseAnnouncerDialog(QWidget *parent, AOApplication *p_a
ui_juror_needed->setText(tr("Jurors needed")); ui_juror_needed->setText(tr("Jurors needed"));
ui_steno_needed = new QCheckBox(this); ui_steno_needed = new QCheckBox(this);
ui_steno_needed->setText(tr("Stenographer needed")); ui_steno_needed->setText(tr("Stenographer needed"));
ui_witness_needed = new QCheckBox(this);
ui_witness_needed->setText(tr("Witness needed"));
ui_form_layout->setWidget(1, QFormLayout::FieldRole, ui_defense_needed); ui_form_layout->setWidget(1, QFormLayout::FieldRole, ui_defense_needed);
ui_form_layout->setWidget(2, QFormLayout::FieldRole, ui_prosecutor_needed); ui_form_layout->setWidget(2, QFormLayout::FieldRole, ui_prosecutor_needed);
ui_form_layout->setWidget(3, QFormLayout::FieldRole, ui_judge_needed); ui_form_layout->setWidget(3, QFormLayout::FieldRole, ui_judge_needed);
ui_form_layout->setWidget(4, QFormLayout::FieldRole, ui_juror_needed); ui_form_layout->setWidget(4, QFormLayout::FieldRole, ui_juror_needed);
ui_form_layout->setWidget(5, QFormLayout::FieldRole, ui_steno_needed); ui_form_layout->setWidget(5, QFormLayout::FieldRole, ui_steno_needed);
ui_form_layout->setWidget(6, QFormLayout::FieldRole, ui_witness_needed);
setUpdatesEnabled(true); setUpdatesEnabled(true);
} }
@ -71,7 +74,8 @@ void AOCaseAnnouncerDialog::ok_pressed()
ui_prosecutor_needed->isChecked(), ui_prosecutor_needed->isChecked(),
ui_judge_needed->isChecked(), ui_judge_needed->isChecked(),
ui_juror_needed->isChecked(), ui_juror_needed->isChecked(),
ui_steno_needed->isChecked()); ui_steno_needed->isChecked(),
ui_witness_needed->isChecked());
done(0); done(0);
} }

View File

@ -7,27 +7,31 @@
AOCharMovie::AOCharMovie(QWidget *p_parent, AOApplication *p_ao_app) : QLabel(p_parent) AOCharMovie::AOCharMovie(QWidget *p_parent, AOApplication *p_ao_app) : QLabel(p_parent)
{ {
ao_app = p_ao_app; ao_app = p_ao_app;
m_movie = new QMovie(this); m_movie = new QMovie(this);
preanim_timer = new QTimer(this); preanim_timer = new QTimer(this);
ticker = new QTimer(this);
preanim_timer->setSingleShot(true); preanim_timer->setSingleShot(true);
ticker->setSingleShot(true);
connect(m_movie, SIGNAL(frameChanged(int)), this, SLOT(frame_change(int))); connect(ticker, SIGNAL(timeout()), this, SLOT(movie_ticker()));
connect(preanim_timer, SIGNAL(timeout()), this, SLOT(timer_done())); this->setUpdatesEnabled(true);
} }
void AOCharMovie::play(QString p_char, QString p_emote, QString emote_prefix) void AOCharMovie::play(QString p_char, QString p_emote, QString emote_prefix)
{ {
apng = false;
QString original_path = ao_app->get_character_path(p_char, emote_prefix + p_emote + ".gif"); QString original_path = ao_app->get_character_path(p_char, emote_prefix + p_emote + ".gif");
QString alt_path = ao_app->get_character_path(p_char, p_emote + ".png"); QString alt_path = ao_app->get_character_path(p_char, emote_prefix + p_emote + ".png");
QString apng_path = ao_app->get_character_path(p_char, emote_prefix + p_emote + ".apng"); QString apng_path = ao_app->get_character_path(p_char, emote_prefix + p_emote + ".apng");
QString placeholder_path = ao_app->get_theme_path("placeholder.gif"); QString placeholder_path = ao_app->get_theme_path("placeholder.gif");
QString placeholder_default_path = ao_app->get_default_theme_path("placeholder.gif"); QString placeholder_default_path = ao_app->get_default_theme_path("placeholder.gif");
QString gif_path; QString gif_path;
current_emote = emote_prefix + p_emote;
current_char = p_char;
if (file_exists(apng_path)) if (file_exists(apng_path))
{
gif_path = apng_path; gif_path = apng_path;
apng = true;
}
else if (file_exists(original_path)) else if (file_exists(original_path))
gif_path = original_path; gif_path = original_path;
else if (file_exists(alt_path)) else if (file_exists(alt_path))
@ -36,138 +40,151 @@ void AOCharMovie::play(QString p_char, QString p_emote, QString emote_prefix)
gif_path = placeholder_path; gif_path = placeholder_path;
else else
gif_path = placeholder_default_path; gif_path = placeholder_default_path;
last_path = gif_path;
m_movie->stop(); delete m_movie;
m_movie->setFileName(gif_path); m_movie = new QMovie(this);
QImageReader *reader = new QImageReader(gif_path);
movie_frames.clear();
QImage f_image = reader->read();
while (!f_image.isNull())
{
if (m_flipped)
movie_frames.append(f_image.mirrored(true, false));
else
movie_frames.append(f_image);
f_image = reader->read();
}
delete reader;
this->show();
m_movie->start();
}
void AOCharMovie::play_pre(QString p_char, QString p_emote, int duration)
{
QString gif_path = ao_app->get_character_path(p_char, p_emote);
m_movie->stop(); m_movie->stop();
this->clear(); this->clear();
m_movie->setFileName(gif_path); m_movie->setFileName(gif_path);
m_movie->jumpToFrame(0); m_movie->jumpToFrame(0);
this->LoadImageWithStupidMethodForFlipSupport(m_movie->currentImage());
this->show();
this->play_frame_sfx();
ticker->start(m_movie->nextFrameDelay());
}
int full_duration = duration * time_mod; void AOCharMovie::play_frame_sfx()
int real_duration = 0; {
int current_frame = m_movie->currentFrameNumber();
play_once = false; QString sfx_to_play = ao_app->get_frame_sfx_name(current_char, current_emote, current_frame);
QString screenshake_to_play = ao_app->get_screenshake_frame(current_char, current_emote, current_frame);
for (int n_frame = 0 ; n_frame < m_movie->frameCount() ; ++n_frame) QString realization_to_play = ao_app->get_realization_frame(current_char, current_emote, current_frame);
if(sfx_to_play != "" && !use_networked_framehell)
{ {
real_duration += m_movie->nextFrameDelay(); frame_specific_sfx_player->play(ao_app->get_sfx_suffix(sfx_to_play));
m_movie->jumpToFrame(n_frame + 1);
} }
else if(use_networked_framehell)
#ifdef DEBUG_GIF
qDebug() << "full_duration: " << full_duration;
qDebug() << "real_duration: " << real_duration;
#endif
double percentage_modifier = 100.0;
if (real_duration != 0 && duration != 0)
{ {
double modifier = full_duration / static_cast<double>(real_duration); this->sfx_two_network_boogaloo();
percentage_modifier = 100 / modifier;
if (percentage_modifier > 100.0)
percentage_modifier = 100.0;
} }
if(screenshake_to_play != "" && !use_networked_framehell)
#ifdef DEBUG_GIF
qDebug() << "% mod: " << percentage_modifier;
#endif
if (full_duration == 0 || full_duration >= real_duration)
{ {
play_once = true; mycourtroom->doScreenShake();
}
else if(use_networked_framehell)
{
this->screenshake_two_network_boogaloo();
}
if(realization_to_play != "" && !use_networked_framehell)
{
mycourtroom->doRealization();
}
else if(use_networked_framehell)
{
this->realization_two_network_boogaloo();
}
}
void AOCharMovie::realization_two_network_boogaloo()
{
int current_frame = m_movie->currentFrameNumber();
QStringList realizationList = this->frame_realization_hellstring.split("^");
for (int i = 0; i < realizationList.length(); i++) {
QString screenshakeList = realizationList.at(i);
QStringList extra_garbage = screenshakeList.split("|");
if(extra_garbage.at(0) != current_emote){
continue;
}
for (int ii = 1; ii < extra_garbage.length(); ii++) {
QString levels_of_garbage = extra_garbage.at(ii);
QStringList that_shouldnt_be_possible = levels_of_garbage.split("=");
if(that_shouldnt_be_possible.at(0).toInt() == current_frame && that_shouldnt_be_possible.at(1) != "") {
mycourtroom->doRealization();
}
}
}
}
void AOCharMovie::screenshake_two_network_boogaloo()
{
int current_frame = m_movie->currentFrameNumber();
QStringList realizationList = this->frame_screenshake_hellstring.split("^");
for (int i = 0; i < realizationList.length(); i++) {
QString screenshakeList = realizationList.at(i);
QStringList extra_garbage = screenshakeList.split("|");
if(extra_garbage.at(0) != current_emote){
continue;
}
for (int ii = 1; ii < extra_garbage.length(); ii++) {
QString levels_of_garbage = extra_garbage.at(ii);
QStringList that_shouldnt_be_possible = levels_of_garbage.split("=");
if(that_shouldnt_be_possible.at(0).toInt() == current_frame && that_shouldnt_be_possible.at(1) != "") {
mycourtroom->doScreenShake();
}
}
}
}
void AOCharMovie::sfx_two_network_boogaloo()
{
int current_frame = m_movie->currentFrameNumber();
QStringList realizationList = this->frame_sfx_hellstring.split("^");
for (int i = 0; i < realizationList.length(); i++) {
QString screenshakeList = realizationList.at(i);
QStringList extra_garbage = screenshakeList.split("|");
if(extra_garbage.at(0) != current_emote){
continue;
}
for (int ii = 1; ii < extra_garbage.length(); ii++) {
QString levels_of_garbage = extra_garbage.at(ii);
QStringList that_shouldnt_be_possible = levels_of_garbage.split("=");
if(that_shouldnt_be_possible.at(0).toInt() == current_frame && that_shouldnt_be_possible.at(1) != "") {
frame_specific_sfx_player->play(ao_app->get_sfx_suffix(that_shouldnt_be_possible.at(1)));
}
}
}
}
void AOCharMovie::movie_ticker()
{
if(apng){
ticker->start(m_movie->nextFrameDelay());
}
if(m_movie->currentFrameNumber() == m_movie->frameCount() - 1)
{
delete m_movie;
m_movie = new QMovie(this);
m_movie->stop();
this->clear();
m_movie->setFileName(last_path);
m_movie->jumpToFrame(0);
if(play_once)
{
timer_done();
}
} }
else else
{ {
play_once = false; m_movie->jumpToNextFrame();
preanim_timer->start(full_duration); }
this->LoadImageWithStupidMethodForFlipSupport(m_movie->currentImage());
// imagine if QT had sane stuff like "mirror on QMovie" or "resize the image on QT" or "interface with the current QMovie image" or anything else
this->play_frame_sfx();
if(!apng){
ticker->start(m_movie->nextFrameDelay());
} }
m_movie->setSpeed(static_cast<int>(percentage_modifier));
play(p_char, p_emote, "");
} }
void AOCharMovie::play_talking(QString p_char, QString p_emote) void AOCharMovie::LoadImageWithStupidMethodForFlipSupport(QImage image)
{ {
QString gif_path = ao_app->get_character_path(p_char, "(b)" + p_emote); QPixmap f_pixmap;
if(m_flipped)
m_movie->stop(); f_pixmap = QPixmap::fromImage(image.mirrored(true, false));
this->clear(); else
m_movie->setFileName(gif_path); f_pixmap = QPixmap::fromImage(image);
play_once = false;
m_movie->setSpeed(100);
play(p_char, p_emote, "(b)");
}
void AOCharMovie::play_idle(QString p_char, QString p_emote)
{
QString gif_path = ao_app->get_character_path(p_char, "(a)" + p_emote);
m_movie->stop();
this->clear();
m_movie->setFileName(gif_path);
play_once = false;
m_movie->setSpeed(100);
play(p_char, p_emote, "(a)");
}
void AOCharMovie::stop()
{
//for all intents and purposes, stopping is the same as hiding. at no point do we want a frozen gif to display
m_movie->stop();
preanim_timer->stop();
this->hide();
}
void AOCharMovie::combo_resize(int w, int h)
{
QSize f_size(w, h);
this->resize(f_size);
m_movie->setScaledSize(f_size);
}
void AOCharMovie::move(int ax, int ay)
{
x = ax;
y = ay;
QLabel::move(x, y);
}
void AOCharMovie::frame_change(int n_frame)
{
if (movie_frames.size() > n_frame)
{
QPixmap f_pixmap = QPixmap::fromImage(movie_frames.at(n_frame));
auto aspect_ratio = Qt::KeepAspectRatio; auto aspect_ratio = Qt::KeepAspectRatio;
if (f_pixmap.size().width() > f_pixmap.size().height()) if (f_pixmap.size().width() > f_pixmap.size().height())
@ -179,17 +196,54 @@ void AOCharMovie::frame_change(int n_frame)
this->setPixmap(f_pixmap.scaled(this->width(), this->height(), aspect_ratio, Qt::FastTransformation)); this->setPixmap(f_pixmap.scaled(this->width(), this->height(), aspect_ratio, Qt::FastTransformation));
QLabel::move(x + (this->width() - this->pixmap()->width())/2, y); QLabel::move(x + (this->width() - this->pixmap()->width())/2, y);
} }
if (m_movie->frameCount() - 1 == n_frame && play_once) void AOCharMovie::play_pre(QString p_char, QString p_emote, int duration)
{ {
preanim_timer->start(m_movie->nextFrameDelay()); QString gif_path = ao_app->get_character_path(p_char, p_emote);
m_movie->stop();
} m_movie->stop();
m_movie->setFileName(gif_path);
m_movie->jumpToFrame(0);
int real_duration = 0;
play_once = true;
play(p_char, p_emote, "");
}
void AOCharMovie::play_talking(QString p_char, QString p_emote)
{
play_once = false;
play(p_char, p_emote, "(b)");
}
void AOCharMovie::play_idle(QString p_char, QString p_emote)
{
play_once = false;
play(p_char, p_emote, "(a)");
}
void AOCharMovie::stop()
{
//for all intents and purposes, stopping is the same as hiding. at no point do we want a frozen gif to display
m_movie->stop();
frame_specific_sfx_player->stop();
this->hide();
}
void AOCharMovie::combo_resize(int w, int h)
{
QSize f_size(w, h);
this->resize(f_size);
m_movie->setScaledSize(this->size());
}
void AOCharMovie::move(int ax, int ay)
{
x = ax;
y = ay;
QLabel::move(x, y);
} }
void AOCharMovie::timer_done() void AOCharMovie::timer_done()
{ {
done(); done();
} }

View File

@ -90,15 +90,11 @@ void AOEvidenceButton::mouseDoubleClickEvent(QMouseEvent *e)
void AOEvidenceButton::dragLeaveEvent(QMouseEvent *e) void AOEvidenceButton::dragLeaveEvent(QMouseEvent *e)
{ {
//QWidget::dragLeaveEvent(e); //QWidget::dragLeaveEvent(e);
qDebug() << "drag leave event";
} }
void AOEvidenceButton::dragEnterEvent(QMouseEvent *e) void AOEvidenceButton::dragEnterEvent(QMouseEvent *e)
{ {
//QWidget::dragEnterEvent(e); //QWidget::dragEnterEvent(e);
qDebug() << "drag enter event";
} }
*/ */

View File

@ -1,7 +1,7 @@
#include "aomusicplayer.h" #include "aomusicplayer.h"
#if defined(BASSAUDIO) #if defined(BASSAUDIO)
AOMusicPlayer::AOMusicPlayer(QWidget *parent, AOApplication *p_ao_app) AOMusicPlayer::AOMusicPlayer(QWidget *parent, AOApplication *p_ao_app): QObject()
{ {
m_parent = parent; m_parent = parent;
ao_app = p_ao_app; ao_app = p_ao_app;
@ -9,14 +9,14 @@ AOMusicPlayer::AOMusicPlayer(QWidget *parent, AOApplication *p_ao_app)
AOMusicPlayer::~AOMusicPlayer() AOMusicPlayer::~AOMusicPlayer()
{ {
BASS_ChannelStop(m_stream); kill_loop();
} }
void AOMusicPlayer::play(QString p_song) void AOMusicPlayer::play(QString p_song)
{ {
BASS_ChannelStop(m_stream); BASS_ChannelStop(m_stream);
QString f_path = ao_app->get_music_path(p_song); f_path = ao_app->get_music_path(p_song);
m_stream = BASS_StreamCreateFile(FALSE, f_path.utf16(), 0, 0, BASS_STREAM_AUTOFREE | BASS_UNICODE | BASS_ASYNCFILE); m_stream = BASS_StreamCreateFile(FALSE, f_path.utf16(), 0, 0, BASS_STREAM_AUTOFREE | BASS_UNICODE | BASS_ASYNCFILE);
@ -24,7 +24,18 @@ void AOMusicPlayer::play(QString p_song)
if (ao_app->get_audio_output_device() != "default") if (ao_app->get_audio_output_device() != "default")
BASS_ChannelSetDevice(m_stream, BASS_GetDevice()); BASS_ChannelSetDevice(m_stream, BASS_GetDevice());
if(enable_looping)
{
BASS_ChannelFlags(m_stream, BASS_SAMPLE_LOOP, BASS_SAMPLE_LOOP);
}
else
{
BASS_ChannelFlags(m_stream, 0, BASS_SAMPLE_LOOP);
}
BASS_ChannelPlay(m_stream, false); BASS_ChannelPlay(m_stream, false);
} }
void AOMusicPlayer::set_volume(int p_value) void AOMusicPlayer::set_volume(int p_value)
@ -33,8 +44,19 @@ void AOMusicPlayer::set_volume(int p_value)
float volume = m_volume / 100.0f; float volume = m_volume / 100.0f;
BASS_ChannelSetAttribute(m_stream, BASS_ATTRIB_VOL, volume); BASS_ChannelSetAttribute(m_stream, BASS_ATTRIB_VOL, volume);
} }
QString AOMusicPlayer::get_path()
{
return f_path;
}
void AOMusicPlayer::kill_loop()
{
BASS_ChannelStop(m_stream);
}
#elif defined(QTAUDIO) #elif defined(QTAUDIO)
AOMusicPlayer::AOMusicPlayer(QWidget *parent, AOApplication *p_ao_app) AOMusicPlayer::AOMusicPlayer(QWidget *parent, AOApplication *p_ao_app): QObject()
{ {
m_parent = parent; m_parent = parent;
ao_app = p_ao_app; ao_app = p_ao_app;
@ -63,8 +85,18 @@ void AOMusicPlayer::set_volume(int p_value)
m_volume = p_value; m_volume = p_value;
m_player.setVolume(m_volume); m_player.setVolume(m_volume);
} }
QString AOMusicPlayer::get_path()
{
return f_path;
}
void AOMusicPlayer::kill_loop()
{
// TODO QTAUDIO
}
#else #else
AOMusicPlayer::AOMusicPlayer(QWidget *parent, AOApplication *p_ao_app) AOMusicPlayer::AOMusicPlayer(QWidget *parent, AOApplication *p_ao_app): QObject()
{ {
m_parent = parent; m_parent = parent;
ao_app = p_ao_app; ao_app = p_ao_app;
@ -84,4 +116,14 @@ void AOMusicPlayer::set_volume(int p_value)
{ {
} }
#endif
QString AOMusicPlayer::get_path()
{
return f_path;
}
void AOMusicPlayer::kill_loop()
{
}
#endif

View File

@ -166,10 +166,21 @@ AOOptionsDialog::AOOptionsDialog(QWidget *parent, AOApplication *p_ao_app) : QDi
ui_gameplay_form->setWidget(9, QFormLayout::FieldRole, ui_discord_cb); ui_gameplay_form->setWidget(9, QFormLayout::FieldRole, ui_discord_cb);
ui_epilepsy_lbl = new QLabel(ui_form_layout_widget);
ui_epilepsy_lbl->setText(tr("Allow Shake/Flash:"));
ui_epilepsy_lbl->setToolTip(tr("Allows screenshaking and flashing. Disable this if you have concerns or issues with photosensitivity and/or seizures."));
ui_gameplay_form->setWidget(10, QFormLayout::LabelRole, ui_epilepsy_lbl);
ui_epilepsy_cb = new QCheckBox(ui_form_layout_widget);
ui_epilepsy_cb->setChecked(ao_app->is_shakeandflash_enabled());
ui_gameplay_form->setWidget(10, QFormLayout::FieldRole, ui_epilepsy_cb);
ui_language_label = new QLabel(ui_form_layout_widget); ui_language_label = new QLabel(ui_form_layout_widget);
ui_language_label->setText(tr("Language:")); ui_language_label->setText(tr("Language:"));
ui_language_label->setToolTip(tr("Sets the language if you don't want to use your system language.")); ui_language_label->setToolTip(tr("Sets the language if you don't want to use your system language."));
ui_gameplay_form->setWidget(10, QFormLayout::LabelRole, ui_language_label); ui_gameplay_form->setWidget(11, QFormLayout::LabelRole, ui_language_label);
ui_language_combobox = new QComboBox(ui_form_layout_widget); ui_language_combobox = new QComboBox(ui_form_layout_widget);
ui_language_combobox->addItem(configini->value("language", " ").value<QString>() + " - Keep current setting"); ui_language_combobox->addItem(configini->value("language", " ").value<QString>() + " - Keep current setting");
@ -179,7 +190,7 @@ AOOptionsDialog::AOOptionsDialog(QWidget *parent, AOApplication *p_ao_app) : QDi
ui_language_combobox->addItem("es - Español"); ui_language_combobox->addItem("es - Español");
ui_language_combobox->addItem("jp - 日本語"); ui_language_combobox->addItem("jp - 日本語");
ui_language_combobox->addItem("ru - Русский"); ui_language_combobox->addItem("ru - Русский");
ui_gameplay_form->setWidget(10, QFormLayout::FieldRole, ui_language_combobox); ui_gameplay_form->setWidget(11, QFormLayout::FieldRole, ui_language_combobox);
// Here we start the callwords tab. // Here we start the callwords tab.
ui_callwords_tab = new QWidget(); ui_callwords_tab = new QWidget();
@ -334,6 +345,29 @@ AOOptionsDialog::AOOptionsDialog(QWidget *parent, AOApplication *p_ao_app) : QDi
ui_audio_layout->setWidget(7, QFormLayout::FieldRole, ui_blank_blips_cb); ui_audio_layout->setWidget(7, QFormLayout::FieldRole, ui_blank_blips_cb);
ui_loopsfx_lbl = new QLabel(ui_audio_widget);
ui_loopsfx_lbl->setText(tr("Enable Looping SFX:"));
ui_loopsfx_lbl->setToolTip(tr("If true, the game will allow looping sound effects to play on preanimations."));
ui_audio_layout->setWidget(8, QFormLayout::LabelRole, ui_loopsfx_lbl);
ui_loopsfx_cb = new QCheckBox(ui_audio_widget);
ui_loopsfx_cb->setChecked(p_ao_app->get_looping_sfx());
ui_audio_layout->setWidget(8, QFormLayout::FieldRole, ui_loopsfx_cb);
ui_objectmusic_lbl = new QLabel(ui_audio_widget);
ui_objectmusic_lbl->setText(tr("Kill Music On Objection:"));
ui_objectmusic_lbl->setToolTip(tr("If true, the game will stop music when someone objects, like in the actual games."));
ui_audio_layout->setWidget(9, QFormLayout::LabelRole, ui_objectmusic_lbl);
ui_objectmusic_cb = new QCheckBox(ui_audio_widget);
ui_objectmusic_cb->setChecked(p_ao_app->get_objectmusic());
ui_audio_layout->setWidget(9, QFormLayout::FieldRole, ui_objectmusic_cb);
// The casing tab! // The casing tab!
ui_casing_tab = new QWidget(); ui_casing_tab = new QWidget();
ui_settings_tabs->addTab(ui_casing_tab, tr("Casing")); ui_settings_tabs->addTab(ui_casing_tab, tr("Casing"));
@ -455,6 +489,18 @@ AOOptionsDialog::AOOptionsDialog(QWidget *parent, AOApplication *p_ao_app) : QDi
ui_casing_layout->setWidget(7, QFormLayout::FieldRole, ui_casing_cm_cb); ui_casing_layout->setWidget(7, QFormLayout::FieldRole, ui_casing_cm_cb);
ui_casing_wit_lbl = new QLabel(ui_casing_widget);
ui_casing_wit_lbl->setText(tr("Witness:"));
ui_casing_wit_lbl->setToolTip(tr("If checked, you will appear amongst the potential "
"witnesses on the server."));
ui_casing_layout->setWidget(8, QFormLayout::LabelRole, ui_casing_wit_lbl);
ui_casing_wit_cb = new QCheckBox(ui_casing_widget);
ui_casing_wit_cb->setChecked(ao_app->get_casing_wit_enabled());
ui_casing_layout->setWidget(8, QFormLayout::FieldRole, ui_casing_wit_cb);
// -- CM CASES ANNOUNCEMENTS // -- CM CASES ANNOUNCEMENTS
ui_casing_cm_cases_lbl = new QLabel(ui_casing_widget); ui_casing_cm_cases_lbl = new QLabel(ui_casing_widget);
@ -462,12 +508,12 @@ AOOptionsDialog::AOOptionsDialog(QWidget *parent, AOApplication *p_ao_app) : QDi
ui_casing_cm_cases_lbl->setToolTip(tr("If you're a CM, enter what cases you are " ui_casing_cm_cases_lbl->setToolTip(tr("If you're a CM, enter what cases you are "
"willing to host.")); "willing to host."));
ui_casing_layout->setWidget(8, QFormLayout::LabelRole, ui_casing_cm_cases_lbl); ui_casing_layout->setWidget(9, QFormLayout::LabelRole, ui_casing_cm_cases_lbl);
ui_casing_cm_cases_textbox = new QLineEdit(ui_casing_widget); ui_casing_cm_cases_textbox = new QLineEdit(ui_casing_widget);
ui_casing_cm_cases_textbox->setText(ao_app->get_casing_can_host_cases()); ui_casing_cm_cases_textbox->setText(ao_app->get_casing_can_host_cases());
ui_casing_layout->setWidget(8, QFormLayout::FieldRole, ui_casing_cm_cases_textbox); ui_casing_layout->setWidget(9, QFormLayout::FieldRole, ui_casing_cm_cases_textbox);
// When we're done, we should continue the updates! // When we're done, we should continue the updates!
setUpdatesEnabled(true); setUpdatesEnabled(true);
@ -485,6 +531,7 @@ void AOOptionsDialog::save_pressed()
configini->setValue("show_custom_shownames", ui_showname_cb->isChecked()); configini->setValue("show_custom_shownames", ui_showname_cb->isChecked());
configini->setValue("master", ui_ms_textbox->text()); configini->setValue("master", ui_ms_textbox->text());
configini->setValue("discord", ui_discord_cb->isChecked()); configini->setValue("discord", ui_discord_cb->isChecked());
configini->setValue("shakeandflash", ui_epilepsy_cb->isChecked());
configini->setValue("language", ui_language_combobox->currentText().left(2)); configini->setValue("language", ui_language_combobox->currentText().left(2));
QFile* callwordsini = new QFile(ao_app->get_base_path() + "callwords.ini"); QFile* callwordsini = new QFile(ao_app->get_base_path() + "callwords.ini");
@ -506,6 +553,8 @@ void AOOptionsDialog::save_pressed()
configini->setValue("default_blip", ui_blips_volume_spinbox->value()); configini->setValue("default_blip", ui_blips_volume_spinbox->value());
configini->setValue("blip_rate", ui_bliprate_spinbox->value()); configini->setValue("blip_rate", ui_bliprate_spinbox->value());
configini->setValue("blank_blip", ui_blank_blips_cb->isChecked()); configini->setValue("blank_blip", ui_blank_blips_cb->isChecked());
configini->setValue("looping_sfx", ui_loopsfx_cb->isChecked());
configini->setValue("kill_music_on_object", ui_objectmusic_cb->isChecked());
configini->setValue("casing_enabled", ui_casing_enabled_cb->isChecked()); configini->setValue("casing_enabled", ui_casing_enabled_cb->isChecked());
configini->setValue("casing_defence_enabled", ui_casing_def_cb->isChecked()); configini->setValue("casing_defence_enabled", ui_casing_def_cb->isChecked());
@ -514,6 +563,7 @@ void AOOptionsDialog::save_pressed()
configini->setValue("casing_juror_enabled", ui_casing_jur_cb->isChecked()); configini->setValue("casing_juror_enabled", ui_casing_jur_cb->isChecked());
configini->setValue("casing_steno_enabled", ui_casing_steno_cb->isChecked()); configini->setValue("casing_steno_enabled", ui_casing_steno_cb->isChecked());
configini->setValue("casing_cm_enabled", ui_casing_cm_cb->isChecked()); configini->setValue("casing_cm_enabled", ui_casing_cm_cb->isChecked());
configini->setValue("casing_wit_enabled", ui_casing_wit_cb->isChecked());
configini->setValue("casing_can_host_cases", ui_casing_cm_cases_textbox->text()); configini->setValue("casing_can_host_cases", ui_casing_cm_cases_textbox->text());
callwordsini->close(); callwordsini->close();

View File

@ -2,7 +2,7 @@
#include "file_functions.h" #include "file_functions.h"
#if defined(BASSAUDIO) //Using bass.dll for sfx #if defined(BASSAUDIO) //Using bass.dll for sfx
AOSfxPlayer::AOSfxPlayer(QWidget *parent, AOApplication *p_ao_app) AOSfxPlayer::AOSfxPlayer(QWidget *parent, AOApplication *p_ao_app): QObject()
{ {
m_parent = parent; m_parent = parent;
ao_app = p_ao_app; ao_app = p_ao_app;
@ -29,7 +29,7 @@ void AOSfxPlayer::play(QString p_sfx, QString p_char, QString shout)
f_path = misc_path; f_path = misc_path;
else else
f_path = sound_path; f_path = sound_path;
BASS_ChannelStop(m_stream);
m_stream = BASS_StreamCreateFile(FALSE, f_path.utf16(), 0, 0, BASS_STREAM_AUTOFREE | BASS_UNICODE | BASS_ASYNCFILE); m_stream = BASS_StreamCreateFile(FALSE, f_path.utf16(), 0, 0, BASS_STREAM_AUTOFREE | BASS_UNICODE | BASS_ASYNCFILE);
set_volume_internal(m_volume); set_volume_internal(m_volume);
@ -37,6 +37,19 @@ void AOSfxPlayer::play(QString p_sfx, QString p_char, QString shout)
if (ao_app->get_audio_output_device() != "default") if (ao_app->get_audio_output_device() != "default")
BASS_ChannelSetDevice(m_stream, BASS_GetDevice()); BASS_ChannelSetDevice(m_stream, BASS_GetDevice());
BASS_ChannelPlay(m_stream, false); BASS_ChannelPlay(m_stream, false);
if(looping_sfx && ao_app->get_looping_sfx())
{
BASS_ChannelFlags(m_stream, BASS_SAMPLE_LOOP, BASS_SAMPLE_LOOP);
}
else
{
BASS_ChannelFlags(m_stream, 0, BASS_SAMPLE_LOOP);
}
}
void AOSfxPlayer::setLooping(bool is_looping)
{
this->looping_sfx = is_looping;
} }
void AOSfxPlayer::stop() void AOSfxPlayer::stop()
@ -56,7 +69,7 @@ void AOSfxPlayer::set_volume_internal(qreal p_value)
BASS_ChannelSetAttribute(m_stream, BASS_ATTRIB_VOL, volume); BASS_ChannelSetAttribute(m_stream, BASS_ATTRIB_VOL, volume);
} }
#elif defined(QTAUDIO) //Using Qt's QSoundEffect class #elif defined(QTAUDIO) //Using Qt's QSoundEffect class
AOSfxPlayer::AOSfxPlayer(QWidget *parent, AOApplication *p_ao_app) AOSfxPlayer::AOSfxPlayer(QWidget *parent, AOApplication *p_ao_app): QObject()
{ {
m_parent = parent; m_parent = parent;
ao_app = p_ao_app; ao_app = p_ao_app;
@ -94,6 +107,11 @@ void AOSfxPlayer::play(QString p_sfx, QString p_char, QString shout)
} }
} }
void AOSfxPlayer::setLooping(bool is_looping)
{
this->looping_sfx = is_looping;
}
void AOSfxPlayer::stop() void AOSfxPlayer::stop()
{ {
m_sfx.stop(); m_sfx.stop();
@ -110,7 +128,7 @@ void AOSfxPlayer::set_volume_internal(qreal p_value)
m_sfx.setVolume(m_volume); m_sfx.setVolume(m_volume);
} }
#else #else
AOSfxPlayer::AOSfxPlayer(QWidget *parent, AOApplication *p_ao_app) AOSfxPlayer::AOSfxPlayer(QWidget *parent, AOApplication *p_ao_app): QObject()
{ {
m_parent = parent; m_parent = parent;
ao_app = p_ao_app; ao_app = p_ao_app;
@ -121,6 +139,11 @@ void AOSfxPlayer::play(QString p_sfx, QString p_char, QString shout)
} }
void AOSfxPlayer::setLooping(bool is_looping)
{
this->looping_sfx = is_looping;
}
void AOSfxPlayer::stop() void AOSfxPlayer::stop()
{ {

View File

@ -5,6 +5,59 @@
#include "debug_functions.h" #include "debug_functions.h"
#include "hardware_functions.h" #include "hardware_functions.h"
class AOCharSelectGenerationThreading : public QRunnable
{
public:
Courtroom *thisCourtroom;
int char_num;
AOCharButton *char_button;
AOCharSelectGenerationThreading(Courtroom *my_courtroom, int character_number, AOCharButton *charbut){
thisCourtroom = my_courtroom;
char_num = character_number;
char_button = charbut;
}
void run()
{
AOCharButton* thisCharacterButton = char_button;
thisCharacterButton->reset();
thisCharacterButton->hide();
thisCharacterButton->set_image(thisCourtroom->char_list.at(char_num).name);
thisCourtroom->ui_char_button_list.append(thisCharacterButton);
thisCourtroom->connect(thisCharacterButton, SIGNAL(clicked()), thisCourtroom->char_button_mapper, SLOT(map()));
thisCourtroom->char_button_mapper->setMapping(thisCharacterButton, thisCourtroom->ui_char_button_list.size() - 1);
}
};
class AOCharSelectFilterThreading : public QRunnable
{
public:
Courtroom *thisCourtroom;
int char_num;
AOCharSelectFilterThreading(Courtroom *my_courtroom, int character_number){
thisCourtroom = my_courtroom;
char_num = character_number;
}
void run()
{
AOCharButton* current_char = thisCourtroom->ui_char_button_list.at(char_num);
if (!thisCourtroom->ui_char_taken->isChecked() && thisCourtroom->char_list.at(char_num).taken)
return;
if (!thisCourtroom->char_list.at(char_num).name.contains(thisCourtroom->ui_char_search->text(), Qt::CaseInsensitive))
return;
// We only really need to update the fact that a character is taken
// for the buttons that actually appear.
// You'd also update the passwordedness and etc. here later.
current_char->reset();
current_char->set_taken(thisCourtroom->char_list.at(char_num).taken);
thisCourtroom->ui_char_button_list_filtered.append(current_char);
}
};
void Courtroom::construct_char_select() void Courtroom::construct_char_select()
{ {
ui_char_select_background = new AOImage(this, ao_app); ui_char_select_background = new AOImage(this, ao_app);
@ -44,6 +97,7 @@ void Courtroom::construct_char_select()
set_size_and_pos(ui_char_buttons, "char_buttons"); set_size_and_pos(ui_char_buttons, "char_buttons");
connect(char_button_mapper, SIGNAL(mapped(int)), this, SLOT(char_clicked(int)));
connect(ui_back_to_lobby, SIGNAL(clicked()), this, SLOT(on_back_to_lobby_clicked())); connect(ui_back_to_lobby, SIGNAL(clicked()), this, SLOT(on_back_to_lobby_clicked()));
connect(ui_char_select_left, SIGNAL(clicked()), this, SLOT(on_char_select_left_clicked())); connect(ui_char_select_left, SIGNAL(clicked()), this, SLOT(on_char_select_left_clicked()));
@ -125,7 +179,7 @@ void Courtroom::char_clicked(int n_char)
if (!file_exists(char_ini_path)) if (!file_exists(char_ini_path))
{ {
call_notice("Could not find " + char_ini_path); call_notice(tr("Could not find %1").arg(char_ini_path, 1));
return; return;
} }
@ -197,28 +251,15 @@ void Courtroom::character_loading_finished()
// Later on, we'll be revealing buttons as we need them. // Later on, we'll be revealing buttons as we need them.
for (int n = 0; n < char_list.size(); n++) for (int n = 0; n < char_list.size(); n++)
{ {
AOCharButton* char_button = new AOCharButton(ui_char_buttons, ao_app, 0, 0, char_list.at(n).taken); AOCharButton* characterButton = new AOCharButton(ui_char_buttons, ao_app, 0, 0, char_list.at(n).taken);
char_button->reset(); AOCharSelectGenerationThreading *char_generate = new AOCharSelectGenerationThreading(this, n, characterButton);
char_button->hide(); QThreadPool::globalInstance()->start(char_generate);
char_button->set_image(char_list.at(n).name); if(QThreadPool::globalInstance()->activeThreadCount() == QThreadPool::globalInstance()->maxThreadCount())
ui_char_button_list.append(char_button); {
QThreadPool::globalInstance()->waitForDone();
connect(char_button, &AOCharButton::clicked, [this, n](){ }
this->char_clicked(n);
});
// This part here serves as a way of showing to the player that the game is still running, it is
// just loading the pictures of the characters.
if (ao_app->lobby_constructed)
{
ao_app->generated_chars++;
int total_loading_size = ao_app->char_list_size * 2 + ao_app->evidence_list_size + ao_app->music_list_size;
int loading_value = int(((ao_app->loaded_chars + ao_app->generated_chars + ao_app->loaded_music + ao_app->loaded_evidence) / static_cast<double>(total_loading_size)) * 100);
ao_app->w_lobby->set_loading_value(loading_value);
ao_app->w_lobby->set_loading_text(tr("Generating chars:\n%1/%2").arg(QString::number(ao_app->generated_chars)).arg(QString::number(ao_app->char_list_size)));
}
} }
QThreadPool::globalInstance()->waitForDone();
filter_character_list(); filter_character_list();
} }
@ -227,27 +268,14 @@ void Courtroom::filter_character_list()
ui_char_button_list_filtered.clear(); ui_char_button_list_filtered.clear();
for (int i = 0; i < char_list.size(); i++) for (int i = 0; i < char_list.size(); i++)
{ {
AOCharButton* current_char = ui_char_button_list.at(i); AOCharSelectFilterThreading *char_filter = new AOCharSelectFilterThreading(this, i);
QThreadPool::globalInstance()->start(char_filter);
// It seems passwording characters is unimplemented yet? if(QThreadPool::globalInstance()->activeThreadCount() == QThreadPool::globalInstance()->maxThreadCount())
// Until then, this will stay here, I suppose. {
//if (ui_char_passworded->isChecked() && character_is_passworded??) QThreadPool::globalInstance()->waitForDone();
// continue; }
if (!ui_char_taken->isChecked() && char_list.at(i).taken)
continue;
if (!char_list.at(i).name.contains(ui_char_search->text(), Qt::CaseInsensitive))
continue;
// We only really need to update the fact that a character is taken
// for the buttons that actually appear.
// You'd also update the passwordedness and etc. here later.
current_char->reset();
current_char->set_taken(char_list.at(i).taken);
ui_char_button_list_filtered.append(current_char);
} }
QThreadPool::globalInstance()->waitForDone();
current_char_page = 0; current_char_page = 0;
set_char_select_page(); set_char_select_page();

View File

@ -1,5 +1,4 @@
#include "courtroom.h" #include "courtroom.h"
Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow()
{ {
ao_app = p_ao_app; ao_app = p_ao_app;
@ -64,6 +63,8 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow()
testimony_hide_timer = new QTimer(this); testimony_hide_timer = new QTimer(this);
testimony_hide_timer->setSingleShot(true); testimony_hide_timer->setSingleShot(true);
char_button_mapper = new QSignalMapper(this);
music_player = new AOMusicPlayer(this, ao_app); music_player = new AOMusicPlayer(this, ao_app);
music_player->set_volume(0); music_player->set_volume(0);
@ -73,6 +74,13 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow()
objection_player = new AOSfxPlayer(this, ao_app); objection_player = new AOSfxPlayer(this, ao_app);
objection_player->set_volume(0); objection_player->set_volume(0);
misc_sfx_player = new AOSfxPlayer(this, ao_app);
misc_sfx_player->set_volume(0);
frame_emote_sfx_player = new AOSfxPlayer(this, ao_app);
frame_emote_sfx_player->set_volume(0);
pair_frame_emote_sfx_player = new AOSfxPlayer(this, ao_app); // todo: recode pair
pair_frame_emote_sfx_player->set_volume(0);
blip_player = new AOBlipPlayer(this, ao_app); blip_player = new AOBlipPlayer(this, ao_app);
blip_player->set_volume(0); blip_player->set_volume(0);
@ -86,7 +94,11 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow()
ui_vp_speedlines = new AOMovie(ui_viewport, ao_app); ui_vp_speedlines = new AOMovie(ui_viewport, ao_app);
ui_vp_speedlines->set_play_once(false); ui_vp_speedlines->set_play_once(false);
ui_vp_player_char = new AOCharMovie(ui_viewport, ao_app); ui_vp_player_char = new AOCharMovie(ui_viewport, ao_app);
ui_vp_player_char->frame_specific_sfx_player = frame_emote_sfx_player;
ui_vp_player_char->mycourtroom = this;
ui_vp_sideplayer_char = new AOCharMovie(ui_viewport, ao_app); ui_vp_sideplayer_char = new AOCharMovie(ui_viewport, ao_app);
ui_vp_sideplayer_char->frame_specific_sfx_player = pair_frame_emote_sfx_player;
ui_vp_sideplayer_char->mycourtroom = this;
ui_vp_sideplayer_char->hide(); ui_vp_sideplayer_char->hide();
ui_vp_desk = new AOScene(ui_viewport, ao_app); ui_vp_desk = new AOScene(ui_viewport, ao_app);
ui_vp_legacy_desk = new AOScene(ui_viewport, ao_app); ui_vp_legacy_desk = new AOScene(ui_viewport, ao_app);
@ -201,7 +213,9 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow()
ui_flip->hide(); ui_flip->hide();
ui_guard = new QCheckBox(this); ui_guard = new QCheckBox(this);
ui_guard->setText(tr("Guard"));
ui_guard->setText(tr("Disable Modcalls"));
ui_guard->hide(); ui_guard->hide();
ui_casing = new QCheckBox(this); ui_casing = new QCheckBox(this);
@ -219,6 +233,7 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow()
ui_custom_objection = new AOButton(this, ao_app); ui_custom_objection = new AOButton(this, ao_app);
ui_realization = new AOButton(this, ao_app); ui_realization = new AOButton(this, ao_app);
ui_screenshake = new AOButton(this, ao_app);
ui_mute = new AOButton(this, ao_app); ui_mute = new AOButton(this, ao_app);
ui_defense_plus = new AOButton(this, ao_app); ui_defense_plus = new AOButton(this, ao_app);
@ -304,7 +319,7 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow()
connect(ui_custom_objection, SIGNAL(clicked()), this, SLOT(on_custom_objection_clicked())); connect(ui_custom_objection, SIGNAL(clicked()), this, SLOT(on_custom_objection_clicked()));
connect(ui_realization, SIGNAL(clicked()), this, SLOT(on_realization_clicked())); connect(ui_realization, SIGNAL(clicked()), this, SLOT(on_realization_clicked()));
connect(ui_screenshake, SIGNAL(clicked()), this, SLOT(on_screenshake_clicked()));
connect(ui_mute, SIGNAL(clicked()), this, SLOT(on_mute_clicked())); connect(ui_mute, SIGNAL(clicked()), this, SLOT(on_mute_clicked()));
connect(ui_defense_minus, SIGNAL(clicked()), this, SLOT(on_defense_minus_clicked())); connect(ui_defense_minus, SIGNAL(clicked()), this, SLOT(on_defense_minus_clicked()));
@ -642,6 +657,9 @@ void Courtroom::set_widgets()
set_size_and_pos(ui_realization, "realization"); set_size_and_pos(ui_realization, "realization");
ui_realization->set_image("realization.png"); ui_realization->set_image("realization.png");
set_size_and_pos(ui_screenshake, "screenshake");
ui_screenshake->set_image("screenshake.png");
set_size_and_pos(ui_mute, "mute_button"); set_size_and_pos(ui_mute, "mute_button");
ui_mute->set_image("mute.png"); ui_mute->set_image("mute.png");
@ -784,6 +802,24 @@ void Courtroom::set_size_and_pos(QWidget *p_widget, QString p_identifier)
} }
} }
QPoint Courtroom::get_theme_pos(QString p_identifier)
{
QString filename = "courtroom_design.ini";
pos_size_type design_ini_result = ao_app->get_element_dimensions(p_identifier, filename);
if (design_ini_result.width < 0 || design_ini_result.height < 0)
{
qDebug() << "W: could not find \"" << p_identifier << "\" in " << filename;
return QPoint(0,0);
}
else
{
return QPoint(design_ini_result.x, design_ini_result.y);
}
}
void Courtroom::set_taken(int n_char, bool p_taken) void Courtroom::set_taken(int n_char, bool p_taken)
{ {
if (n_char >= char_list.size()) if (n_char >= char_list.size())
@ -844,45 +880,58 @@ void Courtroom::set_background(QString p_background)
} }
} }
void Courtroom::set_character(int char_id)
{
m_cid = char_id;
QString f_char;
if (m_cid == -1)
{
if (ao_app->is_discord_enabled())
ao_app->discord->state_spectate();
f_char = "";
}
else
{
f_char = ao_app->get_char_name(char_list.at(m_cid).name);
if (ao_app->is_discord_enabled())
ao_app->discord->state_character(f_char.toStdString());
}
current_char = f_char;
current_emote_page = 0;
current_emote = 0;
if (m_cid == -1)
ui_emotes->hide();
else
ui_emotes->show();
set_emote_page();
set_emote_dropdown();
if (ao_app->custom_objection_enabled &&
(file_exists(ao_app->get_character_path(current_char, "custom.gif")) ||
file_exists(ao_app->get_character_path(current_char, "custom.apng"))) &&
file_exists(ao_app->get_character_path(current_char, "custom.wav")))
ui_custom_objection->show();
else
ui_custom_objection->hide();
}
void Courtroom::enter_courtroom(int p_cid) void Courtroom::enter_courtroom(int p_cid)
{ {
m_cid = p_cid; this->set_character(p_cid);
QString f_char;
if (m_cid == -1)
{
if (ao_app->is_discord_enabled())
ao_app->discord->state_spectate();
f_char = "";
}
else
{
f_char = ao_app->get_char_name(char_list.at(m_cid).name);
if (ao_app->is_discord_enabled())
ao_app->discord->state_character(f_char.toStdString());
}
current_char = f_char;
current_emote_page = 0;
current_emote = 0;
if (m_cid == -1)
ui_emotes->hide();
else
ui_emotes->show();
set_emote_page();
set_emote_dropdown();
current_evidence_page = 0; current_evidence_page = 0;
current_evidence = 0; current_evidence = 0;
set_evidence_page(); set_evidence_page();
QString side = ao_app->get_char_side(f_char); QString side = ao_app->get_char_side(current_char);
if (side == "jud") if (side == "jud")
{ {
@ -931,6 +980,9 @@ void Courtroom::enter_courtroom(int p_cid)
music_player->set_volume(ui_music_slider->value()); music_player->set_volume(ui_music_slider->value());
sfx_player->set_volume(ui_sfx_slider->value()); sfx_player->set_volume(ui_sfx_slider->value());
objection_player->set_volume(ui_sfx_slider->value()); objection_player->set_volume(ui_sfx_slider->value());
misc_sfx_player->set_volume(ui_sfx_slider->value());
frame_emote_sfx_player->set_volume(ui_sfx_slider->value());
pair_frame_emote_sfx_player->set_volume(ui_sfx_slider->value());
blip_player->set_volume(ui_blip_slider->value()); blip_player->set_volume(ui_blip_slider->value());
testimony_in_progress = false; testimony_in_progress = false;
@ -960,12 +1012,10 @@ void Courtroom::list_music()
for (int n_song = 0 ; n_song < music_list.size() ; ++n_song) for (int n_song = 0 ; n_song < music_list.size() ; ++n_song)
{ {
QString i_song = music_list.at(n_song); QString i_song = music_list.at(n_song);
QString i_song_listname = i_song;
i_song_listname = i_song_listname.left(i_song_listname.lastIndexOf("."));
if (i_song.toLower().contains(ui_music_search->text().toLower())) if (i_song.toLower().contains(ui_music_search->text().toLower()))
{ {
ui_music_list->addItem(i_song_listname); ui_music_list->addItem(i_song);
music_row_to_number.append(n_song); music_row_to_number.append(n_song);
QString song_path = ao_app->get_music_path(i_song); QString song_path = ao_app->get_music_path(i_song);
@ -1072,10 +1122,75 @@ void Courtroom::append_server_chatmessage(QString p_name, QString p_message, QSt
colour = ao_app->get_color("ooc_default_color", "courtroom_design.ini").name(); colour = ao_app->get_color("ooc_default_color", "courtroom_design.ini").name();
if (p_colour == "1") if (p_colour == "1")
colour = ao_app->get_color("ooc_server_color", "courtroom_design.ini").name(); colour = ao_app->get_color("ooc_server_color", "courtroom_design.ini").name();
if(p_message == "Logged in as a moderator.")
{
ui_guard->show();
append_server_chatmessage("CLIENT", "You were granted the Disable Modcalls button.", "1");
}
ui_server_chatlog->append_chatmessage(p_name, p_message, colour); ui_server_chatlog->append_chatmessage(p_name, p_message, colour);
} }
class AOFrameThreadingPre : public QRunnable
{
public:
Courtroom *thisCourtroom;
int my_frameNumber;
AOFrameThreadingPre(Courtroom *my_courtroom, int frameNumber){
thisCourtroom = my_courtroom;
my_frameNumber = frameNumber;
}
void run()
{
qDebug() << my_frameNumber << " FRAME NUMBER" << " from" << QThread::currentThread();
QString sfx_to_play = thisCourtroom->ao_app->get_frame_sfx_name(thisCourtroom->current_char, thisCourtroom->ao_app->get_pre_emote(thisCourtroom->current_char, thisCourtroom->current_emote), my_frameNumber);
QString screenshake_to_play = thisCourtroom->ao_app->get_screenshake_frame(thisCourtroom->current_char, thisCourtroom->ao_app->get_pre_emote(thisCourtroom->current_char, thisCourtroom->current_emote), my_frameNumber);
QString realization_to_play = thisCourtroom->ao_app->get_realization_frame(thisCourtroom->current_char, thisCourtroom->ao_app->get_pre_emote(thisCourtroom->current_char, thisCourtroom->current_emote), my_frameNumber);
if(sfx_to_play != "")
{
thisCourtroom->threading_sfx += "|" + QString::number(my_frameNumber) + "=" + sfx_to_play;
}
if(screenshake_to_play != "")
{
thisCourtroom->threading_shake += "|" + QString::number(my_frameNumber) + "=" + screenshake_to_play;
}
if(realization_to_play != "")
{
thisCourtroom->threading_flash += "|" + QString::number(my_frameNumber) + "=" + realization_to_play;
}
}
};
class AOFrameThreading : public QRunnable
{
public:
Courtroom *thisCourtroom;
int my_frameNumber;
AOFrameThreading(Courtroom *my_courtroom, int frameNumber){
thisCourtroom = my_courtroom;
my_frameNumber = frameNumber;
}
void run()
{
QString sfx_to_play = thisCourtroom->ao_app->get_frame_sfx_name(thisCourtroom->current_char, thisCourtroom->threading_prefix + thisCourtroom->ao_app->get_emote(thisCourtroom->current_char, thisCourtroom->current_emote), my_frameNumber);
QString screenshake_to_play = thisCourtroom->ao_app->get_screenshake_frame(thisCourtroom->current_char, thisCourtroom->threading_prefix + thisCourtroom->ao_app->get_emote(thisCourtroom->current_char, thisCourtroom->current_emote), my_frameNumber);
QString realization_to_play = thisCourtroom->ao_app->get_realization_frame(thisCourtroom->current_char, thisCourtroom->threading_prefix + thisCourtroom->ao_app->get_emote(thisCourtroom->current_char, thisCourtroom->current_emote), my_frameNumber);
if(sfx_to_play != "")
{
thisCourtroom->threading_sfx += "|" + QString::number(my_frameNumber) + "=" + sfx_to_play;
}
if(screenshake_to_play != "")
{
thisCourtroom->threading_shake += "|" + QString::number(my_frameNumber) + "=" + screenshake_to_play;
}
if(realization_to_play != "")
{
thisCourtroom->threading_flash += "|" + QString::number(my_frameNumber) + "=" + realization_to_play;
}
}
};
void Courtroom::on_chat_return_pressed() void Courtroom::on_chat_return_pressed()
{ {
if (ui_ic_chat_message->text() == "" || is_muted) if (ui_ic_chat_message->text() == "" || is_muted)
@ -1249,10 +1364,133 @@ void Courtroom::on_chat_return_pressed()
packet_contents.append("0"); packet_contents.append("0");
} }
} }
// If the server we're on supports Looping SFX and Screenshake, use it if the emote uses it.
if (ao_app->looping_sfx_support_enabled)
{
packet_contents.append(ao_app->get_sfx_looping(current_char, current_emote));
qDebug() << "Are we looping this? " << ao_app->get_sfx_looping(current_char, current_emote);
packet_contents.append(QString::number(screenshake_state));
qDebug() << "Are we screen shaking this one? " << screenshake_state;
qDebug() << "MAX THREAD COUNT " << QThreadPool::globalInstance()->maxThreadCount();
QString frame_screenshake = "";
QString frame_realization = "";
QString frame_sfx = "";
QString preemote_sfx = "";
QString preemote_shake = "";
QString preemote_flash = "";
QString talkemote_sfx = "";
QString talkemote_shake = "";
QString talkemote_flash = "";
QString idleemote_sfx = "";
QString idleemote_shake = "";
QString idleemote_flash = "";
QString preemote = ao_app->get_image_suffix(ao_app->get_character_path(current_char, ao_app->get_pre_emote(current_char, current_emote)));
QString talkemote_to_check = ao_app->get_image_suffix(ao_app->get_character_path(current_char, "(b)" + ao_app->get_emote(current_char, current_emote)));
QString idleemote_to_check = ao_app->get_image_suffix(ao_app->get_character_path(current_char, "(a)" + ao_app->get_emote(current_char, current_emote)));
frame_emote_checker = new QMovie(this);
frame_emote_checker->setFileName(preemote);
frame_emote_checker->jumpToFrame(0);
qDebug() << "Premote: " << frame_emote_checker->frameCount();
preemote_sfx += ao_app->get_pre_emote(current_char, current_emote);
preemote_shake += ao_app->get_pre_emote(current_char, current_emote);
preemote_flash += ao_app->get_pre_emote(current_char, current_emote);
threading_sfx = preemote_sfx;
threading_shake = preemote_shake;
threading_flash = preemote_flash;
for(int i=0; i < frame_emote_checker->frameCount(); i++){
AOFrameThreadingPre *testfuck = new AOFrameThreadingPre(this, i);
QThreadPool::globalInstance()->start(testfuck);
}
QThreadPool::globalInstance()->waitForDone();
preemote_sfx = threading_sfx;
preemote_shake = threading_shake;
preemote_flash = threading_flash;
preemote_sfx += "^";
preemote_shake += "^";
preemote_flash += "^";
delete frame_emote_checker;
talkemote_sfx += "(b)" + ao_app->get_emote(current_char, current_emote);
talkemote_shake += "(b)" + ao_app->get_emote(current_char, current_emote);
talkemote_flash += "(b)" + ao_app->get_emote(current_char, current_emote);
frame_emote_checker = new QMovie(this);
frame_emote_checker->setFileName(talkemote_to_check);
frame_emote_checker->jumpToFrame(0);
qDebug() << "Talk: " << frame_emote_checker->frameCount();
threading_sfx = talkemote_sfx;
threading_shake = talkemote_shake;
threading_flash = talkemote_flash;
threading_prefix = QString("(b)");
for(int i=0; i < frame_emote_checker->frameCount(); i++){
AOFrameThreading *testfuck = new AOFrameThreading(this, i);
QThreadPool::globalInstance()->start(testfuck);
}
QThreadPool::globalInstance()->waitForDone();
talkemote_sfx = threading_sfx;
talkemote_shake = threading_shake;
talkemote_flash = threading_flash;
talkemote_sfx += "^";
talkemote_shake += "^";
talkemote_flash += "^";
delete frame_emote_checker;
idleemote_sfx += "(a)" + ao_app->get_emote(current_char, current_emote);
idleemote_shake += "(a)" + ao_app->get_emote(current_char, current_emote);
idleemote_flash += "(a)" + ao_app->get_emote(current_char, current_emote);
frame_emote_checker = new QMovie(this);
frame_emote_checker->setFileName(idleemote_to_check);
frame_emote_checker->jumpToFrame(0);
qDebug() << "idle: " << frame_emote_checker->frameCount();
threading_sfx = idleemote_sfx;
threading_shake = idleemote_shake;
threading_flash = idleemote_flash;
threading_prefix = QString("(a)");
for(int i=0; i < frame_emote_checker->frameCount(); i++){
AOFrameThreading *testfuck = new AOFrameThreading(this, i);
QThreadPool::globalInstance()->start(testfuck);
}
QThreadPool::globalInstance()->waitForDone();
idleemote_sfx = threading_sfx;
idleemote_shake = threading_shake;
idleemote_flash = threading_flash;
delete frame_emote_checker;
frame_screenshake += preemote_shake;
frame_screenshake += talkemote_shake;
frame_screenshake += idleemote_shake;
frame_realization += preemote_flash;
frame_realization += talkemote_flash;
frame_realization += idleemote_flash;
frame_sfx += preemote_sfx;
frame_sfx += talkemote_sfx;
frame_sfx += idleemote_sfx;
packet_contents.append(frame_screenshake);
packet_contents.append(frame_realization);
packet_contents.append(frame_sfx);
}
ao_app->send_server_packet(new AOPacket("MS", packet_contents)); ao_app->send_server_packet(new AOPacket("MS", packet_contents));
} }
void Courtroom::handle_chatmessage(QStringList *p_contents) void Courtroom::handle_chatmessage(QStringList *p_contents)
{ {
// Instead of checking for whether a message has at least chatmessage_size // Instead of checking for whether a message has at least chatmessage_size
@ -1307,7 +1545,6 @@ void Courtroom::handle_chatmessage(QStringList *p_contents)
text_state = 0; text_state = 0;
anim_state = 0; anim_state = 0;
ui_vp_objection->stop(); ui_vp_objection->stop();
ui_vp_player_char->stop();
chat_tick_timer->stop(); chat_tick_timer->stop();
ui_vp_evidence_display->reset(); ui_vp_evidence_display->reset();
@ -1318,6 +1555,7 @@ void Courtroom::handle_chatmessage(QStringList *p_contents)
ui_ic_chat_message->clear(); ui_ic_chat_message->clear();
objection_state = 0; objection_state = 0;
realization_state = 0; realization_state = 0;
screenshake_state = 0;
is_presenting_evidence = false; is_presenting_evidence = false;
ui_pre->setChecked(false); ui_pre->setChecked(false);
ui_hold_it->set_image("holdit.png"); ui_hold_it->set_image("holdit.png");
@ -1325,6 +1563,7 @@ void Courtroom::handle_chatmessage(QStringList *p_contents)
ui_take_that->set_image("takethat.png"); ui_take_that->set_image("takethat.png");
ui_custom_objection->set_image("custom.png"); ui_custom_objection->set_image("custom.png");
ui_realization->set_image("realization.png"); ui_realization->set_image("realization.png");
ui_screenshake->set_image("screenshake.png");
ui_evidence_present->set_image("present_disabled.png"); ui_evidence_present->set_image("present_disabled.png");
} }
@ -1356,6 +1595,8 @@ void Courtroom::handle_chatmessage(QStringList *p_contents)
case 2: case 2:
ui_vp_objection->play("objection", f_char, f_custom_theme); ui_vp_objection->play("objection", f_char, f_custom_theme);
objection_player->play("objection.wav", f_char, f_custom_theme); objection_player->play("objection.wav", f_char, f_custom_theme);
if(ao_app->get_objectmusic())
music_player->kill_loop();
break; break;
case 3: case 3:
ui_vp_objection->play("takethat", f_char, f_custom_theme); ui_vp_objection->play("takethat", f_char, f_custom_theme);
@ -1388,7 +1629,10 @@ void Courtroom::handle_chatmessage_2()
{ {
ui_vp_speedlines->stop(); ui_vp_speedlines->stop();
ui_vp_player_char->stop(); ui_vp_player_char->stop();
ui_vp_player_char->frame_sfx_hellstring = m_chatmessage[FRAME_SFX];
ui_vp_player_char->frame_realization_hellstring = m_chatmessage[FRAME_REALIZATION];
ui_vp_player_char->frame_screenshake_hellstring = m_chatmessage[FRAME_SCREENSHAKE];
ui_vp_player_char->use_networked_framehell = true;
if (m_chatmessage[SHOWNAME].isEmpty() || !ui_showname_enable->isChecked()) if (m_chatmessage[SHOWNAME].isEmpty() || !ui_showname_enable->isChecked())
{ {
QString real_name = char_list.at(m_chatmessage[CHAR_ID].toInt()).name; QString real_name = char_list.at(m_chatmessage[CHAR_ID].toInt()).name;
@ -1570,6 +1814,7 @@ void Courtroom::handle_chatmessage_2()
ui_vp_sideplayer_char->set_flipped(true); ui_vp_sideplayer_char->set_flipped(true);
else else
ui_vp_sideplayer_char->set_flipped(false); ui_vp_sideplayer_char->set_flipped(false);
ui_vp_sideplayer_char->use_networked_framehell = false;
ui_vp_sideplayer_char->play_idle(m_chatmessage[OTHER_NAME], m_chatmessage[OTHER_EMOTE]); ui_vp_sideplayer_char->play_idle(m_chatmessage[OTHER_NAME], m_chatmessage[OTHER_EMOTE]);
} }
else else
@ -1577,13 +1822,17 @@ void Courtroom::handle_chatmessage_2()
// If the server understands other characters, but there // If the server understands other characters, but there
// really is no second character, hide 'em, and center the first. // really is no second character, hide 'em, and center the first.
ui_vp_sideplayer_char->hide(); ui_vp_sideplayer_char->hide();
ui_vp_sideplayer_char->stop();
ui_vp_sideplayer_char->move(0,0); ui_vp_sideplayer_char->move(0,0);
ui_vp_player_char->move(0,0); ui_vp_player_char->move(0,0);
} }
} }
} }
if (m_chatmessage[SCREENSHAKE] == "1")
{
this->doScreenShake();
}
switch (emote_mod) switch (emote_mod)
{ {
case 1: case 2: case 6: case 1: case 2: case 6:
@ -1600,6 +1849,55 @@ void Courtroom::handle_chatmessage_2()
} }
} }
void Courtroom::doScreenShake()
{
if(!ao_app->is_shakeandflash_enabled())
return;
screenshake_group = new QParallelAnimationGroup;
screenshake_animation = new QPropertyAnimation(ui_viewport, "pos", this);
chatbox_screenshake_animation = new QPropertyAnimation(ui_vp_chatbox, "pos", this);
int screen_x = get_theme_pos("viewport").x();
int screen_y = get_theme_pos("viewport").y();
QPoint pos_default = QPoint(screen_x, screen_y);
QPoint pos1 = QPoint(screen_x + 3, screen_y + -5);
QPoint pos2 = QPoint(screen_x + 3, screen_y + -5);
QPoint pos3 = QPoint(screen_x + -3, screen_y + 5);
QPoint pos4 = QPoint(screen_x + 3, screen_y + -5);
QPoint pos5 = QPoint(screen_x + -3,screen_y + -5);
int chatbox_x = get_theme_pos("ao2_chatbox").x();
int chatbox_y = get_theme_pos("ao2_chatbox").y();
QPoint chatbox_pos_default = QPoint(chatbox_x, chatbox_y);
QPoint chatbox_pos1 = QPoint(chatbox_x + 3, chatbox_y + -5);
QPoint chatbox_pos2 = QPoint(chatbox_x + 3, chatbox_y + -5);
QPoint chatbox_pos3 = QPoint(chatbox_x + -3, chatbox_y + 5);
QPoint chatbox_pos4 = QPoint(chatbox_x + 3, chatbox_y + -5);
QPoint chatbox_pos5 = QPoint(chatbox_x + -3,chatbox_y + -5);
screenshake_animation->setDuration(200);
screenshake_animation->setKeyValueAt(0, pos_default);
screenshake_animation->setKeyValueAt(0.1, pos1);
screenshake_animation->setKeyValueAt(0.3, pos2);
screenshake_animation->setKeyValueAt(0.5, pos3);
screenshake_animation->setKeyValueAt(0.7, pos4);
screenshake_animation->setKeyValueAt(0.9, pos5);
screenshake_animation->setEndValue(pos_default);
screenshake_animation->setEasingCurve(QEasingCurve::Linear);
chatbox_screenshake_animation->setDuration(200);
chatbox_screenshake_animation->setKeyValueAt(0, chatbox_pos_default);
chatbox_screenshake_animation->setKeyValueAt(0.1, chatbox_pos3);
chatbox_screenshake_animation->setKeyValueAt(0.3, chatbox_pos5);
chatbox_screenshake_animation->setKeyValueAt(0.5, chatbox_pos2);
chatbox_screenshake_animation->setKeyValueAt(0.7, chatbox_pos1);
chatbox_screenshake_animation->setKeyValueAt(0.9, chatbox_pos4);
chatbox_screenshake_animation->setEndValue(chatbox_pos_default);
chatbox_screenshake_animation->setEasingCurve(QEasingCurve::Linear);
screenshake_group->addAnimation(screenshake_animation);
screenshake_group->addAnimation(chatbox_screenshake_animation);
screenshake_group->start(QAbstractAnimation::DeletionPolicy::DeleteWhenStopped);
}
void Courtroom::handle_chatmessage_3() void Courtroom::handle_chatmessage_3()
{ {
start_chat_ticking(); start_chat_ticking();
@ -1731,6 +2029,17 @@ QString Courtroom::filter_ic_text(QString p_text)
p_text.remove(trick_check_pos,1); p_text.remove(trick_check_pos,1);
} }
else if (f_character == "$" and !ic_next_is_not_special)
{
p_text.remove(trick_check_pos,1);
}
else if (f_character == "@" and !ic_next_is_not_special)
{
p_text.remove(trick_check_pos,1);
}
// Orange inline colourisation. // Orange inline colourisation.
else if (f_character == "|" and !ic_next_is_not_special) else if (f_character == "|" and !ic_next_is_not_special)
{ {
@ -1941,14 +2250,14 @@ void Courtroom::play_preanim(bool noninterrupting)
int ao2_duration = ao_app->get_ao2_preanim_duration(f_char, f_preanim); int ao2_duration = ao_app->get_ao2_preanim_duration(f_char, f_preanim);
int text_delay = ao_app->get_text_delay(f_char, f_preanim) * time_mod; int text_delay = ao_app->get_text_delay(f_char, f_preanim) * time_mod;
int sfx_delay = m_chatmessage[SFX_DELAY].toInt() * 60; int sfx_delay = m_chatmessage[SFX_DELAY].toInt() * 60;
bool looping_sfx = m_chatmessage[LOOPING_SFX] == "1";
int preanim_duration; int preanim_duration;
if (ao2_duration < 0) if (ao2_duration < 0)
preanim_duration = ao_app->get_preanim_duration(f_char, f_preanim); preanim_duration = ao_app->get_preanim_duration(f_char, f_preanim);
else else
preanim_duration = ao2_duration; preanim_duration = ao2_duration;
sfx_player->setLooping(looping_sfx);
sfx_delay_timer->start(sfx_delay); sfx_delay_timer->start(sfx_delay);
QString anim_to_find = ao_app->get_image_suffix(ao_app->get_character_path(f_char, f_preanim)); QString anim_to_find = ao_app->get_image_suffix(ao_app->get_character_path(f_char, f_preanim));
if (!file_exists(anim_to_find) || if (!file_exists(anim_to_find) ||
@ -1964,7 +2273,6 @@ void Courtroom::play_preanim(bool noninterrupting)
} }
ui_vp_player_char->play_pre(f_char, f_preanim, preanim_duration); ui_vp_player_char->play_pre(f_char, f_preanim, preanim_duration);
if (noninterrupting) if (noninterrupting)
anim_state = 4; anim_state = 4;
else else
@ -1988,6 +2296,15 @@ void Courtroom::realization_done()
ui_vp_realization->hide(); ui_vp_realization->hide();
} }
void Courtroom::doRealization()
{
if(!ao_app->is_shakeandflash_enabled())
return;
realization_timer->start(60);
ui_vp_realization->show();
}
void Courtroom::start_chat_ticking() void Courtroom::start_chat_ticking()
{ {
//we need to ensure that the text isn't already ticking because this function can be called by two logic paths //we need to ensure that the text isn't already ticking because this function can be called by two logic paths
@ -1996,11 +2313,9 @@ void Courtroom::start_chat_ticking()
if (m_chatmessage[REALIZATION] == "1") if (m_chatmessage[REALIZATION] == "1")
{ {
realization_timer->start(60); this->doRealization();
ui_vp_realization->show(); misc_sfx_player->play(ao_app->get_custom_realization(m_chatmessage[CHAR_NAME]));
sfx_player->play(ao_app->get_custom_realization(m_chatmessage[CHAR_NAME]));
} }
ui_vp_message->clear(); ui_vp_message->clear();
set_text_color(); set_text_color();
rainbow_counter = 0; rainbow_counter = 0;
@ -2046,7 +2361,6 @@ void Courtroom::chat_tick()
//do not perform heavy operations here //do not perform heavy operations here
QString f_message = m_chatmessage[MESSAGE]; QString f_message = m_chatmessage[MESSAGE];
f_message.remove(0, tick_pos);
// Due to our new text speed system, we always need to stop the timer now. // Due to our new text speed system, we always need to stop the timer now.
chat_tick_timer->stop(); chat_tick_timer->stop();
@ -2061,7 +2375,7 @@ void Courtroom::chat_tick()
f_message.remove(0,2); f_message.remove(0,2);
} }
if (f_message.size() == 0) if (tick_pos >= f_message.size())
{ {
text_state = 2; text_state = 2;
if (anim_state != 4) if (anim_state != 4)
@ -2073,21 +2387,9 @@ void Courtroom::chat_tick()
else else
{ {
QTextBoundaryFinder tbf(QTextBoundaryFinder::Grapheme, f_message); QString f_character = f_message.at(tick_pos);
QString f_character;
int f_char_length;
tbf.toNextBoundary();
if (tbf.position() == -1)
f_character = f_message;
else
f_character = f_message.left(tbf.position());
f_char_length = f_character.length();
f_character = f_character.toHtmlEscaped(); f_character = f_character.toHtmlEscaped();
if (f_character == " ") if (f_character == " ")
ui_vp_message->insertPlainText(" "); ui_vp_message->insertPlainText(" ");
@ -2111,6 +2413,18 @@ void Courtroom::chat_tick()
formatting_char = true; formatting_char = true;
} }
else if (f_character == "@" and !next_character_is_not_special)
{
this->doScreenShake();
formatting_char = true;
}
else if (f_character == "$" and !next_character_is_not_special)
{
this->doRealization();
formatting_char = true;
}
// Orange inline colourisation. // Orange inline colourisation.
else if (f_character == "|" and !next_character_is_not_special) else if (f_character == "|" and !next_character_is_not_special)
{ {
@ -2180,7 +2494,7 @@ void Courtroom::chat_tick()
else else
{ {
next_character_is_not_special = true; next_character_is_not_special = true;
tick_pos -= f_char_length; tick_pos--;
} }
} }
@ -2201,7 +2515,7 @@ void Courtroom::chat_tick()
else else
{ {
next_character_is_not_special = true; next_character_is_not_special = true;
tick_pos -= f_char_length; tick_pos--;
} }
} }
@ -2245,7 +2559,11 @@ void Courtroom::chat_tick()
case INLINE_GREY: case INLINE_GREY:
ui_vp_message->insertHtml("<font color=\""+ get_text_color("_inline_grey").name() +"\">" + f_character + "</font>"); ui_vp_message->insertHtml("<font color=\""+ get_text_color("_inline_grey").name() +"\">" + f_character + "</font>");
break; break;
default:
ui_vp_message->insertHtml(f_character);
break;
} }
} }
else else
{ {
@ -2296,7 +2614,7 @@ void Courtroom::chat_tick()
if(blank_blip) if(blank_blip)
qDebug() << "blank_blip found true"; qDebug() << "blank_blip found true";
if (f_character != ' ' || blank_blip) if (f_message.at(tick_pos) != ' ' || blank_blip)
{ {
if (blip_pos % blip_rate == 0 && !formatting_char) if (blip_pos % blip_rate == 0 && !formatting_char)
@ -2308,7 +2626,7 @@ void Courtroom::chat_tick()
++blip_pos; ++blip_pos;
} }
tick_pos += f_char_length; ++tick_pos;
// Restart the timer, but according to the newly set speeds, if there were any. // Restart the timer, but according to the newly set speeds, if there were any.
// Keep the speed at bay. // Keep the speed at bay.
@ -2335,7 +2653,6 @@ void Courtroom::chat_tick()
} }
} }
void Courtroom::show_testimony() void Courtroom::show_testimony()
{ {
if (!testimony_in_progress || m_chatmessage[SIDE] != "wit") if (!testimony_in_progress || m_chatmessage[SIDE] != "wit")
@ -2518,7 +2835,7 @@ void Courtroom::set_ban(int p_cid)
if (p_cid != m_cid && p_cid != -1) if (p_cid != m_cid && p_cid != -1)
return; return;
call_notice("You have been banned."); call_notice(tr("You have been banned."));
ao_app->construct_lobby(); ao_app->construct_lobby();
ao_app->destruct_courtroom(); ao_app->destruct_courtroom();
@ -2533,9 +2850,10 @@ void Courtroom::handle_song(QStringList *p_contents)
QString f_song = f_contents.at(0); QString f_song = f_contents.at(0);
QString f_song_clear = f_song; QString f_song_clear = f_song;
f_song_clear = f_song_clear.left(f_song_clear.lastIndexOf("."));
int n_char = f_contents.at(1).toInt(); int n_char = f_contents.at(1).toInt();
qDebug() << "playing song "+f_song;
if (n_char < 0 || n_char >= char_list.size()) if (n_char < 0 || n_char >= char_list.size())
{ {
music_player->play(f_song); music_player->play(f_song);
@ -2547,9 +2865,22 @@ void Courtroom::handle_song(QStringList *p_contents)
if (p_contents->length() > 2) if (p_contents->length() > 2)
{ {
str_show = p_contents->at(2); if(p_contents->at(2) != "")
{
str_show = p_contents->at(2);
}
}
if (p_contents->length() > 3)
{
if(p_contents->at(3) != "-1")
{
music_player->enable_looping = false;
}
else
{
music_player->enable_looping = true;
}
} }
if (!mute_map.value(n_char)) if (!mute_map.value(n_char))
{ {
chatlogpiece* temp = new chatlogpiece(str_char, str_show, f_song, true); chatlogpiece* temp = new chatlogpiece(str_char, str_show, f_song, true);
@ -2560,12 +2891,18 @@ void Courtroom::handle_song(QStringList *p_contents)
ic_chatlog_history.removeFirst(); ic_chatlog_history.removeFirst();
} }
append_ic_text(f_song_clear, str_show, true); append_ic_text(f_song, str_show, true);
music_player->play(f_song); music_player->play(f_song);
} }
} }
} }
void Courtroom::handle_failed_login()
{
music_player->enable_looping = false;
music_player->play("failed_login");
}
void Courtroom::handle_wtce(QString p_wtce, int variant) void Courtroom::handle_wtce(QString p_wtce, int variant)
{ {
QString sfx_file = "courtroom_sounds.ini"; QString sfx_file = "courtroom_sounds.ini";
@ -2573,7 +2910,7 @@ void Courtroom::handle_wtce(QString p_wtce, int variant)
//witness testimony //witness testimony
if (p_wtce == "testimony1") if (p_wtce == "testimony1")
{ {
sfx_player->play(ao_app->get_sfx("witness_testimony")); misc_sfx_player->play(ao_app->get_sfx("witness_testimony"));
ui_vp_wtce->play("witnesstestimony"); ui_vp_wtce->play("witnesstestimony");
testimony_in_progress = true; testimony_in_progress = true;
show_testimony(); show_testimony();
@ -2581,7 +2918,7 @@ void Courtroom::handle_wtce(QString p_wtce, int variant)
//cross examination //cross examination
else if (p_wtce == "testimony2") else if (p_wtce == "testimony2")
{ {
sfx_player->play(ao_app->get_sfx("cross_examination")); misc_sfx_player->play(ao_app->get_sfx("cross_examination"));
ui_vp_wtce->play("crossexamination"); ui_vp_wtce->play("crossexamination");
testimony_in_progress = false; testimony_in_progress = false;
} }
@ -2589,12 +2926,12 @@ void Courtroom::handle_wtce(QString p_wtce, int variant)
{ {
if (variant == 0) if (variant == 0)
{ {
sfx_player->play(ao_app->get_sfx("not_guilty")); misc_sfx_player->play(ao_app->get_sfx("not_guilty"));
ui_vp_wtce->play("notguilty"); ui_vp_wtce->play("notguilty");
testimony_in_progress = false; testimony_in_progress = false;
} }
else if (variant == 1) { else if (variant == 1) {
sfx_player->play(ao_app->get_sfx("guilty")); misc_sfx_player->play(ao_app->get_sfx("guilty"));
ui_vp_wtce->play("guilty"); ui_vp_wtce->play("guilty");
testimony_in_progress = false; testimony_in_progress = false;
} }
@ -2647,14 +2984,14 @@ void Courtroom::toggle_judge_buttons(bool is_on)
void Courtroom::mod_called(QString p_ip) void Courtroom::mod_called(QString p_ip)
{ {
ui_server_chatlog->append(p_ip); ui_server_chatlog->append(p_ip);
if (ui_guard->isChecked()) if (!ui_guard->isChecked())
{ {
modcall_player->play(ao_app->get_sfx("mod_call")); modcall_player->play(ao_app->get_sfx("mod_call"));
ao_app->alert(this); ao_app->alert(this);
} }
} }
void Courtroom::case_called(QString msg, bool def, bool pro, bool jud, bool jur, bool steno) void Courtroom::case_called(QString msg, bool def, bool pro, bool jud, bool jur, bool steno, bool witness)
{ {
if (ui_casing->isChecked()) if (ui_casing->isChecked())
{ {
@ -2663,7 +3000,8 @@ void Courtroom::case_called(QString msg, bool def, bool pro, bool jud, bool jur,
(ao_app->get_casing_prosecution_enabled() && pro) || (ao_app->get_casing_prosecution_enabled() && pro) ||
(ao_app->get_casing_judge_enabled() && jud) || (ao_app->get_casing_judge_enabled() && jud) ||
(ao_app->get_casing_juror_enabled() && jur) || (ao_app->get_casing_juror_enabled() && jur) ||
(ao_app->get_casing_steno_enabled() && steno)) (ao_app->get_casing_steno_enabled() && steno) ||
(ao_app->get_casing_wit_enabled() && witness))
{ {
modcall_player->play(ao_app->get_sfx("case_call")); modcall_player->play(ao_app->get_sfx("case_call"));
ao_app->alert(this); ao_app->alert(this);
@ -3232,6 +3570,22 @@ void Courtroom::on_realization_clicked()
ui_ic_chat_message->setFocus(); ui_ic_chat_message->setFocus();
} }
void Courtroom::on_screenshake_clicked()
{
if (screenshake_state == 0)
{
screenshake_state = 1;
ui_screenshake->set_image("screenshake_pressed.png");
}
else
{
screenshake_state = 0;
ui_screenshake->set_image("screenshake.png");
}
ui_ic_chat_message->setFocus();
}
void Courtroom::on_mute_clicked() void Courtroom::on_mute_clicked()
{ {
if (ui_mute_list->isHidden()) if (ui_mute_list->isHidden())
@ -3315,6 +3669,9 @@ void Courtroom::on_sfx_slider_moved(int p_value)
{ {
sfx_player->set_volume(p_value); sfx_player->set_volume(p_value);
objection_player->set_volume(p_value); objection_player->set_volume(p_value);
misc_sfx_player->set_volume(p_value);
frame_emote_sfx_player->set_volume(p_value);
pair_frame_emote_sfx_player->set_volume(p_value);
ui_ic_chat_message->setFocus(); ui_ic_chat_message->setFocus();
} }
@ -3419,7 +3776,7 @@ void Courtroom::on_char_select_right_clicked()
void Courtroom::on_spectator_clicked() void Courtroom::on_spectator_clicked()
{ {
enter_courtroom(-1); this->set_character(-1);
ui_emotes->hide(); ui_emotes->hide();
@ -3557,15 +3914,16 @@ void Courtroom::on_casing_clicked()
f_packet.append(QString::number(ao_app->get_casing_judge_enabled())); f_packet.append(QString::number(ao_app->get_casing_judge_enabled()));
f_packet.append(QString::number(ao_app->get_casing_juror_enabled())); f_packet.append(QString::number(ao_app->get_casing_juror_enabled()));
f_packet.append(QString::number(ao_app->get_casing_steno_enabled())); f_packet.append(QString::number(ao_app->get_casing_steno_enabled()));
f_packet.append(QString::number(ao_app->get_casing_wit_enabled()));
ao_app->send_server_packet(new AOPacket("SETCASE", f_packet)); ao_app->send_server_packet(new AOPacket("SETCASE", f_packet));
} }
else else
ao_app->send_server_packet(new AOPacket("SETCASE#\"\"#0#0#0#0#0#0#%")); ao_app->send_server_packet(new AOPacket("SETCASE#\"\"#0#0#0#0#0#0#0#%"));
} }
} }
void Courtroom::announce_case(QString title, bool def, bool pro, bool jud, bool jur, bool steno) void Courtroom::announce_case(QString title, bool def, bool pro, bool jud, bool jur, bool steno, bool wit)
{ {
if (ao_app->casing_alerts_enabled) if (ao_app->casing_alerts_enabled)
{ {
@ -3577,6 +3935,7 @@ void Courtroom::announce_case(QString title, bool def, bool pro, bool jud, bool
f_packet.append(QString::number(jud)); f_packet.append(QString::number(jud));
f_packet.append(QString::number(jur)); f_packet.append(QString::number(jur));
f_packet.append(QString::number(steno)); f_packet.append(QString::number(steno));
f_packet.append(QString::number(wit));
ao_app->send_server_packet(new AOPacket("CASEA", f_packet)); ao_app->send_server_packet(new AOPacket("CASEA", f_packet));
} }
@ -3590,30 +3949,25 @@ Courtroom::~Courtroom()
delete blip_player; delete blip_player;
} }
#ifdef BASSAUDIO
#if (defined (_WIN32) || defined (_WIN64)) #if (defined (_WIN32) || defined (_WIN64))
void Courtroom::load_bass_opus_plugin() void Courtroom::load_bass_opus_plugin()
{ {
#ifdef BASSAUDIO
BASS_PluginLoad("bassopus.dll", 0); BASS_PluginLoad("bassopus.dll", 0);
#endif
} }
#elif (defined (LINUX) || defined (__linux__)) #elif (defined (LINUX) || defined (__linux__))
void Courtroom::load_bass_opus_plugin() void Courtroom::load_bass_opus_plugin()
{ {
#ifdef BASSAUDIO
BASS_PluginLoad("libbassopus.so", 0); BASS_PluginLoad("libbassopus.so", 0);
#endif
} }
#elif defined __APPLE__ #elif defined __APPLE__
void Courtroom::load_bass_opus_plugin() void Courtroom::load_bass_opus_plugin()
{ {
QString libpath = ao_app->get_base_path() + "../../Frameworks/libbassopus.dylib"; QString libpath = ao_app->get_base_path() + "../../Frameworks/libbassopus.dylib";
QByteArray ba = libpath.toLocal8Bit(); QByteArray ba = libpath.toLocal8Bit();
#ifdef BASSAUDIO
BASS_PluginLoad(ba.data(), 0); BASS_PluginLoad(ba.data(), 0);
#endif
} }
#else #else
#error This operating system is unsupported for bass plugins. #error This operating system is unsupported for bass plugins.
#endif #endif
#endif

View File

@ -173,6 +173,10 @@ void Lobby::set_size_and_pos(QWidget *p_widget, QString p_identifier)
} }
} }
void Lobby::lobbyThreadHandler(QString loadingText){
this->set_loading_text(loadingText);
}
void Lobby::set_loading_text(QString p_text) void Lobby::set_loading_text(QString p_text)
{ {
ui_loading_text->clear(); ui_loading_text->clear();

View File

@ -37,7 +37,7 @@ int main(int argc, char *argv[])
main_app.installTranslator(&appTranslator); main_app.installTranslator(&appTranslator);
main_app.construct_lobby(); main_app.construct_lobby();
main_app.net_manager->connect_to_master();
main_app.w_lobby->show(); main_app.w_lobby->show();
main_app.net_manager->connect_to_master();
return main_app.exec(); return main_app.exec();
} }

View File

@ -7,6 +7,35 @@
#include "hardware_functions.h" #include "hardware_functions.h"
#include "debug_functions.h" #include "debug_functions.h"
class AOPacketLoadMusicThreading : public QRunnable
{
public:
AOApplication *myapp;
QString filename;
bool ismusic;
AOPacketLoadMusicThreading(AOApplication *my_app, QString file_name, bool is_music){
myapp = my_app;
filename = file_name;
ismusic = is_music;
}
void run()
{
if(ismusic)
{
myapp->w_courtroom->append_music(filename);
}
else
{
myapp->w_courtroom->append_area(filename);
myapp->area_count++;
}
for (int area_n = 0; area_n < myapp->area_count; area_n++)
{
myapp->w_courtroom->arup_append(0, "Unknown", "Unknown", "Unknown");
}
}
};
void AOApplication::ms_packet_received(AOPacket *p_packet) void AOApplication::ms_packet_received(AOPacket *p_packet)
{ {
p_packet->net_decode(); p_packet->net_decode();
@ -156,6 +185,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet)
arup_enabled = false; arup_enabled = false;
casing_alerts_enabled = false; casing_alerts_enabled = false;
modcall_reason_enabled = false; modcall_reason_enabled = false;
looping_sfx_support_enabled = false;
//workaround for tsuserver4 //workaround for tsuserver4
if (f_contents.at(0) == "NOENCRYPT") if (f_contents.at(0) == "NOENCRYPT")
@ -216,6 +246,10 @@ void AOApplication::server_packet_received(AOPacket *p_packet)
casing_alerts_enabled = true; casing_alerts_enabled = true;
if (f_packet.contains("modcall_reason",Qt::CaseInsensitive)) if (f_packet.contains("modcall_reason",Qt::CaseInsensitive))
modcall_reason_enabled = true; modcall_reason_enabled = true;
if (f_packet.contains("looping_sfx",Qt::CaseInsensitive))
looping_sfx_support_enabled = true;
w_lobby->enable_connect_button();
} }
else if (header == "PN") else if (header == "PN")
{ {
@ -316,7 +350,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet)
++loaded_chars; ++loaded_chars;
w_lobby->set_loading_text("Loading chars:\n" + QString::number(loaded_chars) + "/" + QString::number(char_list_size)); w_lobby->set_loading_text(tr("Loading chars:\n%1/%2").arg(QString::number(loaded_chars)).arg(QString::number(char_list_size)));
w_courtroom->append_char(f_char); w_courtroom->append_char(f_char);
@ -408,7 +442,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet)
{ {
musics_time = true; musics_time = true;
areas--; areas--;
w_courtroom->fix_last_area(); //w_courtroom->fix_last_area();
w_courtroom->append_music(f_music); w_courtroom->append_music(f_music);
} }
else else
@ -477,53 +511,39 @@ void AOApplication::server_packet_received(AOPacket *p_packet)
} }
else if (header == "SM") else if (header == "SM")
{ {
if (!courtroom_constructed) if (!courtroom_constructed)
goto end; goto end;
bool musics_time = false; bool musics_time = false;
int areas = 0; area_count = 0;
for (int n_element = 0 ; n_element < f_contents.size() ; ++n_element) for (int n_element = 0 ; n_element < f_contents.size() ; ++n_element)
{
++loaded_music;
w_lobby->set_loading_text(tr("Loading music:\n%1/%2").arg(QString::number(loaded_music)).arg(QString::number(music_list_size)));
if (musics_time)
{
w_courtroom->append_music(f_contents.at(n_element));
}
else
{
if (f_contents.at(n_element).endsWith(".wav") ||
f_contents.at(n_element).endsWith(".mp3") ||
f_contents.at(n_element).endsWith(".mp4") ||
f_contents.at(n_element).endsWith(".ogg") ||
f_contents.at(n_element).endsWith(".opus"))
{ {
musics_time = true; if (!musics_time && (f_contents.at(n_element).startsWith("==") ||
w_courtroom->fix_last_area(); f_contents.at(n_element).endsWith(".wav") ||
w_courtroom->append_music(f_contents.at(n_element)); f_contents.at(n_element).endsWith(".mp3") ||
areas--; f_contents.at(n_element).endsWith(".mp4") ||
f_contents.at(n_element).endsWith(".ogg") ||
f_contents.at(n_element).endsWith(".opus")))
{
musics_time = true;
continue;
}
AOPacketLoadMusicThreading *music_load = new AOPacketLoadMusicThreading(this, f_contents.at(n_element), musics_time);
QThreadPool::globalInstance()->start(music_load);
++loaded_music;
int total_loading_size = char_list_size * 2 + evidence_list_size + music_list_size;
int loading_value = int(((loaded_chars + generated_chars + loaded_music + loaded_evidence) / static_cast<double>(total_loading_size)) * 100);
w_lobby->set_loading_value(loading_value);
w_lobby->set_loading_text(tr("Loading music:\n%1/%2").arg(QString::number(loaded_music)).arg(QString::number(music_list_size)));
if(QThreadPool::globalInstance()->activeThreadCount() == QThreadPool::globalInstance()->maxThreadCount())
{
QThreadPool::globalInstance()->waitForDone(); //out of order music is bad
}
} }
else QThreadPool::globalInstance()->waitForDone();
{
w_courtroom->append_area(f_contents.at(n_element));
areas++;
}
}
for (int area_n = 0; area_n < areas; area_n++) send_server_packet(new AOPacket("RD#%"));
{
w_courtroom->arup_append(0, "Unknown", "Unknown", "Unknown");
}
int total_loading_size = char_list_size * 2 + evidence_list_size + music_list_size;
int loading_value = int(((loaded_chars + generated_chars + loaded_music + loaded_evidence) / static_cast<double>(total_loading_size)) * 100);
w_lobby->set_loading_value(loading_value);
}
send_server_packet(new AOPacket("RD#%"));
} }
else if (header == "DONE") else if (header == "DONE")
{ {
@ -540,6 +560,16 @@ void AOApplication::server_packet_received(AOPacket *p_packet)
destruct_lobby(); destruct_lobby();
} }
else if (header == "REFMUSIC")
{
if (courtroom_constructed)
w_courtroom->reset_music_list();
for (int n_element = 0 ; n_element < f_contents.size() ; ++n_element)
{
w_courtroom->append_music(f_contents.at(n_element));
}
w_courtroom->list_music();
}
else if (header == "BN") else if (header == "BN")
{ {
if (f_contents.size() < 1) if (f_contents.size() < 1)
@ -553,9 +583,24 @@ void AOApplication::server_packet_received(AOPacket *p_packet)
{ {
if (f_contents.size() < 3) if (f_contents.size() < 3)
goto end; goto end;
if(f_contents.size() < 4){
if (courtroom_constructed) if (courtroom_constructed)
w_courtroom->enter_courtroom(f_contents.at(2).toInt()); w_courtroom->enter_courtroom(f_contents.at(2).toInt());
}
else
{
if (courtroom_constructed)
{
if(f_contents.at(3) == "True")
{
w_courtroom->set_character(f_contents.at(2).toInt());
}
else
{
w_courtroom->enter_courtroom(f_contents.at(2).toInt());
}
}
}
} }
else if (header == "MS") else if (header == "MS")
{ {
@ -620,6 +665,11 @@ void AOApplication::server_packet_received(AOPacket *p_packet)
} }
} }
} }
else if (header == "FAILEDLOGIN")
{
if (courtroom_constructed)
w_courtroom->handle_failed_login();
}
else if (header == "IL") else if (header == "IL")
{ {
if (courtroom_constructed && f_contents.size() > 0) if (courtroom_constructed && f_contents.size() > 0)
@ -665,8 +715,8 @@ void AOApplication::server_packet_received(AOPacket *p_packet)
} }
else if (header == "CASEA") else if (header == "CASEA")
{ {
if (courtroom_constructed && f_contents.size() > 6) if (courtroom_constructed && f_contents.size() > 7)
w_courtroom->case_called(f_contents.at(0), f_contents.at(1) == "1", f_contents.at(2) == "1", f_contents.at(3) == "1", f_contents.at(4) == "1", f_contents.at(5) == "1"); w_courtroom->case_called(f_contents.at(0), f_contents.at(1) == "1", f_contents.at(2) == "1", f_contents.at(3) == "1", f_contents.at(4) == "1", f_contents.at(5) == "1", f_contents.at(6) == "1");
} }
end: end:

View File

@ -96,11 +96,37 @@ QString AOApplication::get_sounds_path(QString p_file)
QString AOApplication::get_music_path(QString p_song) QString AOApplication::get_music_path(QString p_song)
{ {
QString path = get_base_path() + "sounds/music/" + p_song; QString withending_check = get_base_path() + "sounds/music/" + p_song;
QString mp3_check = get_base_path() + "sounds/music/" + p_song + ".mp3";
QString opus_check = get_base_path() + "sounds/music/" + p_song + ".opus";
if (file_exists(opus_check))
{
#ifndef CASE_SENSITIVE_FILESYSTEM
return opus_check;
#else
return get_case_sensitive_path(opus_check);
#endif
}
else if (file_exists(mp3_check))
{
#ifndef CASE_SENSITIVE_FILESYSTEM
return mp3_check;
#else
return get_case_sensitive_path(mp3_check);
#endif
}
else if (file_exists(withending_check))
{
#ifndef CASE_SENSITIVE_FILESYSTEM
return withending_check;
#else
return get_case_sensitive_path(withending_check);
#endif
}
#ifndef CASE_SENSITIVE_FILESYSTEM #ifndef CASE_SENSITIVE_FILESYSTEM
return path; return get_base_path() + "sounds/music/" + p_song + ".wav";
#else #else
return get_case_sensitive_path(path); return get_case_sensitive_path(get_base_path() + "sounds/music/" + p_song + ".wav");
#endif #endif
} }

View File

@ -8,7 +8,7 @@ QString AOApplication::read_theme()
int AOApplication::read_blip_rate() int AOApplication::read_blip_rate()
{ {
int result = configini->value("blip_rate", 1).toInt(); int result = configini->value("blip_rate", 2).toInt();
if (result < 1) if (result < 1)
return 1; return 1;
@ -568,6 +568,42 @@ QString AOApplication::get_sfx_name(QString p_char, int p_emote)
else return f_result; else return f_result;
} }
QString AOApplication::get_sfx_looping(QString p_char, int p_emote)
{
QString f_result = read_char_ini(p_char, QString::number(p_emote + 1), "SoundL");
if (f_result == "")
return "0";
else return f_result;
}
QString AOApplication::get_frame_sfx_name(QString p_char, QString p_emote, int n_frame)
{
QString f_result = read_char_ini(p_char, QString::number(n_frame), p_emote.append("_FrameSFX"));
if (f_result == "")
return "";
else return f_result;
}
QString AOApplication::get_screenshake_frame(QString p_char, QString p_emote, int n_frame)
{
QString f_result = read_char_ini(p_char, QString::number(n_frame), p_emote.append("_FrameScreenshake"));
if (f_result == "")
return "";
else return f_result;
}
QString AOApplication::get_realization_frame(QString p_char, QString p_emote, int n_frame)
{
QString f_result = read_char_ini(p_char, QString::number(n_frame), p_emote.append("_FrameRealization"));
if (f_result == "")
return "";
else return f_result;
}
int AOApplication::get_sfx_delay(QString p_char, int p_emote) int AOApplication::get_sfx_delay(QString p_char, int p_emote)
{ {
QString f_result = read_char_ini(p_char, QString::number(p_emote + 1), "SoundT"); QString f_result = read_char_ini(p_char, QString::number(p_emote + 1), "SoundT");
@ -601,12 +637,31 @@ bool AOApplication::get_blank_blip()
return result.startsWith("true"); return result.startsWith("true");
} }
bool AOApplication::get_looping_sfx()
{
QString result = configini->value("looping_sfx", "true").value<QString>();
return result.startsWith("true");
}
bool AOApplication::get_objectmusic()
{
QString result = configini->value("kill_music_on_object", "false").value<QString>();
return result.startsWith("true");
}
bool AOApplication::is_discord_enabled() bool AOApplication::is_discord_enabled()
{ {
QString result = configini->value("discord", "true").value<QString>(); QString result = configini->value("discord", "true").value<QString>();
return result.startsWith("true"); return result.startsWith("true");
} }
bool AOApplication::is_shakeandflash_enabled()
{
QString result = configini->value("shakeandflash", "true").value<QString>();
return result.startsWith("true");
}
bool AOApplication::get_casing_enabled() bool AOApplication::get_casing_enabled()
{ {
QString result = configini->value("casing_enabled", "false").value<QString>(); QString result = configini->value("casing_enabled", "false").value<QString>();
@ -643,6 +698,12 @@ bool AOApplication::get_casing_steno_enabled()
return result.startsWith("true"); return result.startsWith("true");
} }
bool AOApplication::get_casing_wit_enabled()
{
QString result = configini->value("casing_wit_enabled", "false").value<QString>();
return result.startsWith("true");
}
bool AOApplication::get_casing_cm_enabled() bool AOApplication::get_casing_cm_enabled()
{ {
QString result = configini->value("casing_cm_enabled", "false").value<QString>(); QString result = configini->value("casing_cm_enabled", "false").value<QString>();