#include <ctype.h> #include <stdio.h> #include "interact.h" #include "socket.h" #include "command.h" #include "globals.h" #include "stringops.h" #include "random_functs.h" #include "resp.h" static char tempstr [2048]; int main (int argc, char **argv) { player *current_player; char *player, *action, *line_current, *line; globals *g; int quit = 0, n; #ifdef FUNCTIONS puts ("**main"); #endif random_seed (); if (argc != 2) { fprintf (stderr, "Usage:%s {global file}\n", *argv); exit (1); } g = globals_load (argv[1]); sprintf (tempstr, "connect %s %s", g->name->name, g->password); socket_write (g->socket, tempstr); if (g->room_home != NULL) socket_write (g->socket, g->home_str); do { if (socket_ready (g->socket)) { if (socket_read (g->socket, &line) != 0) { globals_save (g); globals_burn (g); exit (1); } line_current = tokenize (tempstr, line); copystring (player, tempstr); line_current = tokenize (tempstr, line_current); copystring (action, tempstr); if (((current_player = player_find (g->player_list, player)) == NULL) && (!strcasecmp (action, "says,"))) { player_add (g->player_list, player); current_player = g->player_list->tail; } if ((current_player) && !name_test (g->name, current_player->name)) { if (!strcasecmp (action, g->command_str)) { quit = command (g, current_player, quotestrip (line_current)); } interact (g, current_player, line); } if (player) free (player); if (action) free (action); } else { if ((g->moveodds > 0) && ((random_int () % g->moveodds) == 0)) command_move (g, ""); if ((g->actodds > 0) && ((random_int () % g->actodds) == 0)) { group *rnd_g; resp *r; rnd_g = group_find (g->group_list, "RANDOM"); if ((rnd_g != NULL) && (rnd_g->r->priority_total > 0)) { r = resp_find_pri (rnd_g->r, n = random_int () % rnd_g->r->priority_total); resp_parse_output ( r->response, g->name->name, g); } } } } while (!quit); if (g->room_home != NULL) socket_write (g->socket, g->home_str); globals_save (g); globals_burn (g); return 0; }