lima-1.0b5/
lima-1.0b5/driver/
lima-1.0b5/driver/ChangeLog.old/
lima-1.0b5/driver/Win32/
lima-1.0b5/driver/compat/
lima-1.0b5/driver/include/
lima-1.0b5/driver/testsuite/
lima-1.0b5/driver/testsuite/clone/
lima-1.0b5/driver/testsuite/command/
lima-1.0b5/driver/testsuite/data/
lima-1.0b5/driver/testsuite/etc/
lima-1.0b5/driver/testsuite/include/
lima-1.0b5/driver/testsuite/inherit/
lima-1.0b5/driver/testsuite/inherit/master/
lima-1.0b5/driver/testsuite/log/
lima-1.0b5/driver/testsuite/single/
lima-1.0b5/driver/testsuite/single/tests/compiler/
lima-1.0b5/driver/testsuite/single/tests/efuns/
lima-1.0b5/driver/testsuite/single/tests/operators/
lima-1.0b5/driver/testsuite/u/
lima-1.0b5/driver/tmp/
lima-1.0b5/etc/
lima-1.0b5/lib/WWW/help/
lima-1.0b5/lib/cmds/
lima-1.0b5/lib/cmds/create/
lima-1.0b5/lib/cmds/player/attic/
lima-1.0b5/lib/contrib/bboard/
lima-1.0b5/lib/contrib/boards/
lima-1.0b5/lib/contrib/marriage/
lima-1.0b5/lib/contrib/roommaker/
lima-1.0b5/lib/contrib/transient_effect/
lima-1.0b5/lib/daemons/channel/
lima-1.0b5/lib/daemons/imud/
lima-1.0b5/lib/data/
lima-1.0b5/lib/data/config/
lima-1.0b5/lib/data/links/
lima-1.0b5/lib/data/news/
lima-1.0b5/lib/data/players/
lima-1.0b5/lib/data/secure/
lima-1.0b5/lib/domains/
lima-1.0b5/lib/domains/std/2.4.5/maze1/
lima-1.0b5/lib/domains/std/2.4.5/npc/
lima-1.0b5/lib/domains/std/2.4.5/post_dir/
lima-1.0b5/lib/domains/std/2.4.5/sub/
lima-1.0b5/lib/domains/std/camera/
lima-1.0b5/lib/domains/std/config/
lima-1.0b5/lib/domains/std/cult/
lima-1.0b5/lib/domains/std/effects/
lima-1.0b5/lib/domains/std/misc/
lima-1.0b5/lib/domains/std/monsters/
lima-1.0b5/lib/domains/std/recorder/
lima-1.0b5/lib/domains/std/rooms/
lima-1.0b5/lib/domains/std/rooms/beach/
lima-1.0b5/lib/domains/std/rooms/labyrinth/
lima-1.0b5/lib/domains/std/school/
lima-1.0b5/lib/domains/std/school/O/
lima-1.0b5/lib/domains/std/spells/
lima-1.0b5/lib/domains/std/spells/stock-mage/
lima-1.0b5/lib/domains/std/spells/stock-priest/
lima-1.0b5/lib/help/
lima-1.0b5/lib/help/admin/
lima-1.0b5/lib/help/hints/General_Questions/
lima-1.0b5/lib/help/hints/Pirate_Quest/
lima-1.0b5/lib/help/player/
lima-1.0b5/lib/help/player/bin/
lima-1.0b5/lib/help/player/quests/
lima-1.0b5/lib/help/wizard/
lima-1.0b5/lib/help/wizard/coding/guilds/
lima-1.0b5/lib/help/wizard/coding/rooms/
lima-1.0b5/lib/help/wizard/lib/daemons/
lima-1.0b5/lib/help/wizard/lib/lfun/
lima-1.0b5/lib/help/wizard/lib/std/
lima-1.0b5/lib/help/wizard/mudos_doc/
lima-1.0b5/lib/help/wizard/mudos_doc/applies/
lima-1.0b5/lib/help/wizard/mudos_doc/applies/interactive/
lima-1.0b5/lib/help/wizard/mudos_doc/applies/parsing/
lima-1.0b5/lib/help/wizard/mudos_doc/concepts/
lima-1.0b5/lib/help/wizard/mudos_doc/driver/
lima-1.0b5/lib/help/wizard/mudos_doc/efuns/
lima-1.0b5/lib/help/wizard/mudos_doc/efuns/arrays/
lima-1.0b5/lib/help/wizard/mudos_doc/efuns/buffers/
lima-1.0b5/lib/help/wizard/mudos_doc/efuns/compile/
lima-1.0b5/lib/help/wizard/mudos_doc/efuns/filesystem/
lima-1.0b5/lib/help/wizard/mudos_doc/efuns/floats/
lima-1.0b5/lib/help/wizard/mudos_doc/efuns/functions/
lima-1.0b5/lib/help/wizard/mudos_doc/efuns/general/
lima-1.0b5/lib/help/wizard/mudos_doc/efuns/mappings/
lima-1.0b5/lib/help/wizard/mudos_doc/efuns/mixed/
lima-1.0b5/lib/help/wizard/mudos_doc/efuns/numbers/
lima-1.0b5/lib/help/wizard/mudos_doc/efuns/parsing/
lima-1.0b5/lib/help/wizard/mudos_doc/lpc/constructs/
lima-1.0b5/lib/help/wizard/mudos_doc/lpc/types/
lima-1.0b5/lib/include/driver/
lima-1.0b5/lib/log/
lima-1.0b5/lib/obj/admtool/
lima-1.0b5/lib/obj/admtool/internal/
lima-1.0b5/lib/obj/admtool/mudinfo/
lima-1.0b5/lib/obj/admtool/secure/
lima-1.0b5/lib/obj/secure/
lima-1.0b5/lib/obj/secure/cmd/
lima-1.0b5/lib/obj/secure/mailers/
lima-1.0b5/lib/obj/secure/shell/
lima-1.0b5/lib/obj/secure/shell/classes/
lima-1.0b5/lib/obj/tasktool/
lima-1.0b5/lib/obj/tasktool/internal/
lima-1.0b5/lib/open/
lima-1.0b5/lib/secure/
lima-1.0b5/lib/secure/cgi/
lima-1.0b5/lib/secure/modules/
lima-1.0b5/lib/secure/simul_efun/
lima-1.0b5/lib/std/adversary/
lima-1.0b5/lib/std/adversary/advancement/
lima-1.0b5/lib/std/adversary/armor/
lima-1.0b5/lib/std/adversary/blows/
lima-1.0b5/lib/std/adversary/death/
lima-1.0b5/lib/std/adversary/formula/
lima-1.0b5/lib/std/adversary/health/
lima-1.0b5/lib/std/adversary/pulse/
lima-1.0b5/lib/std/adversary/wield/
lima-1.0b5/lib/std/classes/event_info/
lima-1.0b5/lib/std/container/
lima-1.0b5/lib/std/living/
lima-1.0b5/lib/std/modules/contrib/
lima-1.0b5/lib/std/patterns/
lima-1.0b5/lib/std/race/
lima-1.0b5/lib/std/race/restricted/
lima-1.0b5/lib/std/room/
lima-1.0b5/lib/tmp/
lima-1.0b5/lib/trans/
lima-1.0b5/lib/trans/admincmds/
lima-1.0b5/lib/trans/obj/
lima-1.0b5/lib/wiz/
/* Do not remove the headers from this file! see /USAGE for more info. */

/*************************************************************
 *
 *      guild.c
 *
 *  Admtool interface for the guild daemon
 *
 *  Coded by Aktah 1-28-00
 *
 *************************************************************/

#include <edit.h>

inherit "/obj/admtool/internal/base.c";

nomask string module_name() 
{
  return "guild";
}

nomask string module_key()
{
  return "G";
}

private nomask void list_guilds()
{
  string array guilds = sort_array(GUILD_D->query_guilds(), 1);

  if(sizeof(guilds) == 0)
  {
    write("There are no guilds defined.\n");
    return;
  }

  printf("%-18s%-40s\n%*'-'s\n", "Name", "Title", 58, "");
  foreach(string guild in guilds)
  {
    printf("%-18s%-40s\n", capitalize(guild), capitalize(GUILD_D->query_guild_title(guild)));
  }
}

private nomask void show_guild(string name)
{
  string str, temp;
  string array ary;
  int i;

  str = "Name: " + capitalize(name) + "\n";
  str += "Title: " + GUILD_D->query_guild_title(name) + "\n";
  str += "Prospectus: " + GUILD_D->query_guild_prospectus(name) + "\n";
  ary = GUILD_D->query_guild_banned(name);
  if(sizeof(ary))
  {
    temp = "Banned guilds: " + ary[0] + "\n";
    for(i = 1; i < sizeof(ary); i++)
      temp += "               " + ary[i] + "\n";
    str += temp;
  }
  ary = GUILD_D->query_guild_prereq(name);
  if(sizeof(ary))
  {
    temp = "Prereq guilds: " + ary[0] + "\n";
    for(i = 1; i < sizeof(ary); i++)
      temp += "               " + ary[i] + "\n";
    str += temp;
  }
  ary = GUILD_D->query_guild_allies(name);
  if(sizeof(ary))
  {
    temp = "Allied guilds: " + ary[0] + "\n";
    for(i = 1; i < sizeof(ary); i++)
      temp += "               " + ary[i] + "\n";
    str += temp;
  }
  ary = GUILD_D->query_guild_exclusive(name);
  if(sizeof(ary))
  {
    temp = "Excluded Attributes: " + ary[0] + "\n";
    for(i = 1; i < sizeof(ary); i++)
      temp += "                    " + ary[i] + "\n";
    str += temp;
  }
  ary = GUILD_D->query_guild_attributes(name);
  if(sizeof(ary))
  {
    temp = "Attributes: " + ary[0] + "\n";
    for(i = 1; i < sizeof(ary); i++)
      temp += "            " + ary[i] + "\n";
    str += temp;
  }
  str += "Begone level: " + GUILD_D->query_guild_begone(name) + "\n";
  str += "Suspend level: " + GUILD_D->query_guild_suspend(name) + "\n";
  if(GUILD_D->query_guild_sees_secret(name))
    str += "Sees secret.\n";
  else
    str += "Does not see secret.\n";
  if(GUILD_D->query_guild_is_secret(name))
    str += "Is secret.\n";
  else
    str += "Is not secret.\n";
  if(GUILD_D->query_guild_need_all(name))
    str += "Needs all prereqs.\n";
  else
    str += "Does not need all prereqs.\n";
  write(str);
}

private nomask void add_guild(string name)
{
  GUILD_D->guild_add(name);
  printf("Guild %s has been added.\n", name);
}

private nomask void remove_guild(string name)
{
  GUILD_D->guild_remove(name);
  printf("Guild %s has been removed.\n", name);
}

private nomask void set_title2(string name, string title)
{
  GUILD_D->set_guild_title(name, title);
}

private nomask void set_title(string name)
{
  modal_simple( (: set_title2, name :), "Title? ");
}

private nomask void send_prospectus(string name, string array lines)
{
  GUILD_D->set_guild_prospectus(name, implode(lines, " "));
}

private nomask void prospectus(string name)
{
  write("Prospectus for guild " + name + ":\n");
  new(EDIT_OB, EDIT_TEXT, 0, (: send_prospectus, name :));
}

private nomask void ban(string name, string guild)
{
  if(!GUILD_D->query_guild_banned(name))
  {
    GUILD_D->set_guild_banned(name, guild);
    return;
  }
  GUILD_D->set_guild_banned(name,
    GUILD_D->query_guild_banned(name) + ({ guild }));
}

private nomask void prereq(string name, string guild)
{
  if(!GUILD_D->query_guild_prereq(name))
  {
    GUILD_D->set_guild_prereq(name, guild);
    return;
  }
  GUILD_D->set_guild_prereq(name,
    GUILD_D->query_guild_prereq(name) + ({ guild }));
}

private nomask void ally(string name, string guild)
{
  if(!GUILD_D->query_guild_allies(name))
  {
    GUILD_D->set_guild_allies(name, guild);
    return;
  }
  GUILD_D->set_guild_allies(name, 
    GUILD_D->query_guild_allies(name) + ({ guild }));
}

private nomask void exclude(string name, string attr)
{
  if(!GUILD_D->query_guild_exclusive(name))
  {
    GUILD_D->set_guild_exclusive(name, attr);
    return;
  }
  GUILD_D->set_guild_exclusive(name, 
    GUILD_D->query_guild_exclusive(name) + ({ attr }));
}

private nomask void attrib(string name, string attr)
{
  if(!GUILD_D->query_guild_attributes(name))
  {
    GUILD_D->set_guild_attributes(name, attr);
    return;
  }
  GUILD_D->set_guild_attributes(name, 
    GUILD_D->query_guild_attributes(name) + ({ attr }));
}

private nomask void begone(string name, string level)
{
  GUILD_D->set_guild_begone(name, to_int(level));
}

private nomask void suspend(string name, string level)
{
  GUILD_D->set_guild_suspend(name, to_int(level));
}

private nomask void see_secret(string name)
{
  if(GUILD_D->query_guild_sees_secret(name))
  {
    GUILD_D->set_guild_sees_secret(name, 0);
    write(capitalize(name) + " no longer sees secret.\n");
  }
  else
  {
    GUILD_D->set_guild_sees_secret(name, 1);
    write(capitalize(name) + " sees secret.\n");
  }
}

private nomask void is_secret(string name)
{
  if(GUILD_D->query_guild_is_secret(name))
  {
    GUILD_D->set_guild_is_secret(name, 0);
    write(capitalize(name) + " is no longer secret.\n");
  }
  else
  {
    GUILD_D->set_guild_is_secret(name, 1);
    write(capitalize(name) + " is secret.\n");
  }
}

private nomask void need_all(string name)
{
  if(GUILD_D->query_guild_need_all(name))
  {
    GUILD_D->set_guild_need_all(name, 0);
    write(capitalize(name) + " no longer needs all prereqs.\n");
  }
  else
  {
    GUILD_D->set_guild_need_all(name, 1);
    write(capitalize(name) + " needs all prereqs.\n");
  }
}

nomask class command_info array module_commands() 
{
  return ({
    new(class command_info,
      key : "l",
      desc : "list guilds",
      action : (: list_guilds :)),
    new(class command_info,
      key : "v",
      proto : "[name]",
      desc : "View a guild",
      args : ({ "Which guild? " }),
      action : (: show_guild :)),
    new(class command_info,
      key : "g",
      proto : "[name]",
      desc : "Add a guild",
      who : "[Mudlib]",
      priv : "Mudlib",
      args : ({ "What name? " }),
      action : (: add_guild :)),
    new(class command_info,
      key : "r",
      proto : "[name]",
      desc : "Remove a guild",
      who : "[Mudlib]",
      priv : "Mudlib",
      args : ({ "What name? " }),
      action : (: remove_guild :)),
    new(class command_info,
      key : "t",
      proto : "[name]",
      desc : "Set a guild's title",
      who : "[Mudlib]",
      priv : "Mudlib",
      args : ({ "What name? " }),
      action : (: set_title :)),
    new(class command_info,
      key : "p",
      proto : "[name]",
      desc : "Set a guild's prospectus",
      who : "[Mudlib]",
      priv : "Mudlib",
      args : ({ "What name? " }),
      action : (: prospectus :)),
    new(class command_info,
      key : "b",
      proto : "[name] [guild to be banned]",
      desc : "Add to a guild's banned list",
      who : "[Mudlib]",
      priv : "Mudlib",
      args : ({"What name? ", "Which guild? " }),
      action : (: ban :)),
    new(class command_info,
      key : "P",
      proto : "[name] [guild to be needed]",
      desc : "Add to a guild's prereq list",
      who : "[Mudlib]",
      priv : "Mudlib",
      args : ({"What name? ", "Which guild? " }),
      action : (: prereq :)),
    new(class command_info,
      key : "A",
      proto : "[name] [ally]",
      desc : "Add to a guild's ally list",
      who : "[Mudlib]",
      priv : "Mudlib",
      args : ({"What name? ", "Which guild? " }),
      action : (: ally :)),
    new(class command_info,
      key : "e",
      proto : "[name] [attribute]",
      desc : "Add to guild's exclude list",
      who : "[Mudlib]",
      priv : "Mudlib",
      args : ({"What name? ", "Which attribute? " }),
      action : (: exclude :)),
    new(class command_info,
      key : "a",
      proto : "[name] [attribute]",
      desc : "Add to guild's attributes",
      who : "[Mudlib]",
      priv : "Mudlib",
      args : ({"What name? ", "Which attribute? " }),
      action : (: attrib :)),
    new(class command_info,
      key : "B",
      proto : "[name] [level]",
      desc : "Set a guild's begone level",
      who : "[Mudlib]",
      priv : "Mudlib",
      args : ({"What name? ", "Begone level? " }),
      action : (: begone :)),
    new(class command_info,
      key : "s",
      proto : "[name] [level]",
      desc : "Set a guild's suspend level",
      who : "[Mudlib]",
      priv : "Mudlib",
      args : ({"What name? ", "Suspend level? " }),
      action : (: suspend :)),
    new(class command_info,
      key : "S",
      proto : "[name]",
      desc : "Toggle a guild's sees_secret flag",
      who : "[Mudlib]",
      priv : "Mudlib",
      args : ({"What name? "}),
      action : (: see_secret :)),
    new(class command_info,
      key : "i",
      proto : "[name]",
      desc : "Toggle a guild's is_secret flag",
      who : "[Mudlib]",
      priv : "Mudlib",
      args : ({"What name? "}),
      action : (: is_secret :)),
    new(class command_info,
      key : "n",
      proto : "[name]",
      desc : "Toggle a guild's need_all flag",
      who : "[Mudlib]",
      priv : "Mudlib",
      args : ({"What name? "}),
      action : (: need_all :)),
  });
}