{"revert", "", com_revert, ADMIN_USER },
{"resign", "o", com_resign, ADMIN_USER },
{"say", "S", com_say, ADMIN_USER },
- {"seek", "pppp", com_seek, ADMIN_USER },
+// {"seek", "pppp", com_seek, ADMIN_USER },
+ {"seek", "t", com_seek, ADMIN_USER }, // [HGM]
{"unseek", "", com_unseek, ADMIN_USER },
{"set", "wT", com_set, ADMIN_USER },
{"shout", "T", com_shout, ADMIN_USER },
/* The values of the follwing enums cannot be changed as they will end up */
/* Being seen by the client- we can add values later but the ones */
/* Here, after being documented, have to be here forever */
-enum { LIGHTNING = 0, STANDARD, BLITZ, UNTIMED };
+enum { UNTIMED = 0, BLITZ, STANDARD, NONSTANDARD, WILD, LIGHTNING };
#undef BLACK
#undef WHITE
int p1, count = 0;
int num; /* sought ID */
char *msgtxt;
- char board[1], category[1];
+ char board[100], category[100];
+ int wt, bt, winc, binc, rated, white;
srandom(time(0));
seek_globals.ads[num].status = SEEKCLOSED;
seek_globals.ads[num].whofrom = p;
+#if 1
+ // [HGM] attempt to make seek as powerful as match
+ wt = bt = winc = binc = -1;
+ board[0] = category[0] = '\0';
+ white = rated = -1;
+ if (param[0].type != TYPE_NULL) {
+ if (!parse_match_string(p, &wt,&bt,&winc,&binc,&white,&rated,category,
+ board,param[0].val.string))
+ return COM_OK; /* couldn't parse */
+ }
+ if(wt < 0) wt = pp->d_time; if(bt < 0) bt = wt;
+ if(winc < 0) winc = pp->d_inc; if(binc < 0) binc = bt;
+ seek_globals.ads[num].wtime = wt;
+ seek_globals.ads[num].btime = bt;
+ seek_globals.ads[num].winc = winc;
+ seek_globals.ads[num].binc = binc;
+
+ if (rated != -1) {
+ if (!rated || !CheckPFlag(p, PFLAG_REG) || seek_globals.ads[num].wtime == 0)
+ seek_globals.ads[num].rated = UNRATED; /* unrated */
+ else if (rated)
+ seek_globals.ads[num].rated = RATED; /* rated */
+ } else
+ seek_globals.ads[num].rated = BoolCheckPFlag(p, PFLAG_RATED);
+
+
+ if (white != -1) {
+ seek_globals.ads[num].seek_color = white ? WHITE : BLACK;
+ } else
+ seek_globals.ads[num].seek_color = random() % 2;
+
+#else
if (param[0].type == TYPE_INT)
seek_globals.ads[num].wtime = param[0].val.integer; /* White time */
else
category[0]='\0';
board[0]='\0';
/* FIXME- use proper values */
+#endif
seek_globals.ads[num].category = strdup(category);
seek_globals.ads[num].board_type = strdup(board);
static char *form_ad(struct pending * ad, int i)
{
- char *final;
+ char *final, buf[100];
int rating, total, type;
total = ad->wtime * 60 + ad->winc * 40;
rating = player_globals.parray[ad->whofrom].b_stats.rating;
}
+ if(ad->category[0]) { // [HGM] print category with seek ad
+ sprintf(buf, " %s", ad->category);
+ if(ad->board_type[0] && strcmp(ad->board_type, "0"))
+ sprintf(buf + strlen(buf), " %s", ad->board_type);
+ } else strcpy(buf, TypeStrings[type]); // [HGM] replaced color by type here...
+
asprintf(&final, "%3u %4u %-17s %3u %3u %-7s %-10s\n",
i,
rating,
ad->wtime,
ad->winc,
ad->rated?"rated":"unrated",
- TypeStrings[ad->seek_color]);
+ buf);
return final;
}