Date: Saturday November 4, 2000 @ 17:49
Author: ahn
Update of /home/netrek/cvsroot/Vanilla/robots
In directory swashbuckler.fortress.real-time.com:/var/tmp/cvs-serv5131
Modified Files:
inl.c inlcomm.c
Log Message:
* robots/inl*.c: Fix INL robot core dump. Fix bugs in continuous
scoring.
****************************************
Index: Vanilla/robots/inl.c
diff -u Vanilla/robots/inl.c:1.33 Vanilla/robots/inl.c:1.34
--- Vanilla/robots/inl.c:1.33 Tue Oct 31 23:51:43 2000
+++ Vanilla/robots/inl.c Sat Nov 4 17:49:40 2000
@@ -1,7 +1,7 @@
-/* $Id: inl.c,v 1.33 2000/11/01 05:51:43 ahn Exp $ */
+/* $Id: inl.c,v 1.34 2000/11/04 23:49:40 ahn Exp $ */
#ifndef lint
-static char vcid[] = "$Id: inl.c,v 1.33 2000/11/01 05:51:43 ahn Exp $";
+static char vcid[] = "$Id: inl.c,v 1.34 2000/11/04 23:49:40 ahn Exp $";
#endif /* lint */
/*
@@ -743,6 +743,8 @@
double divisor = inl_stat.weighted_divisor;
double delta;
+ countplanets();
+
/* NORMAL scoring mode; OR, continuous scoring and in OT.
Use absolute planet count. */
if ((inl_stat.score_mode == 0) || (inl_stat.flags & S_OVERTIME)) {
@@ -790,18 +792,17 @@
int game_over = 0;
int win_cond;
- countplanets();
if ((win_cond = check_winner()) != 0)
{
pmessage(0, MALL, inl_from, "---------- Game Over ----------");
- pmessage(0, MALL, inl_from, "Result: %i - %i - %i",
+ pmessage(0, MALL, inl_from, "Planet count: %i - %i - %i",
inl_teams[HOME].planets, inl_teams[AWAY].planets,
(20 - inl_teams[HOME].planets - inl_teams[AWAY].planets));
/* need to write this to the inl_log because the pmessages don't
get flushed out to the log before the close */
- fprintf(inl_log, "----------- Game Over ------------\n");
- fprintf(inl_log, "Result: %i - %i - %i\n",
+ fprintf(inl_log, "---------- Game Over ---------\n");
+ fprintf(inl_log, "SCORE: Planet count: %i - %i - %i\n",
inl_teams[HOME].planets, inl_teams[AWAY].planets,
(20 - inl_teams[HOME].planets - inl_teams[AWAY].planets));
@@ -809,20 +810,20 @@
switch(win_cond) {
case 1:
- pmessage(0, MALL, inl_from, "Winning condition: planet count");
- fprintf(inl_log, "Winning condition: planet count\n");
+ pmessage(0, MALL, inl_from, "Victory by: planet count (normal scoring)");
+ fprintf(inl_log, "SCORE: Victory by planet count (normal scoring)\n");
break;
case 2:
- pmessage(0, MALL, inl_from, "Winning condition: continuous score >= 2.0");
- fprintf(inl_log, "Winning condition: continuous score >= 2.0\n");
+ pmessage(0, MALL, inl_from, "Victory by: continuous score >= 2.0");
+ fprintf(inl_log, "SCORE: Victory by: continuous score >= 2.0\n");
break;
case 3:
- pmessage(0, MALL, inl_from, "Winning condition: score < 2.0, planet count");
- fprintf(inl_log, "Winning condition: score < 2.0, planet count\n");
+ pmessage(0, MALL, inl_from, "Victory by: planet count (continuous score < 2.0)");
+ fprintf(inl_log, "SCORE: Victory by: planet count (continuous score < 2.0)\n");
break;
default:
- pmessage(0, MALL, inl_from, "Winning condition: UNKNOWN");
- fprintf(inl_log, "Winning condition: UNKNOWN\n");
+ pmessage(0, MALL, inl_from, "Victory by: UNKNOWN");
+ fprintf(inl_log, "SCORE: Victory by: UNKNOWN\n");
break;
}
@@ -834,6 +835,7 @@
inl_stat.flags &= ~(S_TOURNEY | S_COUNTDOWN);
inl_stat.flags |= S_OVERTIME;
pmessage(0, MALL, inl_from, "---------- Overtime ----------");
+ fprintf(inl_log, "---------- Overtime ---------\n");
obliterate(0,KPROVIDENCE);
inl_game.idx = 0;
@@ -841,11 +843,23 @@
/* inl_game.counts[0] = inl_stat.overtime / (PERMIN*2); */
inl_game.message = "%i %s left in overtime";
+ fprintf(inl_log, "SCORE: Planet count: %i - %i - %i\n",
+ inl_teams[HOME].planets, inl_teams[AWAY].planets,
+ (20 - inl_teams[HOME].planets - inl_teams[AWAY].planets));
+
+ announce_scores(0, MALL, inl_log);
}
else if (inl_game.end <= inl_stat.game_ticks)
{
pmessage(0, MALL, inl_from,
"------ Game ran out of time without a winner ------");
+
+ fprintf(inl_log, "---------- Game Over (TIED) ---------\n");
+ fprintf(inl_log, "SCORE: Planet count: %i - %i - %i\n",
+ inl_teams[HOME].planets, inl_teams[AWAY].planets,
+ (20 - inl_teams[HOME].planets - inl_teams[AWAY].planets));
+
+ announce_scores(0, MALL, inl_log);
game_over = 1;
}
Index: Vanilla/robots/inlcomm.c
diff -u Vanilla/robots/inlcomm.c:1.18 Vanilla/robots/inlcomm.c:1.19
--- Vanilla/robots/inlcomm.c:1.18 Tue Oct 31 23:51:43 2000
+++ Vanilla/robots/inlcomm.c Sat Nov 4 17:49:40 2000
@@ -1033,6 +1033,7 @@
void announce_scores(int who, int flag, FILE *fp) {
int win_cond;
+ char *side;
float divisor = (float) (inl_stat.game_ticks * 4);
@@ -1042,15 +1043,20 @@
if (inl_stat.weighted_divisor < 1.0)
return;
+ if (inl_stat.score_mode == 0)
+ pmessage(who, flag, addr_mess(who, flag), "Scoring mode: planet count");
+ else
+ pmessage(who, flag, addr_mess(who, flag), "Scoring mode: continuous score");
+
pmessage(who, flag, addr_mess(who, flag),
- "Score: %s vs %s %.2f - %.2f (weighted)",
+ "Continuous score: %s vs %s %.2f - %.2f (weighted)",
sides[inl_teams[0].side_index].name,
sides[inl_teams[1].side_index].name,
(float) inl_teams[0].weighted_score / inl_stat.weighted_divisor,
(float) inl_teams[1].weighted_score / inl_stat.weighted_divisor);
if (fp)
- fprintf("Score: %s vs %s %.2f - %.2f (weighted)\n",
+ fprintf(fp, "SCORE: Continuous score: %s vs %s %.2f - %.2f (weighted)\n",
sides[inl_teams[0].side_index].name,
sides[inl_teams[1].side_index].name,
(float) inl_teams[0].weighted_score / inl_stat.weighted_divisor,
@@ -1081,38 +1087,38 @@
(float) inl_teams[1].semi_score / divisor);
******/
-
-
- if ((win_cond = check_winner()) != 0) {
- char *side;
+ win_cond = check_winner();
- side = (inl_teams[0].weighted_score > inl_teams[1].weighted_score)?
- sides[inl_teams[0].side_index].name:
- sides[inl_teams[1].side_index].name;
-
- switch(win_cond) {
- case 1:
- /* ignore NORMAL scoring mode */
- break;
- case 2:
- pmessage(who, flag, addr_mess(who, flag),
- "%s is winning by score >= 2.0", side);
- if (fp)
- fprintf(fp, "%s is winning by score >= 2.0\n", side);
- break;
- case 3:
- pmessage(who, flag, addr_mess(who, flag),
- "%s is winning by score < 2.0 but planet > 11-8-1", side);
- if (fp)
- fprintf(fp, "%s is winning by score < 2.0 but planet > 11-8-1\n", side);
- break;
- }
- }
- else {
- pmessage(who, flag, addr_mess(who, flag), "Game is tied.");
- if (fp)
- fprintf(fp, "Game is tied\n");
+ side = (inl_teams[0].weighted_score > inl_teams[1].weighted_score)?
+ sides[inl_teams[0].side_index].name:
+ sides[inl_teams[1].side_index].name;
+
+ switch(win_cond) {
+ case 0:
+ if (inl_stat.score_mode) {
+ pmessage(who, flag, addr_mess(who, flag), "Game TIED.");
+
+ if (fp) fprintf(fp, "SCORE: Game TIED.\n");
+ }
+ break;
+ case 1:
+ pmessage(who, flag, addr_mess(who, flag),
+ "%s winning by planet count", side);
+ /* ignore NORMAL scoring mode */
+ break;
+ case 2:
+ pmessage(who, flag, addr_mess(who, flag),
+ "%s winning by score >= 2.0", side);
+ if (fp)
+ fprintf(fp, "SCORE: %s winning by score >= 2.0\n", side);
+ break;
+ case 3:
+ pmessage(who, flag, addr_mess(who, flag),
+ "%s winning by score < 2.0 but planet > 11-8-1", side);
+ if (fp)
+ fprintf(fp, "SCORE: %s winning by score < 2.0 but planet > 11-8-1\n", side);
+ break;
}
}