/
LIB3/
LIB3/D/ADMIN/
LIB3/D/ADMIN/OBJ/
LIB3/D/ADMIN/ROOM/W/
LIB3/D/HOME/
LIB3/D/HOME/CITY/ARENA/
LIB3/D/HOME/CITY/ITEMS/
LIB3/D/HOME/CITY/POSTOFFI/
LIB3/DOC/
LIB3/GLOBAL/SPECIAL/
LIB3/GLOBAL/VIRTUAL/
LIB3/NET/
LIB3/NET/CONFIG/
LIB3/NET/DAEMON/CHARS/
LIB3/NET/GOPHER/
LIB3/NET/INHERIT/
LIB3/NET/OBJ/
LIB3/NET/SAVE/
LIB3/NET/VIRTUAL/
LIB3/OBJ/B_DAY/
LIB3/OBJ/HANDLERS/TERM_TYP/
LIB3/PLAYERS/B/
LIB3/PLAYERS/N/
LIB3/ROOM/
LIB3/SAVE/
LIB3/SAVE/BOARDS/
LIB3/SAVE/ENVIRON/
LIB3/SAVE/POST/
LIB3/STD/COMMANDS/SHADOWS/
LIB3/STD/CREATOR/
LIB3/STD/DOM/
LIB3/STD/EFFECTS/
LIB3/STD/EFFECTS/HEALING/
LIB3/STD/EFFECTS/OTHER/
LIB3/STD/EFFECTS/POISONS/
LIB3/STD/ENVIRON/
LIB3/STD/GUILDS/
LIB3/STD/LIQUIDS/
LIB3/STD/ROOM/
LIB3/STD/TRIGGER/SHADOW/
LIB3/W/
LIB3/W/BANNOR/
LIB3/W/NEWSTYLE/
#include "path.h"
inherit "/std/room";

#define QUEST_HAN "/obj/handlers/quest_handler"
object guard;

/* The Hall of Heroes in the Fighters Guild.
 * Modified 26/3/93 by Piecemaker so that you can look for specific players. 
 * uses the modified quest handler object.
 * Imported from Discworld and cleaned up a little by Nivek, 16-Apr-94, so
 *    that you can read the code without getting a headache.
 * Further altered by Karg 18-Apr-94 for use in NewMoon.
 */

setup()
{
set_short("Hall of Heroes");
set_light(70);
set_long("You are standing in the Great Hall of Heroes, you have a feeling"+
         " of greatness as you stand among the hundreds of statues and"+
         " plaques dedicated to the city's finest adventurers. The vast room"+
         " carries off into the distance as far as you can see, a musty smell"+
         " hangs in the air and reminds you of an old library you once visited."+
         " The only light entering the room is from skylights dotted along the"+
         " roof at regular intervals. There is a small sign here.\n");
add_item( ({ "statue", "statues" }),
          " The large marble statues are dedicated to the finest"+
          " adventurers of New Moon. Each statue has a small plaque"+
          " fastened to the front of it which tells of each persons"+
          " triumphs.\n");
add_item( ({ "plaque", "plaques" }),
          " These plaques are dedicate to fine adventurers who are"+
          " not quite well known enough to gain a statue in this"+
          " great room.\n");
add_item( "room", ({ "smell", "This is an old musty smell which smells"+
                      " like it has hung in the air for a great number"+
                      " of years.\n" }));
add_item( "air", ({ "smell", "This is an old musty smell which smells"+
                      " like it has hung in the air for a great number"+
                      " of years.\n" }));
add_item( ({ "light", "skylight", "skylights", "sky" }),
          " The skylights are dotted along the roof at regular intervals."+
          " From each one a bright shaft of light enters the room and"+
          " highlights the dust hanging in the air.\n");
add_sign("A small wooden sign.", "To find the plaque/statue of a player"+
         " type: find <player> \n\nBe warned though, anyone who defaces"+
         " any statues will be\nseverly punished!",0 , "sign");
add_exit( "down", "arena_lobby", "corridor");
}

void init(){
   ::init();
   add_action("find_dedication", "find");
add_action( "do_deface", "deface", 1 );
}  

int find_dedication(string name)
{  int fame, i;
   int test_name;
   string famestr,   // the fame of the player
          dedstr;    // what kind of plaque object they have.
   string *story;    // the story of the player, what quests.

   if (!name)
   {  notify_fail("Look for which hero?\n");
      return 0;
   }
   /* The following added by Nivek so that the wiz_object_comm command
    * 'find' will work.
    */
   if ( sizeof(explode( name, " " )) >1 )
   {  notify_fail( "Names are only one word.\n" );
      return 0;
   }

   name = (string)this_player()->expand_nickname(name);

   // modified by bhurak 11/8/93 to test if name is a legitimate player name
   test_name = "/secure/login"->test_user(name);

   if (!test_name)
   {  write( name + " is not a player name - please try again.\n" );
      return 1;
   }

   fame = QUEST_HAN->query_player_fame(name);

   if (fame < 25)
   {  write( name + " is too insignificant to have"
                   + " a dedication in a fine place like this.\n" );
      return 1;
   }

   switch(fame)
   {  case 10..30 :
         dedstr = "a rotting wooden plaque";
         break;
      case 31..40 :
         dedstr = "an iron plaque";
         break;
      case 41..50 :
         dedstr = "a bronze plaque";
         break;
      case 51..60 :
         dedstr = "a silver plaque";
         break;
      case 61..70 :
         dedstr = "a golden plaque";
         break;
      case 71..80 :
         dedstr = "a stone statue with a bronze plaque";
         break;
      case 81..85 :
         dedstr = "a stone statue with a silver plaque";
         break;
      case 86..90 :
         dedstr = "a stone statue with a golden plaque";
         break;
      case 91..95 :
         dedstr = "a marble statue with a golden plaque";
         break;
      case 96..110 :
         dedstr = "a fine marble statue with a golden plaque";
         break;
      case 111..120 :
         dedstr = "a highly polished black marble statue with a platinum plaque";
         break;
      default :
         dedstr = "a sign saying \"removed for cleaning\"";
         break;
   }

   famestr = QUEST_HAN->query_fame_str( name );
   story = QUEST_HAN->query_player_story( name );

   // Tip: Don't write code like this if you want to remain a creator here.
#ifdef THIS_CODE_REALLY_SUCKS
   tell_object(this_player(), "\nYou find "+dedstr+".\n\n"+
       "The plaque reads:\n\n      Dedicated to "+name+", "+
       "an adventurer who is "+famestr+".\n\n"+
       "      Amongst their many achievements are:\n\n");

   /* list the story of the player. */
   for(i=0;i<(sizeof(story)-1);i++){
      tell_object(this_player(), "         "+story[i]+"\n");
   }

   tell_room(this_object(), this_player()->query_cap_name()+
      " finds "+dedstr+" and reads it.\n", this_player());
   return 1;
#endif

   write( "\n"
          + "You find " + dedstr + ".\n\n"
          + "The plaque reads:\n\n"
          + "   Dedicated to " + name + ", an adventurer who is " 
          + famestr + ".\n\n"
          + "   Amongst their many achievements are:\n\n"
          + "      "
          + implode( story, "\n      " ) + "\n"
        );

   say( (string)this_player()->query_cap_name()
        + " finds " + dedstr + " and reads it.\n" );

}

int do_deface( string arg ){
    if( arg != "statues" ){ return(0);
    }
      write("YOU WERE WARNED MORTAL! NOW PAY THE PRICE.\n\n"+
            "A demon guardian appears behind you!\n");
      say("A large demon guardian appears as if by magic.\n");
      clone_object( "/d/home/city/arena/guardian" )->move( this_object() );
      return( 1 );
}