#include #include #include #include #include #include "defs.h" #include "struct.h" #include "data.h" #include "proto.h" #include "util.h" static void usage(void) { fprintf(stderr, "\ Usage: setteam dump\n\ setteam TEAM COMMAND [COMMAND ...]\n\ \n\ TEAM is a team name prefix.\n\ COMMAND is one of:\n\ \n\ get dump team data for one team in setteam format\n\ verbose send messages to all in game for certain changes\n\ \n\ surrender N set the surrender countdown\n\ reconstruction N set the starbase reconstruction countdown\n\ "); } /* send message to players */ static void say(const char *fmt, ...) { va_list args; char buf[80]; va_start(args, fmt); vsnprintf(buf, sizeof(buf), fmt, args); amessage(buf, 0, MALL); va_end(args); } /* display everything known about a planet in command line format */ void get(char *us, char *name, struct team *te) { printf("%s %s", us, name); printf(" reconstruction %d", te->te_turns); printf(" surrender %d", te->te_surrender); printf("\n"); } /* display everything about every team */ static void dump(char *us) { get(us, team_name(FED), &teams[FED]); get(us, team_name(ROM), &teams[ROM]); get(us, team_name(KLI), &teams[KLI]); get(us, team_name(ORI), &teams[ORI]); } int main(int argc, char **argv) { int i, team, verbose = 0; if (argc == 1) { usage(); return 1; } openmem(0); i = 1; state_0: /* dump - perform a get for each team */ if (!strcmp(argv[i], "dump")) { dump(argv[0]); if (++i == argc) return 0; goto state_0; } /* check for team identifier */ team = team_find(argv[i]); if (team == 0) { fprintf(stderr, "team %s not known\n", argv[i]); return 1; } state_1: if (++i == argc) return 0; if (!strcmp(argv[i], "get")) { get(argv[0], team_name(team), &teams[team]); goto state_1; } if (!strcmp(argv[i], "verbose")) { verbose++; goto state_1; } if (!strcmp(argv[i], "reconstruction")) { if (++i == argc) return 0; if (verbose) say("%s starbase reconstruction timer reset to %s", team_name(team), argv[i]); teams[team].te_turns = atoi(argv[i]); goto state_1; } if (!strcmp(argv[i], "reconstruct")) { if (++i == argc) return 0; teams[team].te_turns = -1; if (verbose) say("%s starbase reconstruction timer reset", team_name(team)); goto state_1; } if (!strcmp(argv[i], "surrender")) { if (++i == argc) return 0; if (verbose) say("%s surrender timer reset to %s", team_name(team), argv[i]); teams[team].te_surrender = atoi(argv[i]); goto state_1; } if (!strcmp(argv[i], "bust")) { if (teams[team].te_surrender > 0) { if (verbose) say("%s suffer an economic downturn, surrender timer lowered", team_name(team)); teams[team].te_surrender = teams[team].te_surrender / 2; } goto state_1; } if (!strcmp(argv[i], "boom")) { if (teams[team].te_surrender > 0) { if (verbose) say("%s economic boom, surrender timer raised", team_name(team)); teams[team].te_surrender = teams[team].te_surrender * 2; } goto state_1; } goto state_0; }