/* Copyright (C) 1991, Marcus J. Ranum. All rights reserved. */ #ifndef lint static char RCSid[] = "$Header: /home/mjr/hacks/umud/CMD/RCS/say.c,v 1.2 92/06/16 21:58:11 mjr Exp $"; #endif /* configure all options BEFORE including system stuff. */ #include "config.h" #include "mud.h" #include "vars.h" /* TinyMUD-like "say" */ /* ARGSUSED */ cmd_say(argc,argv,who,aswho) int argc; char *argv[]; char *who; char *aswho; { char *un; char nx[MAXOID]; char *room; char *inroom; int ax; room = ut_loc(run_actor()); /* get list of who is in the room */ inroom = ut_getatt(room,0,typ_list,var_ply,(char *)0); if(inroom == (char *)0) { /* We're not in a room, let's see if we're 'in' a player. */ inroom = ut_getatt(room,0,typ_flag,var_isplay,(char *)0); if (inroom == (char *)0) { say(who,"You aren't anywhere. Your voice falls flat.\n",(char *)0); return(UERR_NONE); } /* We're 'inside' a player. */ /* set player's name */ un = ut_name(run_actor()); /* hack to handle empty statements */ if(argc == 1) argv[1] = ""; if(argc < 3) { say(room,un," says, \"",argv[1],"\"\n",(char *)0); } else { say(room,un," says, \"",(char *)0); for(ax = 1; ax < argc;) { say(room,argv[ax],(char *)0); if(++ax < argc) say(room," ",(char *)0); } say(room,"\"\n",(char *)0); } un = run_actor(); /* now talk to ourself :) */ if(argc < 3) { say(un,"You say, \"",argv[1],"\"\n",(char *)0); } else { say(un,"You say, \"",(char *)0); for(ax = 1; ax < argc;) { say(un,argv[ax],(char *)0); if(++ax < argc) say(un," ",(char *)0); } say(un,"\"\n",(char *)0); } return(UERR_NONE); } /* set player's name */ un = ut_name(run_actor()); /* hack to handle empty statements */ if(argc == 1) argv[1] = ""; /* iterate across list of people in the room - excluding ourself */ while((inroom = lstnext(inroom,nx,sizeof(nx))) != (char *)0) { if(strcmp(nx,who)) { if(argc < 3) { say(nx,un," says, \"",argv[1],"\"\n",(char *)0); } else { say(nx,un," says, \"",(char *)0); for(ax = 1; ax < argc;) { say(nx,argv[ax],(char *)0); if(++ax < argc) say(nx," ",(char *)0); } say(nx,"\"\n",(char *)0); } } } un = run_actor(); /* now talk to ourself :) */ if(argc < 3) { say(un,"You say, \"",argv[1],"\"\n",(char *)0); } else { say(un,"You say, \"",(char *)0); for(ax = 1; ax < argc;) { say(un,argv[ax],(char *)0); if(++ax < argc) say(un," ",(char *)0); } say(un,"\"\n",(char *)0); } return(UERR_NONE); }