merentha_fluffos_v2/
merentha_fluffos_v2/bin/
merentha_fluffos_v2/fluffos-2.9-ds2.03/
merentha_fluffos_v2/fluffos-2.9-ds2.03/ChangeLog.old/
merentha_fluffos_v2/fluffos-2.9-ds2.03/Win32/
merentha_fluffos_v2/fluffos-2.9-ds2.03/compat/
merentha_fluffos_v2/fluffos-2.9-ds2.03/compat/simuls/
merentha_fluffos_v2/fluffos-2.9-ds2.03/include/
merentha_fluffos_v2/fluffos-2.9-ds2.03/testsuite/
merentha_fluffos_v2/fluffos-2.9-ds2.03/testsuite/clone/
merentha_fluffos_v2/fluffos-2.9-ds2.03/testsuite/command/
merentha_fluffos_v2/fluffos-2.9-ds2.03/testsuite/data/
merentha_fluffos_v2/fluffos-2.9-ds2.03/testsuite/etc/
merentha_fluffos_v2/fluffos-2.9-ds2.03/testsuite/include/
merentha_fluffos_v2/fluffos-2.9-ds2.03/testsuite/inherit/
merentha_fluffos_v2/fluffos-2.9-ds2.03/testsuite/inherit/master/
merentha_fluffos_v2/fluffos-2.9-ds2.03/testsuite/log/
merentha_fluffos_v2/fluffos-2.9-ds2.03/testsuite/single/
merentha_fluffos_v2/fluffos-2.9-ds2.03/testsuite/single/tests/compiler/
merentha_fluffos_v2/fluffos-2.9-ds2.03/testsuite/single/tests/efuns/
merentha_fluffos_v2/fluffos-2.9-ds2.03/testsuite/single/tests/operators/
merentha_fluffos_v2/fluffos-2.9-ds2.03/testsuite/u/
merentha_fluffos_v2/fluffos-2.9-ds2.03/tmp/
merentha_fluffos_v2/fluffos-2.9-ds2.03/windows/
merentha_fluffos_v2/lib/cfg/
merentha_fluffos_v2/lib/cfg/races/
merentha_fluffos_v2/lib/cmds/abilities/
merentha_fluffos_v2/lib/cmds/actions/
merentha_fluffos_v2/lib/cmds/spells/
merentha_fluffos_v2/lib/daemon/include/
merentha_fluffos_v2/lib/daemon/services/
merentha_fluffos_v2/lib/doc/
merentha_fluffos_v2/lib/doc/building/
merentha_fluffos_v2/lib/doc/help/classes/
merentha_fluffos_v2/lib/doc/help/general/
merentha_fluffos_v2/lib/doc/help/races/
merentha_fluffos_v2/lib/doc/help/skills/
merentha_fluffos_v2/lib/doc/help/stats/
merentha_fluffos_v2/lib/doc/man/efuns/
merentha_fluffos_v2/lib/doc/man/lfuns/
merentha_fluffos_v2/lib/doc/news/
merentha_fluffos_v2/lib/doc/old/
merentha_fluffos_v2/lib/doc/old/concepts/
merentha_fluffos_v2/lib/doc/old/lpc/constructs/
merentha_fluffos_v2/lib/doc/old/lpc/types/
merentha_fluffos_v2/lib/domains/ROOMS/
merentha_fluffos_v2/lib/domains/obj/armour/
merentha_fluffos_v2/lib/domains/obj/monsters/
merentha_fluffos_v2/lib/domains/obj/other/
merentha_fluffos_v2/lib/domains/obj/weapons/
merentha_fluffos_v2/lib/realms/petrarch/
merentha_fluffos_v2/lib/save/daemons/
merentha_fluffos_v2/lib/save/rid/
merentha_fluffos_v2/lib/save/users/a/
merentha_fluffos_v2/lib/save/users/p/
merentha_fluffos_v2/lib/save/users/t/
merentha_fluffos_v2/lib/std/login/
merentha_fluffos_v2/lib/std/obj/
merentha_fluffos_v2/win32/
// Petrarch
// Merentha Lib 1.0
// chat.c

#include <daemons.h>
#include <chat.h>
#include <std.h>

inherit DAEMON;

mapping __Channels=([]), __Blocked=([]);

void register_channels(string *channels, object player) {
int i;
  if(!channels || !player) return;
  i=sizeof(channels);
  while(i--) {
    if(!__Blocked[channels[i]]) __Blocked[channels[i]]=({});
    if(!__Channels[channels[i]]) __Channels[channels[i]]=({});
    __Channels[channels[i]]=__Channels[channels[i]]+({player});
  }
}

int send_message(string player, string channel, string message, int emote) {
object ob;
  if(!player || !channel) return 0;
  if(member_array(channel, keys(__Channels))==-1) return 0;
//tell_object(find_player("cratylus"),"hi!");
  if(!message) {
    if(!ob=this_player()) return 0;
    if(member_array(ob, __Blocked[channel])==-1) {
      __Blocked[channel]=__Blocked[channel]+({ob});
      message(channel, "Channel ["+channel+"] blocked.", ob);
    }
    else {
      __Blocked[channel]=__Blocked[channel]-({ob});
      message(channel, "Channel ["+channel+"] unblocked.", ob);
    }
    return 1;
  }
  if(member_array(channel, MIS_CHANNELS)!=-1 && this_player()) {
    NETWORK_D->send_rcre_request(player, message);
  }
  if(message[0]==':' && member_array(message[1..1], ({"P","p",")","(","-"}))==-1) {
    emote=1;
    message=message[1..<0];
  }
  if(emote) message(channel,"%^BLUE%^[%^RED%^"+channel+"%^BLUE%^]%^RESET%^ "+player+" "+message, __Channels[channel]-__Blocked[channel]);
  else message(channel, player+" %^BLUE%^[%^RED%^"+channel+"%^BLUE%^]%^RESET%^ "+message, __Channels[channel]-__Blocked[channel]);
if(member_array(channel,INTERMUD_D->GetChannels()) != -1){
//if(previous_object() != find_object("/daemon/services/channel"))
if(this_player())
SERVICES_D->eventSendChannel(capitalize(player),channel,message);
}
  return 1;
}

void create() {
string ns = INTERMUD_D->GetNameserver();
  if(sizeof(users())) call_out("remake",0);
foreach(string canal in ({"intermer","imud_code","dchat","dead_test4"}) ){
            INTERMUD_D->eventWrite(({ "channel-listen", 5, mud_name(), 0, ns,
                0, canal, 1 }));
}
}

void remake() {
  users()->add_channels();
}

mapping get_chans(){
return copy(__Channels);
}