#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 ); }