mirror of
https://github.com/tstellar/bygfoot.git
synced 2025-01-28 14:39:22 +01:00
"Commentary improvements etc."
This commit is contained in:
parent
405d248f86
commit
fcacd51742
File diff suppressed because one or more lines are too long
@ -1402,6 +1402,23 @@
|
||||
<property name="fill">True</property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkButton" id="button_contract_cancel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="label">gtk-cancel</property>
|
||||
<property name="use_stock">True</property>
|
||||
<property name="relief">GTK_RELIEF_NORMAL</property>
|
||||
<property name="focus_on_click">True</property>
|
||||
<signal name="clicked" handler="on_button_contract_cancel_clicked" last_modification_time="Tue, 05 Jul 2005 13:09:45 GMT"/>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="padding">0</property>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="padding">0</property>
|
||||
|
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2005-07-03 12:53+0200\n"
|
||||
"POT-Creation-Date: 2005-07-05 20:34+0200\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@ -133,11 +133,11 @@ msgid ""
|
||||
"You are negotiating with %s about a new contract. Pay attention to what "
|
||||
"you're doing; if you don't come to terms with him within %d offers, he's "
|
||||
"going to leave your team after his current contract expires (unless you sell "
|
||||
"him).\n"
|
||||
"him). You may only abort BEFORE making the first offer.\n"
|
||||
"Your scout's recommendations are preset:"
|
||||
msgstr ""
|
||||
|
||||
#: src/callback_func.c:616
|
||||
#: src/callback_func.c:620
|
||||
#, c-format
|
||||
msgid ""
|
||||
"You want to fire %s. Since his contract expires in %.1f years, he demands a "
|
||||
@ -244,37 +244,37 @@ msgstr ""
|
||||
msgid "Contracts are disabled in this country definition."
|
||||
msgstr ""
|
||||
|
||||
#: src/cup.c:790
|
||||
#: src/cup.c:799
|
||||
msgid " -- Second leg"
|
||||
msgstr ""
|
||||
|
||||
#: src/cup.c:792
|
||||
#: src/cup.c:801
|
||||
msgid " -- First leg"
|
||||
msgstr ""
|
||||
|
||||
#: src/cup.c:795
|
||||
#: src/cup.c:804
|
||||
msgid " -- Replay matches"
|
||||
msgstr ""
|
||||
|
||||
#: src/cup.c:807
|
||||
#: src/cup.c:816
|
||||
msgid "Round robin"
|
||||
msgstr ""
|
||||
|
||||
#. A cup stage, e.g. Last 32 when there are only 32 teams left.
|
||||
#: src/cup.c:815
|
||||
#: src/cup.c:824
|
||||
#, c-format
|
||||
msgid "Last %d"
|
||||
msgstr ""
|
||||
|
||||
#: src/cup.c:818
|
||||
#: src/cup.c:827
|
||||
msgid "Final"
|
||||
msgstr ""
|
||||
|
||||
#: src/cup.c:821
|
||||
#: src/cup.c:830
|
||||
msgid "Semi-final"
|
||||
msgstr ""
|
||||
|
||||
#: src/cup.c:824
|
||||
#: src/cup.c:833
|
||||
msgid "Quarter-final"
|
||||
msgstr ""
|
||||
|
||||
@ -626,15 +626,15 @@ msgstr ""
|
||||
msgid "_Help"
|
||||
msgstr ""
|
||||
|
||||
#: src/interface.c:806 src/misc2_interface.c:1027
|
||||
#: src/interface.c:806 src/misc2_interface.c:1036
|
||||
msgid "About"
|
||||
msgstr ""
|
||||
|
||||
#: src/interface.c:814 src/misc2_interface.c:1041
|
||||
#: src/interface.c:814 src/misc2_interface.c:1050
|
||||
msgid "Contributors"
|
||||
msgstr ""
|
||||
|
||||
#: src/interface.c:822 src/misc2_interface.c:1067
|
||||
#: src/interface.c:822 src/misc2_interface.c:1076
|
||||
msgid "Help"
|
||||
msgstr ""
|
||||
|
||||
@ -733,38 +733,38 @@ msgstr ""
|
||||
msgid "Next (W)"
|
||||
msgstr ""
|
||||
|
||||
#: src/lg_commentary.c:522 src/team.c:500
|
||||
#: src/lg_commentary.c:499 src/team.c:500
|
||||
msgid "ALL OUT DEFEND"
|
||||
msgstr ""
|
||||
|
||||
#: src/lg_commentary.c:525 src/team.c:502
|
||||
#: src/lg_commentary.c:502 src/team.c:502
|
||||
msgid "DEFEND"
|
||||
msgstr ""
|
||||
|
||||
#: src/lg_commentary.c:528 src/team.c:504
|
||||
#: src/lg_commentary.c:505 src/team.c:504
|
||||
msgid "BALANCED"
|
||||
msgstr ""
|
||||
|
||||
#: src/lg_commentary.c:531 src/team.c:506
|
||||
#: src/lg_commentary.c:508 src/team.c:506
|
||||
msgid "ATTACK"
|
||||
msgstr ""
|
||||
|
||||
#: src/lg_commentary.c:534 src/team.c:508
|
||||
#: src/lg_commentary.c:511 src/team.c:508
|
||||
msgid "ALL OUT ATTACK"
|
||||
msgstr ""
|
||||
|
||||
#. Boost value.
|
||||
#: src/lg_commentary.c:537 src/team.c:516
|
||||
#: src/lg_commentary.c:514 src/team.c:516
|
||||
msgid "ANTI"
|
||||
msgstr ""
|
||||
|
||||
#. Boost value.
|
||||
#: src/lg_commentary.c:540 src/team.c:519
|
||||
#: src/lg_commentary.c:517 src/team.c:519
|
||||
msgid "OFF"
|
||||
msgstr ""
|
||||
|
||||
#. Boost value.
|
||||
#: src/lg_commentary.c:543 src/team.c:522
|
||||
#: src/lg_commentary.c:520 src/team.c:522
|
||||
msgid "ON"
|
||||
msgstr ""
|
||||
|
||||
@ -859,17 +859,17 @@ msgstr ""
|
||||
msgid "The structure value %d is invalid."
|
||||
msgstr ""
|
||||
|
||||
#: src/misc2_callback_func.c:154
|
||||
#: src/misc2_callback_func.c:156
|
||||
#, c-format
|
||||
msgid "%s accepts your offer."
|
||||
msgstr ""
|
||||
|
||||
#: src/misc2_callback_func.c:163
|
||||
#: src/misc2_callback_func.c:165
|
||||
#, c-format
|
||||
msgid "%s rejects your offer. You may still make %d offers."
|
||||
msgstr ""
|
||||
|
||||
#: src/misc2_callback_func.c:170
|
||||
#: src/misc2_callback_func.c:172
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s rejects your offer and won't negotiate with you anymore. You should sell "
|
||||
@ -884,11 +884,11 @@ msgstr ""
|
||||
msgid "Your offer will be considered next week."
|
||||
msgstr ""
|
||||
|
||||
#: src/misc2_callbacks.c:269
|
||||
#: src/misc2_callbacks.c:280
|
||||
msgid "You can't play Bygfoot without users!"
|
||||
msgstr ""
|
||||
|
||||
#: src/misc2_callbacks.c:274
|
||||
#: src/misc2_callbacks.c:285
|
||||
#, c-format
|
||||
msgid "Remove user %s from the game?"
|
||||
msgstr ""
|
||||
@ -937,63 +937,63 @@ msgid "OK"
|
||||
msgstr ""
|
||||
|
||||
#: src/misc2_interface.c:434 src/misc2_interface.c:521
|
||||
#: src/misc2_interface.c:1074 src/misc2_interface.c:1169
|
||||
#: src/misc2_interface.c:1083 src/misc2_interface.c:1178
|
||||
#: src/misc_interface.c:263 src/misc_interface.c:1018
|
||||
#: src/options_interface.c:978
|
||||
msgid "Esc"
|
||||
msgstr ""
|
||||
|
||||
#: src/misc2_interface.c:603
|
||||
#: src/misc2_interface.c:604
|
||||
msgid "1 year"
|
||||
msgstr ""
|
||||
|
||||
#: src/misc2_interface.c:611
|
||||
#: src/misc2_interface.c:612
|
||||
msgid "3 years"
|
||||
msgstr ""
|
||||
|
||||
#: src/misc2_interface.c:619
|
||||
#: src/misc2_interface.c:620
|
||||
msgid "4 years"
|
||||
msgstr ""
|
||||
|
||||
#: src/misc2_interface.c:627
|
||||
#: src/misc2_interface.c:628
|
||||
msgid "2 years"
|
||||
msgstr ""
|
||||
|
||||
#: src/misc2_interface.c:690
|
||||
#: src/misc2_interface.c:691
|
||||
msgid "Make offer"
|
||||
msgstr ""
|
||||
|
||||
#: src/misc2_interface.c:777
|
||||
#: src/misc2_interface.c:786
|
||||
msgid "Users -- click to remove"
|
||||
msgstr ""
|
||||
|
||||
#: src/misc2_interface.c:792
|
||||
#: src/misc2_interface.c:801
|
||||
msgid "Click on a user to remove him from the game."
|
||||
msgstr ""
|
||||
|
||||
#: src/misc2_interface.c:798
|
||||
#: src/misc2_interface.c:807
|
||||
msgid "Available teams"
|
||||
msgstr ""
|
||||
|
||||
#: src/misc2_interface.c:834 src/misc_interface.c:190
|
||||
#: src/misc2_interface.c:843 src/misc_interface.c:190
|
||||
msgid "Add user"
|
||||
msgstr ""
|
||||
|
||||
#: src/misc2_interface.c:910
|
||||
#: src/misc2_interface.c:919
|
||||
msgid "Debug"
|
||||
msgstr ""
|
||||
|
||||
#: src/misc2_interface.c:917
|
||||
#: src/misc2_interface.c:926
|
||||
msgid ""
|
||||
"Bygfoot debug window. If you got here by accident, CLOSE IMMEDIATELY "
|
||||
"(otherwise your CPU will be destroyed by overheating)."
|
||||
msgstr ""
|
||||
|
||||
#: src/misc2_interface.c:1157 src/misc_interface.c:994
|
||||
#: src/misc2_interface.c:1166 src/misc_interface.c:994
|
||||
msgid "Return"
|
||||
msgstr ""
|
||||
|
||||
#: src/misc2_interface.c:1186
|
||||
#: src/misc2_interface.c:1195
|
||||
msgid "Decide later"
|
||||
msgstr ""
|
||||
|
||||
|
@ -37,6 +37,7 @@
|
||||
#define cup_id_new (counters[COUNT_CUP_ID]++)
|
||||
#define league_id_new (counters[COUNT_LEAGUE_ID]++)
|
||||
#define fixture_id_new (counters[COUNT_FIX_ID]++)
|
||||
#define lg_commentary_id_new (counters[COUNT_LG_COMM_ID]++)
|
||||
|
||||
/** Convenience abbreviation. */
|
||||
#define ligs country.leagues
|
||||
|
@ -492,7 +492,7 @@ callback_offer_new_contract(gint idx)
|
||||
|
||||
window_create(WINDOW_CONTRACT);
|
||||
|
||||
sprintf(buf, _("You are negotiating with %s about a new contract. Pay attention to what you're doing; if you don't come to terms with him within %d offers, he's going to leave your team after his current contract expires (unless you sell him).\nYour scout's recommendations are preset:"), pl->name->str,
|
||||
sprintf(buf, _("You are negotiating with %s about a new contract. Pay attention to what you're doing; if you don't come to terms with him within %d offers, he's going to leave your team after his current contract expires (unless you sell him). You may only abort BEFORE making the first offer.\nYour scout's recommendations are preset:"), pl->name->str,
|
||||
const_int("int_contract_max_offers"));
|
||||
gtk_label_set_text(GTK_LABEL(lookup_widget(window.contract, "label_contract")), buf);
|
||||
|
||||
@ -591,9 +591,13 @@ callback_show_player_list(gint type)
|
||||
break;
|
||||
case SHOW_NEXT_LEAGUE:
|
||||
stat1 = league_cup_get_next_clid(stat1);
|
||||
while(stat1 >= ID_CUP_START && cup_from_clid(stat1)->teams->len == 0)
|
||||
stat1 = league_cup_get_next_clid(stat1);
|
||||
break;
|
||||
case SHOW_PREVIOUS_LEAGUE:
|
||||
stat1 = league_cup_get_previous_clid(stat1);
|
||||
while(stat1 >= ID_CUP_START && cup_from_clid(stat1)->teams->len == 0)
|
||||
stat1 = league_cup_get_previous_clid(stat1);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -162,12 +162,14 @@ cup_get_choose_team_league_cup(const CupChooseTeam *ct,
|
||||
else
|
||||
{
|
||||
for(i=0;i<ligs->len;i++)
|
||||
{
|
||||
if(strcmp(lig(i).sid->str, ct->sid->str) == 0)
|
||||
{
|
||||
*league = &lig(i);
|
||||
*cup = NULL;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
for(i=0;i<cps->len;i++)
|
||||
{
|
||||
@ -179,6 +181,13 @@ cup_get_choose_team_league_cup(const CupChooseTeam *ct,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(*league == NULL && *cup == NULL)
|
||||
{
|
||||
g_warning("cup_get_choose_team_league_cup: no league nor cup found for chooseteam %s",
|
||||
ct->sid->str);
|
||||
main_exit_program(EXIT_CHOOSE_TEAM_ERROR, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
/** Return the pointers to the teams participating in the
|
||||
|
@ -11,6 +11,7 @@ enum Counters
|
||||
COUNT_CUP_ID,
|
||||
COUNT_LEAGUE_ID,
|
||||
COUNT_FIX_ID,
|
||||
COUNT_LG_COMM_ID,
|
||||
COUNT_SHOW_DEBUG,
|
||||
COUNT_END
|
||||
};
|
||||
@ -89,7 +90,6 @@ enum Status0Value
|
||||
STATUS_SHOW_LEAGUE_RESULTS,
|
||||
STATUS_SHOW_LEAGUE_STATS,
|
||||
STATUS_SHOW_SEASON_HISTORY,
|
||||
STATUS_CONTRACT_OFFER,
|
||||
STATUS_SHOW_PLAYER_LIST,
|
||||
STATUS_FIRE_PLAYER,
|
||||
STATUS_USER_MANAGEMENT,
|
||||
|
@ -17,65 +17,8 @@
|
||||
|
||||
/** The replacement strings for the live game commentary tokens. */
|
||||
gchar **token_rep;
|
||||
|
||||
/** Allocate memory for the token array and fill some tokens
|
||||
at the beginning of the live game that don't change later. */
|
||||
void
|
||||
lg_commentary_initialize(const Fixture *fix)
|
||||
{
|
||||
gint i;
|
||||
gchar buf[SMALL];
|
||||
|
||||
token_rep = (gchar**)g_malloc(sizeof(gchar*) * lg_tokens.list->len);
|
||||
|
||||
for(i=0;i<lg_tokens.list->len;i++)
|
||||
token_rep[i] = NULL;
|
||||
|
||||
token_rep[option_int("string_lg_commentary_token_team_home", &lg_tokens)] =
|
||||
g_strdup(fix->teams[0]->name->str);
|
||||
token_rep[option_int("string_lg_commentary_token_team_away", &lg_tokens)] =
|
||||
g_strdup(fix->teams[1]->name->str);
|
||||
|
||||
if(fix->teams[0]->clid < ID_CUP_START)
|
||||
token_rep[option_int("string_lg_commentary_token_team_layer0", &lg_tokens)] =
|
||||
misc_int_to_char(league_from_clid(fix->teams[0]->clid)->layer);
|
||||
if(fix->teams[1]->clid < ID_CUP_START)
|
||||
token_rep[option_int("string_lg_commentary_token_team_layer1", &lg_tokens)] =
|
||||
misc_int_to_char(league_from_clid(fix->teams[1]->clid)->layer);
|
||||
|
||||
token_rep[option_int("string_lg_commentary_token_league_cup_name", &lg_tokens)] =
|
||||
g_strdup(league_cup_get_name_string(fix->clid));
|
||||
|
||||
if(fix->clid >= ID_CUP_START)
|
||||
{
|
||||
cup_get_round_name(cup_from_clid(fix->clid), fix->round, buf);
|
||||
token_rep[option_int("string_lg_commentary_token_cup_round_name", &lg_tokens)] =
|
||||
g_strdup(buf);
|
||||
}
|
||||
|
||||
misc_print_grouped_int(fix->attendance, buf);
|
||||
token_rep[option_int("string_lg_commentary_token_attendance", &lg_tokens)] =
|
||||
g_strdup(buf);
|
||||
|
||||
token_rep[option_int("string_lg_commentary_token_yellow_limit", &lg_tokens)] =
|
||||
misc_int_to_char(league_cup_get_yellow_red(fix->clid));
|
||||
}
|
||||
|
||||
/** Free the memory occupied by the tokens array and the permanent tokens. */
|
||||
void
|
||||
lg_commentary_post_match(void)
|
||||
{
|
||||
g_free(token_rep[option_int("string_lg_commentary_token_team_home", &lg_tokens)]);
|
||||
g_free(token_rep[option_int("string_lg_commentary_token_team_away", &lg_tokens)]);
|
||||
g_free(token_rep[option_int("string_lg_commentary_token_attendance", &lg_tokens)]);
|
||||
g_free(token_rep[option_int("string_lg_commentary_token_league_cup_name", &lg_tokens)]);
|
||||
g_free(token_rep[option_int("string_lg_commentary_token_cup_round_name", &lg_tokens)]);
|
||||
g_free(token_rep[option_int("string_lg_commentary_token_yellow_limit", &lg_tokens)]);
|
||||
g_free(token_rep[option_int("string_lg_commentary_token_team_layer0", &lg_tokens)]);
|
||||
g_free(token_rep[option_int("string_lg_commentary_token_team_layer1", &lg_tokens)]);
|
||||
|
||||
g_free(token_rep);
|
||||
}
|
||||
/** Whether there was a commentary repetition rejection. */
|
||||
gboolean repetition;
|
||||
|
||||
/** Generate commentary for the live game event in the unit.
|
||||
@param unit The unit we comment.
|
||||
@ -108,10 +51,18 @@ lg_commentary_generate(const LiveGame *live_game, LiveGameUnit *unit)
|
||||
gint order[(*commentaries)->len];
|
||||
lg_commentary_get_order(*commentaries, order);
|
||||
|
||||
repetition = FALSE;
|
||||
|
||||
for(i=0;i<(*commentaries)->len;i++)
|
||||
{
|
||||
if(lg_commentary_check_commentary(&g_array_index(*commentaries, LGCommentary, order[i]), buf))
|
||||
break;
|
||||
|
||||
if(i == (*commentaries)->len)
|
||||
{
|
||||
repetition = TRUE;
|
||||
for(i=0;i<(*commentaries)->len;i++)
|
||||
if(lg_commentary_check_commentary(&g_array_index(*commentaries, LGCommentary, order[i]), buf))
|
||||
break;
|
||||
}
|
||||
|
||||
if(i == (*commentaries)->len)
|
||||
@ -122,6 +73,8 @@ lg_commentary_generate(const LiveGame *live_game, LiveGameUnit *unit)
|
||||
}
|
||||
|
||||
unit->event.commentary = g_string_new(buf);
|
||||
unit->event.commentary_id = (i == (*commentaries)->len) ?
|
||||
-1 : g_array_index(*commentaries, LGCommentary, order[i]).id;
|
||||
|
||||
for(i=0;i<lg_tokens.list->len;i++)
|
||||
if(i != option_int("string_lg_commentary_token_team_home", &lg_tokens) &&
|
||||
@ -143,23 +96,41 @@ lg_commentary_generate(const LiveGame *live_game, LiveGameUnit *unit)
|
||||
gboolean
|
||||
lg_commentary_check_commentary(const LGCommentary *commentary, gchar *dest)
|
||||
{
|
||||
if(commentary->condition != NULL &&
|
||||
!lg_commentary_parse_condition(commentary->condition->str))
|
||||
if((commentary->condition != NULL &&
|
||||
!lg_commentary_parse_condition(commentary->condition->str)) ||
|
||||
(repetition == FALSE && query_lg_commentary_is_repetition(commentary->id)))
|
||||
return FALSE;
|
||||
|
||||
strcpy(dest, commentary->text->str);
|
||||
|
||||
if(lg_commentary_replace_tokens(dest))
|
||||
{
|
||||
lg_commentary_replace_expressions(dest);
|
||||
|
||||
if(lg_commentary_replace_tokens(dest))
|
||||
return TRUE;
|
||||
}
|
||||
{
|
||||
lg_commentary_replace_expressions(dest);
|
||||
|
||||
if(lg_commentary_replace_tokens(dest))
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/** Check whether a commentary with given id has been used in the last
|
||||
few commentaries. Return TRUE if so and FALSE otherwise. */
|
||||
gboolean
|
||||
query_lg_commentary_is_repetition(gint id)
|
||||
{
|
||||
const GArray *units = ((LiveGame*)statp)->units;
|
||||
gint units_min = units->len - const_int("int_lg_commentary_check_backwards") - 1;
|
||||
gint i, min = MAX(units_min, 0);
|
||||
|
||||
for(i=units->len - 2; i>= min; i--)
|
||||
if(g_array_index(units, LiveGameUnit, i).event.commentary_id == id)
|
||||
return TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/** Replace simple arithmetic expressions like "1 + 2"
|
||||
and comparisons like "3 < 4" with the appropriate result. */
|
||||
void
|
||||
@ -188,7 +159,9 @@ lg_commentary_replace_expressions(gchar *commentary_text)
|
||||
|
||||
if(query_misc_string_contains(buf2, "<") ||
|
||||
query_misc_string_contains(buf2, ">") ||
|
||||
query_misc_string_contains(buf2, "="))
|
||||
query_misc_string_contains(buf2, "=") ||
|
||||
query_misc_string_contains(buf2, " G ") ||
|
||||
query_misc_string_contains(buf2, " L "))
|
||||
misc_parse(buf2, &value);
|
||||
else
|
||||
misc_parse_expression(buf2, &value);
|
||||
@ -312,7 +285,9 @@ lg_commentary_set_stats_tokens(const LiveGameStats *stats)
|
||||
token_rep[option_int("string_lg_commentary_token_stat_shot_per0", &lg_tokens)] =
|
||||
misc_int_to_char(stats->values[0][LIVE_GAME_STAT_VALUE_SHOT_PERCENTAGE]);
|
||||
token_rep[option_int("string_lg_commentary_token_stat_poss0", &lg_tokens)] =
|
||||
misc_int_to_char(stats->values[0][LIVE_GAME_STAT_VALUE_POSSESSION]);
|
||||
misc_int_to_char((gint)rint(100 * ((gfloat)stats->values[0][LIVE_GAME_STAT_VALUE_POSSESSION] /
|
||||
((gfloat)stats->values[0][LIVE_GAME_STAT_VALUE_POSSESSION] +
|
||||
(gfloat)stats->values[1][LIVE_GAME_STAT_VALUE_POSSESSION]))));
|
||||
token_rep[option_int("string_lg_commentary_token_stat_pen0", &lg_tokens)] =
|
||||
misc_int_to_char(stats->values[0][LIVE_GAME_STAT_VALUE_PENALTIES]);
|
||||
token_rep[option_int("string_lg_commentary_token_stat_fouls0", &lg_tokens)] =
|
||||
@ -329,7 +304,9 @@ lg_commentary_set_stats_tokens(const LiveGameStats *stats)
|
||||
token_rep[option_int("string_lg_commentary_token_stat_shot_per1", &lg_tokens)] =
|
||||
misc_int_to_char(stats->values[1][LIVE_GAME_STAT_VALUE_SHOT_PERCENTAGE]);
|
||||
token_rep[option_int("string_lg_commentary_token_stat_poss1", &lg_tokens)] =
|
||||
misc_int_to_char(stats->values[1][LIVE_GAME_STAT_VALUE_POSSESSION]);
|
||||
misc_int_to_char((gint)rint(100 * ((gfloat)stats->values[1][LIVE_GAME_STAT_VALUE_POSSESSION] /
|
||||
((gfloat)stats->values[0][LIVE_GAME_STAT_VALUE_POSSESSION] +
|
||||
(gfloat)stats->values[1][LIVE_GAME_STAT_VALUE_POSSESSION]))));
|
||||
token_rep[option_int("string_lg_commentary_token_stat_pen1", &lg_tokens)] =
|
||||
misc_int_to_char(stats->values[1][LIVE_GAME_STAT_VALUE_PENALTIES]);
|
||||
token_rep[option_int("string_lg_commentary_token_stat_fouls1", &lg_tokens)] =
|
||||
@ -547,6 +524,65 @@ lg_commentary_get_extra_data(const LiveGameUnit *unit, const Fixture *fix)
|
||||
return g_strdup(buf);
|
||||
}
|
||||
|
||||
/** Allocate memory for the token array and fill some tokens
|
||||
at the beginning of the live game that don't change later. */
|
||||
void
|
||||
lg_commentary_initialize(const Fixture *fix)
|
||||
{
|
||||
gint i;
|
||||
gchar buf[SMALL];
|
||||
|
||||
token_rep = (gchar**)g_malloc(sizeof(gchar*) * lg_tokens.list->len);
|
||||
|
||||
for(i=0;i<lg_tokens.list->len;i++)
|
||||
token_rep[i] = NULL;
|
||||
|
||||
token_rep[option_int("string_lg_commentary_token_team_home", &lg_tokens)] =
|
||||
g_strdup(fix->teams[0]->name->str);
|
||||
token_rep[option_int("string_lg_commentary_token_team_away", &lg_tokens)] =
|
||||
g_strdup(fix->teams[1]->name->str);
|
||||
|
||||
if(fix->teams[0]->clid < ID_CUP_START)
|
||||
token_rep[option_int("string_lg_commentary_token_team_layer0", &lg_tokens)] =
|
||||
misc_int_to_char(league_from_clid(fix->teams[0]->clid)->layer);
|
||||
if(fix->teams[1]->clid < ID_CUP_START)
|
||||
token_rep[option_int("string_lg_commentary_token_team_layer1", &lg_tokens)] =
|
||||
misc_int_to_char(league_from_clid(fix->teams[1]->clid)->layer);
|
||||
|
||||
token_rep[option_int("string_lg_commentary_token_league_cup_name", &lg_tokens)] =
|
||||
g_strdup(league_cup_get_name_string(fix->clid));
|
||||
|
||||
if(fix->clid >= ID_CUP_START)
|
||||
{
|
||||
cup_get_round_name(cup_from_clid(fix->clid), fix->round, buf);
|
||||
token_rep[option_int("string_lg_commentary_token_cup_round_name", &lg_tokens)] =
|
||||
g_strdup(buf);
|
||||
}
|
||||
|
||||
misc_print_grouped_int(fix->attendance, buf);
|
||||
token_rep[option_int("string_lg_commentary_token_attendance", &lg_tokens)] =
|
||||
g_strdup(buf);
|
||||
|
||||
token_rep[option_int("string_lg_commentary_token_yellow_limit", &lg_tokens)] =
|
||||
misc_int_to_char(league_cup_get_yellow_red(fix->clid));
|
||||
}
|
||||
|
||||
/** Free the memory occupied by the tokens array and the permanent tokens. */
|
||||
void
|
||||
lg_commentary_post_match(void)
|
||||
{
|
||||
g_free(token_rep[option_int("string_lg_commentary_token_team_home", &lg_tokens)]);
|
||||
g_free(token_rep[option_int("string_lg_commentary_token_team_away", &lg_tokens)]);
|
||||
g_free(token_rep[option_int("string_lg_commentary_token_attendance", &lg_tokens)]);
|
||||
g_free(token_rep[option_int("string_lg_commentary_token_league_cup_name", &lg_tokens)]);
|
||||
g_free(token_rep[option_int("string_lg_commentary_token_cup_round_name", &lg_tokens)]);
|
||||
g_free(token_rep[option_int("string_lg_commentary_token_yellow_limit", &lg_tokens)]);
|
||||
g_free(token_rep[option_int("string_lg_commentary_token_team_layer0", &lg_tokens)]);
|
||||
g_free(token_rep[option_int("string_lg_commentary_token_team_layer1", &lg_tokens)]);
|
||||
|
||||
g_free(token_rep);
|
||||
}
|
||||
|
||||
/** Load the appropriate commentary file by evaluating
|
||||
the language option. */
|
||||
void
|
||||
|
@ -15,6 +15,9 @@ lg_commentary_initialize(const Fixture *fix);
|
||||
gboolean
|
||||
lg_commentary_check_commentary(const LGCommentary *commentary, gchar *dest);
|
||||
|
||||
gboolean
|
||||
query_lg_commentary_is_repetition(gint id);
|
||||
|
||||
gboolean
|
||||
lg_commentary_replace_tokens(gchar *commentary_text);
|
||||
|
||||
|
@ -15,6 +15,9 @@ typedef struct
|
||||
The higher the priority the higher the
|
||||
probability that the commentary gets picked. */
|
||||
gint priority;
|
||||
/** An id to keep track of already used commentaries in the
|
||||
live game (so as not to use the same one too frequently). */
|
||||
gint id;
|
||||
} LGCommentary;
|
||||
|
||||
#endif
|
||||
|
@ -538,6 +538,8 @@ live_game_event_scoring_chance(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
last_unit.event.team = last_unit.possession;
|
||||
|
||||
if(uni(unis->len - 2).event.player != -1 &&
|
||||
math_rnd(0, 1) < const_float("float_live_game_player_in_poss_shoots") &&
|
||||
query_player_id_in_team(uni(unis->len - 2).event.player,
|
||||
@ -741,10 +743,10 @@ live_game_event_general_get_players(void)
|
||||
|
||||
if(type == LIVE_GAME_EVENT_LOST_POSSESSION)
|
||||
{
|
||||
*pl1 = game_get_player(tm[last_unit.possession],
|
||||
last_unit.area, 0, *pl1,
|
||||
TRUE);
|
||||
*pl2 = old_pl1;
|
||||
*pl1 = game_get_player(tm[last_unit.possession],
|
||||
last_unit.area, 0, *pl2,
|
||||
TRUE);
|
||||
}
|
||||
else if(type != LIVE_GAME_EVENT_GENERAL)
|
||||
{
|
||||
|
@ -132,7 +132,8 @@ typedef struct
|
||||
gint team, player, player2;
|
||||
/** The commentary for the event. */
|
||||
GString *commentary;
|
||||
|
||||
/** Id of the commentary. */
|
||||
gint commentary_id;
|
||||
} LiveGameEvent;
|
||||
|
||||
/** A struct representing a fraction of a live game. */
|
||||
|
@ -134,6 +134,8 @@ misc2_callback_contract_offer(void)
|
||||
gint value = 0;
|
||||
Player *pl = (Player*)statp;
|
||||
|
||||
gtk_widget_set_sensitive(lookup_widget(window.contract, "button_contract_cancel"), FALSE);
|
||||
|
||||
for(i=0;i<4;i++)
|
||||
{
|
||||
sprintf(buf, "radiobutton_contract%d", i + 1);
|
||||
|
@ -214,12 +214,23 @@ on_button_contract_offer_clicked (GtkButton *button,
|
||||
misc2_callback_contract_offer();
|
||||
}
|
||||
|
||||
void
|
||||
on_button_contract_cancel_clicked (GtkButton *button,
|
||||
gpointer user_data)
|
||||
{
|
||||
window_destroy(&window.contract, FALSE);
|
||||
}
|
||||
|
||||
|
||||
gboolean
|
||||
on_window_contract_delete_event (GtkWidget *widget,
|
||||
GdkEvent *event,
|
||||
gpointer user_data)
|
||||
{
|
||||
|
||||
if(GTK_WIDGET_IS_SENSITIVE(lookup_widget(window.contract, "button_contract_cancel")))
|
||||
window_destroy(&window.contract, FALSE);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -451,4 +462,3 @@ on_button_transfer_later_clicked (GtkButton *button,
|
||||
{
|
||||
window_destroy(&window.transfer_dialog, FALSE);
|
||||
}
|
||||
|
||||
|
@ -150,3 +150,7 @@ void
|
||||
on_button_transfer_later_clicked (GtkButton *button,
|
||||
gpointer user_data);
|
||||
#endif
|
||||
|
||||
void
|
||||
on_button_contract_cancel_clicked (GtkButton *button,
|
||||
gpointer user_data);
|
||||
|
@ -576,6 +576,7 @@ create_window_contract (void)
|
||||
GtkWidget *hbox20;
|
||||
GtkWidget *image10;
|
||||
GtkWidget *label44;
|
||||
GtkWidget *button_contract_cancel;
|
||||
|
||||
window_contract = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (window_contract), 5);
|
||||
@ -691,12 +692,19 @@ create_window_contract (void)
|
||||
gtk_widget_show (label44);
|
||||
gtk_box_pack_start (GTK_BOX (hbox20), label44, FALSE, FALSE, 0);
|
||||
|
||||
button_contract_cancel = gtk_button_new_from_stock ("gtk-cancel");
|
||||
gtk_widget_show (button_contract_cancel);
|
||||
gtk_box_pack_start (GTK_BOX (hbox19), button_contract_cancel, FALSE, FALSE, 0);
|
||||
|
||||
g_signal_connect ((gpointer) window_contract, "delete_event",
|
||||
G_CALLBACK (on_window_contract_delete_event),
|
||||
NULL);
|
||||
g_signal_connect ((gpointer) button_contract_offer, "clicked",
|
||||
G_CALLBACK (on_button_contract_offer_clicked),
|
||||
NULL);
|
||||
g_signal_connect ((gpointer) button_contract_cancel, "clicked",
|
||||
G_CALLBACK (on_button_contract_cancel_clicked),
|
||||
NULL);
|
||||
|
||||
/* Store pointers to all widgets, for use by lookup_widget(). */
|
||||
GLADE_HOOKUP_OBJECT_NO_REF (window_contract, window_contract, "window_contract");
|
||||
@ -719,6 +727,7 @@ create_window_contract (void)
|
||||
GLADE_HOOKUP_OBJECT (window_contract, hbox20, "hbox20");
|
||||
GLADE_HOOKUP_OBJECT (window_contract, image10, "image10");
|
||||
GLADE_HOOKUP_OBJECT (window_contract, label44, "label44");
|
||||
GLADE_HOOKUP_OBJECT (window_contract, button_contract_cancel, "button_contract_cancel");
|
||||
|
||||
return window_contract;
|
||||
}
|
||||
|
@ -213,6 +213,7 @@ xml_lg_commentary_read_text (GMarkupParseContext *context,
|
||||
commentary.text = g_string_new(buf);
|
||||
commentary.condition = condition;
|
||||
commentary.priority = MAX(1, priority);
|
||||
commentary.id = lg_commentary_id_new;
|
||||
g_array_append_val(lg_commentary[commentary_idx], commentary);
|
||||
}
|
||||
}
|
||||
|
@ -767,3 +767,7 @@ int_sponsor_without_weeks_upper 6
|
||||
# to continue engagement if the team is completely
|
||||
# unsuccessful
|
||||
float_sponsor_continue_prob 1000
|
||||
|
||||
# how many live game units we check backwards to avoid
|
||||
# having the same commentary text too often
|
||||
int_lg_commentary_check_backwards 12
|
||||
|
@ -21,10 +21,11 @@
|
||||
<commentary>Schöner Pass von _P1_ eröffnet den Raum vor _P0_</commentary>
|
||||
<commentary>Guter Querpass auf die rechte Seite</commentary>
|
||||
<commentary>Ein weiterer Flankenlauf</commentary>
|
||||
<commentary cond="_MI_ > 18 and _POSS0_ > 58 or _POSS1_ > 58 and _GOALS[_POSS1_ > _POSS0_]_ = 0">_T[_POSS1_ G _POSS0_]_ beherrscht das Spiel, zeigt aber bislang brotlose Kunst</commentary>
|
||||
<commentary cond="_MI_ > 18 and _POSS0_ > 58 or _POSS1_ > 58 and _GOALS[_POSS1_ > _POSS0_]_ > _GOALS[_POSS1_ L _POSS0_]_">_T[_POSS1_ > _POSS0_]_ beherrscht das Spiel klar</commentary>
|
||||
<commentary cond="_MI_ > 18 and _POSS0_ > 58 or _POSS1_ > 58 and _GOALS[_POSS1_ > _POSS0_]_ = 0">_T[_POSS1_ G _POSS0_]_ ist eindeutig unterlegen, das _RE_ ist schmeichelhaft</commentary>
|
||||
<commentary cond="_MI_ > 18 and _POSS0_ > 58 or _POSS1_ > 58 and _GOALS[_POSS1_ > _POSS0_]_ > _GOALS[_POSS1_ L _POSS0_]_ and _GD_ < 3">_T[_POSS1_ L _POSS0_]_ kann mit dem _RE_ noch zufrieden sein</commentary>
|
||||
<commentary cond="_MI_ > 18 and _POSS[_POSS1_ > _POSS0_]_ > 58 and _GOALS[_POSS1_ > _POSS0_]_ = 0">_T[_POSS1_ G _POSS0_]_ beherrscht das Spiel, zeigt aber bislang brotlose Kunst</commentary>
|
||||
<commentary cond="_MI_ > 18 and _POSS[_POSS1_ > _POSS0_]_ > 58 and _GOALS[_POSS1_ > _POSS0_]_ > _GOALS[_POSS1_ L _POSS0_]_">_T[_POSS1_ G _POSS0_]_ beherrscht das Spiel klar</commentary>
|
||||
<commentary cond="_MI_ > 18 and _POSS[_POSS1_ > _POSS0_]_ > 58 and _GOALS[_POSS1_ > _POSS0_]_ > _GOALS[_POSS1_ L _POSS0_]_">_T[_POSS1_ G _POSS0_]_ ist überlegen</commentary>
|
||||
<commentary cond="_MI_ > 18 and _POSS[_POSS1_ > _POSS0_]_ > 58 and _GD_ < 2">_T[_POSS1_ L _POSS0_]_ ist eindeutig unterlegen, das _RE_ ist schmeichelhaft</commentary>
|
||||
<commentary cond="_MI_ > 18 and _POSS[_POSS1_ > _POSS0_]_ > 58 and _GOALS[_POSS1_ > _POSS0_]_ > _GOALS[_POSS1_ L _POSS0_]_ and _GD_ < 3">_T[_POSS1_ L _POSS0_]_ kann mit dem _RE_ noch zufrieden sein</commentary>
|
||||
<commentary cond="_MT_ + _MI_ > 100 and _TIME_ = 1 and _MR_ < 15">Die Verlängerung ist greifbar nahe</commentary>
|
||||
<commentary cond="_GD_ > 0 and _GD_ < 3 and _MT_ < 20">_TL_ sollte sich jetzt langsam mal anstrengen </commentary>
|
||||
<commentary cond="_GD_ > 0 and _GD_ < 3 and _MT_ < 20">_TL_ sollte einen Zahn zulegen</commentary>
|
||||
@ -46,16 +47,18 @@
|
||||
<commentary cond="_GD_ > 2">_TW_ beherrscht _TL_ nach Belieben</commentary>
|
||||
<commentary cond="_GD_ > 2">Keine Chance für _TL_ in diesem Spiel</commentary>
|
||||
<commentary cond="_GD_ > 2 and _MT_ < 30">Das wird wohl nix mehr für_TL_</commentary>
|
||||
<commentary cond="_G0_ + _G1_ > 2 and _MI_ < 20">Das könnte ein sehr torreiches Spiel werden heute</commentary>
|
||||
<commentary cond="_GOALS0_ + _GOALS1_ > 2 and _MI_ < 20">Das könnte ein sehr torreiches Spiel werden heute</commentary>
|
||||
<commentary cond="_GD_ = 1 and _MT_ < 10">_TL_ kann den Ausgleich noch schaffen</commentary>
|
||||
<commentary cond="_REDS0_ = _REDS1_ and _TAVSKILLDIFF_ > 7 and _G[_TAVSKILL1_ > _TAVSKILL0_]_ < _G[_TAVSKILL1_ < _TAVSKILL0_]_">Was für eine Überraschung, das vermeintlich unterlegene Team führt</commentary>
|
||||
<commentary cond="_REDS0_ = _REDS1_ and _TAVSKILLDIFF_ > 5 and _G[_TAVSKILL1_ > _TAVSKILL0_]_ > _G[_TAVSKILL1_ < _TAVSKILL0_]_">Der Favorit führt; so ein Spielverlauf war zu erwarten</commentary>
|
||||
<commentary cond="_G0_ + _G1_ = 0 and _MI_ > 40 and _MI_ < 60">Nach _MI_ Minuten ist immer noch kein Tor gefallen</commentary>
|
||||
<commentary cond="_G0_ + _G1_ = 0 and _MI_ > 70">Was für ein enttäuschendes Spiel, immer noch _RE_</commentary>
|
||||
<commentary cond="_GOALS0_ + _GOALS1_ = 0 and _MI_ > 40 and _MI_ < 60">Nach _MI_ Minuten ist immer noch kein Tor gefallen</commentary>
|
||||
<commentary cond="_GOALS0_ + _GOALS1_ = 0 and _MI_ > 70">Was für ein enttäuschendes Spiel, immer noch _RE_</commentary>
|
||||
<commentary cond="_REDS0_ = _REDS1_ and _TAVSKILLDIFF_ > 7 and _G[_TAVSKILL1_ > _TAVSKILL0_]_ < _G[_TAVSKILL1_ < _TAVSKILL0_]_ and _MT_ < 15">_TW_ ist nur noch _MT_ Minuten von einer faustdicken Überraschung entfernt</commentary>
|
||||
<commentary cond="_G0_ + _G1_ = 0 and _MT_ < 10">Also wirklich, wollen uns die beiden Teams wirklich mit einem _RE_ abspeisen?</commentary>
|
||||
<commentary cond="_G0_ + _G1_ = 0 and _MT_ < 15">Jetzt sollte aber wirklich mal ein Tor her</commentary>
|
||||
<commentary cond="_G0_ + _G1_ = 0 and _MT_ < 5">Nein, bitte nicht wieder so ein _RE_</commentary>
|
||||
<commentary cond="_GOALS0_ + _GOALS1_ = 0 and _MT_ < 10">Also wirklich, wollen uns die beiden Teams wirklich mit einem _RE_ abspeisen?</commentary>
|
||||
<commentary cond="_GOALS0_ + _GOALS1_ = 0 and _MT_ < 15">Jetzt sollte aber wirklich mal ein Tor her</commentary>
|
||||
<commentary cond="_GOALS0_ + _GOALS1_ = 0 and _MT_ < 5">Nein, bitte nicht wieder so ein _RE_</commentary>
|
||||
<commentary cond="_GOALS0_ + _GOALS1_ = 0 and _MT_ < 30">_MI_ Minuten gespielt und immer noch _RE_</commentary>
|
||||
<commentary cond="_GOALS0_ + _GOALS1_ = 0 and _MT_ < 50">Ein mageres _RE_ nach _MI_ Minuten</commentary>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
@ -200,8 +203,8 @@
|
||||
<commentary>Verlängerung: jetzt geht's um Willenskraft und Entschlossenheit</commentary>
|
||||
<commentary>Es steht immer noch _RE_: Verlängerung</commentary>
|
||||
<commentary>Jetzt geht's um alles, die Verlängerung beginnt</commentary>
|
||||
<commentary pri="5" cond="_G0_ + _GA_ > 4">Nach torreichen _MI_ Minuten steht noch kein Sieger fest</commentary>
|
||||
<commentary pri="5" cond="_G0_ + _GA_ < 3">Nach einem schwachen Spiel erwartet uns die Verlängerung</commentary>
|
||||
<commentary pri="5" cond="_GOALS0_ + _GA_ > 4">Nach torreichen _MI_ Minuten steht noch kein Sieger fest</commentary>
|
||||
<commentary pri="5" cond="_GOALS0_ + _GA_ < 3">Nach einem schwachen Spiel erwartet uns die Verlängerung</commentary>
|
||||
<commentary pri="5" cond="_POSS0_ > 58 or _POSS1_ > 58">Trotz _POSS[_POSS1_ G _POSS0_]_% Ballbesitz konnte _T[_POSS1_ G _POSS0_]_ das Spiel nicht in _MI_ Minuten klarmachen</commentary>
|
||||
<commentary pri="5" cond="_SHOTS0_ != _SHOTS1_">Trotz _SHOTS[_SHOTS1_ G _SHOTS0_]_ Schüssen konnte _T[_SHOTS1_ G _SHOTS0_]_ den Sack heute nicht zumachen</commentary>
|
||||
<commentary pri="5" cond="_TLAYER0_ != _TLAYER1_">So eine Überraschung, jetzt kommt's zur Verlängerung</commentary>
|
||||
@ -232,9 +235,10 @@
|
||||
<commentary pri="5" cond="_REDS0_ = _REDS1_ and _TAVSKILLDIFF_ > 5 and _TWN_ = [_TAVSKILL1_ > _TAVSKILL0_]">_TW_ gewinnt erwartungsgemäß</commentary>
|
||||
<commentary pri="10" cond="_GD_ > 3 and _TLAYER_TWN__ >= _TLAYER_TLN__">Oje, was für eine Blamage für _TL_</commentary>
|
||||
<commentary pri="5" cond="_GD_ = 1">Ein knapper Sieg für _TW_</commentary>
|
||||
<commentary pri="5" cond="_GD_ = 1">Das Spiel endet mit einem hauchdünnen _RE_</commentary>
|
||||
<commentary cond="_GD_ > 1">Ein letztlich ungefährdeter Sieg für _TW_</commentary>
|
||||
<commentary pri="10" cond="_POSS0_ > 56 or _POSS1_ > 56 and _TWN_ = [_POSS1_ > _POSS0_]">Mit _POSS[_POSS1_ G _POSS0_]_% Ballbesitz hat _TW_ dieses Spiel beherrscht und gewinnt verdient</commentary>
|
||||
<commentary pri="10" cond="_POSS0_ > 56 or _POSS1_ > 56 and _TLN_ = [_POSS1_ > _POSS0_]">_POSS[_POSS1_ G _POSS0_]_% Ballbesitz haben _TL_ nicht geholfen, sie verlieren _RE_</commentary>
|
||||
<commentary pri="10" cond="_POSS[_POSS1_ > _POSS0_]_ > 56 and _TWN_ = [_POSS1_ > _POSS0_]">Mit _POSS[_POSS1_ G _POSS0_]_% Ballbesitz hat _TW_ dieses Spiel beherrscht und gewinnt verdient</commentary>
|
||||
<commentary pri="10" cond="_POSS[_POSS1_ > _POSS0_]_ and _TLN_ = [_POSS1_ > _POSS0_]">_POSS[_POSS1_ G _POSS0_]_% Ballbesitz haben _TL_ nicht geholfen, sie verlieren _RE_</commentary>
|
||||
<commentary pri="5" cond="_SHOTS0_ != _SHOTS1_ and _TWN_ = [_SHOTS1_ > _SHOTS0_]">_TW_ hat sich einfach mehr Chancen herausgearbeitet heute</commentary>
|
||||
<commentary pri="5" cond="_SHOTS0_ != _SHOTS1_ and _TLN_ = [_SHOTS1_ > _SHOTS0_]">_TL_ hatte mehr Chancen, aber die Abschlussschwäche hat einen Sieg verhindert</commentary>
|
||||
<commentary pri="5" cond="_GOALS1_ > _GOALS0_">Ein schöner Auswärtssieg für _TW_</commentary>
|
||||
@ -242,6 +246,10 @@
|
||||
<commentary pri="5" cond="_GOALS1_ < _GOALS0_">Ein Heimsieg für _TW_</commentary>
|
||||
<commentary pri="5" cond="_GOALS1_ > _GOALS0_">_TW_ gewinnt auswärts</commentary>
|
||||
<commentary pri="5" cond="_GOALS1_ < _GOALS0_">_TL_ verliert das Auswärtsspiel</commentary>
|
||||
<commentary pri="10" cond="_GOALS0_ + _GOALS1_ = 0">_RE_, wie ärgerlich</commentary>
|
||||
<commentary pri="10" cond="_GOALS0_ + _GOALS1_ = 0">Nach so einem _RE_ will man am liebsten sein Geld zurück</commentary>
|
||||
<commentary pri="10" cond="_GOALS0_ + _GOALS1_ = 0">Das Spiel endet mit einem mageren _RE_ </commentary>
|
||||
<commentary pri="10" cond="_GOALS0_ + _GOALS1_ = 0">Die Zuschauer sind eher unzufrieden mit dem _RE_</commentary>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
@ -258,12 +266,12 @@
|
||||
<commentary cond="_GD_ > 2">_TL_ wurde regelrecht auseinandergenommen in der ersten Hälfte</commentary>
|
||||
<commentary cond="_GOALS0_ + _GOALS1_ = 1">In der zweiten Hälfte können schon ein paar Törchen mehr kommen</commentary>
|
||||
<commentary cond="_GD_ = 0 and _GOALS1_ > 0">Ein enges Spiel in der ersten Hälfte</commentary>
|
||||
<commentary cond="_SHOTS0_ > _SHOTS1_ + 3 or _SHOTS1_ > _SHOTS0_ + 3 and _TWN_ = [_SHOTS1_ > _SHOTS0_]">_TW_ beherrscht das Spiel und führt verdient _RE_ zur Halbzeit</commentary>
|
||||
<commentary cond="_SHOTS0_ > _SHOTS1_ + 3 or _SHOTS1_ > _SHOTS0_ + 3 and _GD_ = 0">_T[_SHOTS1_ > _SHOTS0_]_ beherrscht das Spiel, kann aber nur ein _RE_ vorweisen bislang</commentary>
|
||||
<commentary cond="_SHOTS0_ > _SHOTS1_ + 3 or _SHOTS1_ > _SHOTS0_ + 3 and _TWN_ = [_SHOTS1_ < _SHOTS0_]">_T[_SHOTS1_ > _SHOTS0_]_ beherrscht das Spiel, aber _TW_ nutzt seine Chancen einfach besser</commentary>
|
||||
<commentary cond="_POSS0_ > 58 or _POSS1_ > 58 and _GD_ = 0">_T[_POSS1_ G _POSS0_]_ beherrscht das Spiel mit _POSS[_POSS1_ > _POSS0_]_ % Ballbesitz, dennoch steht es _RE_</commentary>
|
||||
<commentary cond="_POSS0_ > 58 or _POSS1_ > 58 and [_POSS1_ > _POSS0_] = _TWN_ ">_TW_ beherrscht das Spiel klar und führt _RE_</commentary>
|
||||
<commentary cond="_POSS0_ > 58 or _POSS1_ > 58 and [_POSS1_ > _POSS0_] = _TLN_ ">_TL_ hat nur _POSS[_POSS1_ L _POSS0_]_ % Ballbesitz, führt aber _RE_ zur Halbzeit</commentary>
|
||||
<commentary cond="_SHOTS[_SHOTS1_ > _SHOTS0_]_ > _SHOTS[_SHOTS1_ < _SHOTS0_]_ + 3 and _TWN_ = [_SHOTS1_ > _SHOTS0_]">_TW_ beherrscht das Spiel und führt verdient _RE_ zur Halbzeit</commentary>
|
||||
<commentary cond="_SHOTS[_SHOTS1_ > _SHOTS0_]_ > _SHOTS[_SHOTS1_ < _SHOTS0_]_ + 3 and _GD_ = 0">_T[_SHOTS1_ > _SHOTS0_]_ beherrscht das Spiel, kann aber nur ein _RE_ vorweisen bislang</commentary>
|
||||
<commentary cond="_SHOTS[_SHOTS1_ > _SHOTS0_]_ > _SHOTS[_SHOTS1_ < _SHOTS0_]_ + 3 and _TWN_ = [_SHOTS1_ < _SHOTS0_]">_T[_SHOTS1_ > _SHOTS0_]_ beherrscht das Spiel, aber _TW_ nutzt seine Chancen einfach besser</commentary>
|
||||
<commentary cond="_POSS[_POSS1_ > _POSS0_]_ > 58 and _GD_ = 0">_T[_POSS1_ G _POSS0_]_ beherrscht das Spiel mit _POSS[_POSS1_ > _POSS0_]_ % Ballbesitz, dennoch steht es _RE_</commentary>
|
||||
<commentary cond="_POSS[_POSS1_ > _POSS0_]_ > 58 and [_POSS1_ > _POSS0_] = _TWN_ ">_TW_ beherrscht das Spiel klar und führt _RE_</commentary>
|
||||
<commentary cond="_POSS[_POSS1_ > _POSS0_]_ > 58 and [_POSS1_ > _POSS0_] = _TLN_ ">_TW_ hat nur _POSS[_POSS1_ L _POSS0_]_ % Ballbesitz, führt aber _RE_ zur Halbzeit</commentary>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
@ -335,25 +343,38 @@
|
||||
<commentary>Freistoß: _P0_ schießt aus großer Entfernung</commentary>
|
||||
<commentary>Freistoß: _P0_ schlenzt den Ball über die Mauer</commentary>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<name>lost_possession</name>
|
||||
<commentary>_P1_ ersprintet den Ball aber _P0_ grätscht sauber</commentary>
|
||||
<commentary>_P1_ ersprintet den Ball, aber _P0_ grätscht sauber</commentary>
|
||||
<commentary>_P0_ nimmt _P1_ den Ball mit einer sauberen Grätsche ab</commentary>
|
||||
<commentary>_P1_ kontrolliert den Ball schlecht, _P0_ kann ihn erobern</commentary>
|
||||
<commentary>_P0_ erobert mit gutem Körpereinsatz den Ball</commentary>
|
||||
<commentary>_P0_ erobert den Ball</commentary>
|
||||
<commentary>_P1_ rutscht der Ball über den Spann, _P0_ bekommt ihn</commentary>
|
||||
<commentary>_P1_ springt der Ball weg</commentary>
|
||||
<commentary>_P1_ stoppt den Ball unsauber, er landet bei _P0_</commentary>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<name>own_goal</name>
|
||||
<commentary>Rückpass von _P0_... oh nein, der Torwart verfehlt ihn! Eigentor!</commentary>
|
||||
<commentary>Dieses Mißverständnis wurde mit einem Tor bezahlt</commentary>
|
||||
<commentary>Oh nein, der Ball springt gegen _P0_ und ins Netz</commentary>
|
||||
<commentary>Eigentor durch _P0_, es steht damit _RE_</commentary>
|
||||
<commentary>Ein Billiardball im 5-Meterraum trifft _P0_ und rollt über die Linie</commentary>
|
||||
<commentary cond="_GOALS[1 - _TT_]_ = _GOALS_TT__ - 1">Eigentor! _T[1 - _TT_]_ geht in Führung!</commentary>
|
||||
<commentary cond="_GOALS[1 - _TT_]_ = _GOALS_TT__ + 1">Durch ein Eigentor von _P0_ geht _T[1 - _TT_]_ in Führung!</commentary>
|
||||
<commentary cond="_GOALS[1 - _TT_]_ = _GOALS_TT__ - 1">_P0_ schießt ein Eigentor, _T[1 - _TT_]_ ist wieder dran!</commentary>
|
||||
<commentary cond="_GOALS[1 - _TT_]_ < _GOALS_TT__ - 1">_P0_ schießt ein Eigentor, aber ob das _T[1 - _TT_]_ noch hilft?</commentary>
|
||||
<commentary cond="_GD_ = 0">Das Eigentor von _P0_ bringt _T[1 - _TT_]_ den Ausgleich</commentary>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<name>scoring_chance</name>
|
||||
<commentary>_P0_ schießt ins lange Eck</commentary>
|
||||
<commentary>_P0_ lässt zwei Verteiger stehen und versetzt den Torwart</commentary>
|
||||
<commentary>_P0_ verspringt der Ball aber er sein Schuss fliegt Richtung Tor </commentary>
|
||||
<commentary>_P0_ verspringt der Ball aber, sein Schuss fliegt Richtung Tor </commentary>
|
||||
<commentary>_P0_ zieht zur Mitte und schießt</commentary>
|
||||
<commentary>_P1_ versucht es einfach aus 25 Metern</commentary>
|
||||
<commentary>_P0_ dribbelt im 16er, dreht sich und schießt</commentary>
|
||||
@ -364,47 +385,84 @@
|
||||
<commentary>_P0_ dreht sich um die eigene Achse und schießt</commentary>
|
||||
<commentary>Fallrückzieher von _P0_!</commentary>
|
||||
<commentary>_P0_ nimmt Fahrt auf und schießt!</commentary>
|
||||
<commentary cond="_GD_ = 0">_P0_ hat die Chance zum Führungstreffer</commentary>
|
||||
<commentary cond="_GD_ > 0 and _GD_ < 3 and _TT_ = _TWN_">_P0_ kann die Führung ausbauen</commentary>
|
||||
<commentary cond="_GD_ > 0 and _TT_ = _TWN_">_P0_ kann auf [_GOALS_TT__ + 1] : _GOALS[1 - _TT_]_ erhöhen</commentary>
|
||||
<commentary cond="_GD_ = 1 and _TT_ = _TLN_">_P0_ hat den Ausgleich auf dem Fuß</commentary>
|
||||
<commentary cond="_GD_ = 2 and _TT_ = _TLN_">_P0_ kann den Anschlusstreffer erzielen</commentary>
|
||||
<commentary cond="_MT_ < 5">_P0_ hat vielleicht die letzte Chance des Spiels</commentary>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<name>temp_injury</name>
|
||||
<commentary>_P0_ ist leicht angeschlagen, kann aber weitermachen</commentary>
|
||||
<commentary>_P0_ hat eine Platzwunde, aber sie wird getackert und er kann weiterspielen</commentary>
|
||||
<commentary>_P0_ hat einen Krampf, spielt weiter</commentary>
|
||||
<commentary>Leichte Blessur bei _P0_</commentary>
|
||||
<commentary>_P0_ humpelt etwas, macht aber weiter</commentary>
|
||||
<commentary>_P0_ hält sich den Rücken, aber nach einer kurzen Pause spielt er weiter</commentary>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<name>injury</name>
|
||||
<commentary>_P0_ scheint eine schwere Verletzung davongetragen zu haben</commentary>
|
||||
<commentary>_P0_ ist verletzt</commentary>
|
||||
<commentary>_P0_ muss ausgewechselt werden</commentary>
|
||||
<commentary>_P0_ kann nicht weiterspielen, muss raus</commentary>
|
||||
<commentary>_P0_ muss mit einer Verletzung raus</commentary>
|
||||
<commentary>_P0_ wird wohl das Feld verlassen müssen, scheint eine Knöchelverletzung zu sein</commentary>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<name>penalty</name>
|
||||
<commentary>_P0_ hat schon mal einen Elfer verschossen, hoffentlich trifft er diesmal</commentary>
|
||||
<commentary>_P0_ darf an den Elfmeterpunkt</commentary>
|
||||
<commentary>_P0_ schießt den Elfer</commentary>
|
||||
<commentary>_P0_ versucht sich aus 11 Metern</commentary>
|
||||
<commentary>_P0_ schnappt sich den Ball und schießt den Elfer</commentary>
|
||||
<commentary>_P0_ übernimmt die Verantwortung und tritt den Elfmeter</commentary>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<name>substitution</name>
|
||||
<commentary>_P1_ verlässt unter großem Applaus das Spielfeld, _P0_ ersetzt ihn</commentary>
|
||||
<commentary>_T_TT__ wechselt aus, _P0_ kommt für _P1_</commentary>
|
||||
<commentary>_P1_ wird vom Platz gebuht und durch _P0_ ersetzt</commentary>
|
||||
<commentary>_P0_ ersetzt _P1_</commentary>
|
||||
<commentary>_P0_ kommt für _P1_</commentary>
|
||||
<commentary>_P1_ geht raus, _P0_ darf ran</commentary>
|
||||
<commentary cond="_GOALS_TT__ = 0 and _INJ_TT__ = 0">_P1_ wird vom Platz gebuht und durch _P0_ ersetzt</commentary>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<name>send_off</name>
|
||||
<commentary>_P0_ wurde vom Platz gestellt</commentary>
|
||||
<commentary>_P0_ wird vorzeitig zum Duschen geschickt</commentary>
|
||||
<commentary>Der Referee schickt _P0_ zum Duschen</commentary>
|
||||
<commentary>Das Spiel ist vorbei für _P0_</commentary>
|
||||
<commentary>Das reicht dem Referee, _P0_ muss raus</commentary>
|
||||
<commentary>_P0_ muss vom Platz</commentary>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<name>boost_change</name>
|
||||
<commentary>_T_TT__ hat den Boost auf _EX_ gestellt</commentary>
|
||||
<commentary>_T_TT__ versucht es mit Boost _EX_</commentary>
|
||||
<commentary>Boost ist jetzt _EX_ für _T_TT__</commentary>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<name>structure_change</name>
|
||||
<commentary>_T_TT__ hat das System auf _EX_ umgestellt</commentary>
|
||||
<commentary>_T_TT__ stellt um auf _EX_</commentary>
|
||||
<commentary>_T_TT__ spielt ab sofort _EX_</commentary>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<name>style_change</name>
|
||||
<commentary>_T_TT__ hat den Spielstil auf _EX_ umgestellt</commentary>
|
||||
<commentary>_T_TT__s Stil ist _EX_ jetzt</commentary>
|
||||
<commentary>_T_TT__s stellt auf _EX_ um</commentary>
|
||||
<commentary>_T_TT__s probiert es mit _EX_</commentary>
|
||||
</event>
|
||||
|
||||
</lg_commentary>
|
||||
|
Loading…
x
Reference in New Issue
Block a user