// /adm/daemon/news_d.c // from the Nightmare mudlib // a news daemon for logging in // created by Descartes of Borg 13 february 1993 // check added by Pallando, 29 january 1994 #include <std.h> #include <news.h> inherit DAEMON; void read_news(); void class_news(); void high_mortal_news(); void immortal_news(); void arch_news(); void end_news(); void read_news() { if(file_size(NEWS) == (int)this_player()->query_news("general")) { class_news(); return; } this_player()->set_news("general", file_size(NEWS)); message("news", "\n%^RED%^General news:", this_player()); message("news", (read_file(NEWS)||""), this_player()); message("prompt", "Press <return> to continue: ", this_player()); input_to("class_news"); } void class_news() { string cl; cl = (string)this_player()->query_class(); if(!cl) cl = "child"; if(file_size(NEWS_DIR+cl) == (int)this_player()->query_news("class")) { high_mortal_news(); return; } this_player()->set_news("class", file_size(NEWS_DIR+cl)); if(cl == "child") message("news", "\n%^RED%^New player news:", this_player()); else message("news", "\n%^RED%^"+capitalize(cl)+" news:", this_player()); message("news", read_file(NEWS_DIR+cl), this_player()); message("prompt", "Press <return> to continue: ", this_player()); input_to("high_mortal_news"); } void high_mortal_news() { if(!high_mortalp(this_player()) || file_size(HIGH_MORTAL_NEWS) == (int)this_player()->query_news("high mortal")) { immortal_news(); return; } this_player()->set_news("high mortal", file_size(HIGH_MORTAL_NEWS)); message("news", "\n%^RED%^High mortal news:", this_player()); message("news", read_file(HIGH_MORTAL_NEWS), this_player()); input_to("immortal_news"); } void immortal_news() { if(!creatorp(this_player()) || file_size(IMMORTAL_NEWS) == (int)this_player()->query_news("immortal")) { arch_news(); return; } this_player()->set_news("immortal", file_size(IMMORTAL_NEWS)); message("news", "\n%^RED%^Immortal news:", this_player()); message("news", read_file(IMMORTAL_NEWS), this_player()); message("prompt", "\nPress <return> to continue: ", this_player()); input_to("arch_news"); } void arch_news() { if(!archp(this_player()) || (file_size(ARCH_NEWS) == -1) || file_size(ARCH_NEWS) == (int)this_player()->query_news("arch")) { end_news(); return; } this_player()->set_news("arch", file_size(ARCH_NEWS)); message("news", "\n%^RED%^Arch news:", this_player()); message("news", read_file(ARCH_NEWS), this_player()); message("prompt", "Press <return> to continue: ", this_player()); input_to("end_news"); } void end_news() { this_player()->describe_current_room(1); message("loggedin", "", this_player()); }