So while working on building, I decided to take a look at the send_to_room function... and found out why I was having issues with getting (NULL). The eavesdrop snippet changes send_to_room in a way that renders it unable to use variables!
So, if you've put in the eavesdrop snippet, here is the fix for that bug. Open up comm.c, and the send_to_room function should look like this...
Code:
void send_to_room(room_rnum room, const char *messg, ...)
{
struct char_data *i;
char buf[MAX_STRING_LENGTH];
va_list args;
if (messg) {
for (i = world[room].people; i; i = i->next_in_room) {
if (!i->desc)
continue;
va_start(args, messg);
vwrite_to_output(i->desc, messg, args);
va_end(args);
}
for (i = world[room].listening; i; i = i->next_listener)
if (i->desc) {
/* the ------'s are used to differentiate eavesdropped stuff from
* the stuff that is happening in the same room as the char..
* looks like:
* -------
* john dropped a sword
* ------
*/
sprintf(buf, "----------\r\n%s----------\r\n", messg);
write_to_output(i->desc, buf);
}
}
}
Sorry about not catching that, and I have to apologize to Cygwin for blaming it for what is clearly my mistake.
Hope this helps.