/* Filename : girl.c * Description : the sobbing girl * * written : 23-12-1996 - Gunner * last modified : 28-05-1998 - Gunner * HTML-Version : 06-02-2000 - Ghorwin */ #include <mudlib.h> inherit I_MONSTER; #define FUNC "/doc/crashcourse/course11/girlfuncs" create() { ::create(); set_name("sad girl"); add_id(({"girl","woman","sad woman"})); set_short("A sad girl"); set_long("This girl sure looks sad. Wonder what's wrong...\n"); set_gender(1); set_level(5); set_random_pick(30); load_chat(10,({ "The girl sobs: ''That terrible troll ran off with my " "beautiful necklace!''\n", "The girl sobs: ''Can't you help me get it back, please?''\n", "The girl sobs: ''The troll ran off with my necklace and " "hid himself way across the lake and I can't get there!''\n"})); add_property("no_fight"); add_hook("__reset",(:call_other,FUNC,"reset_girl",this_object():)); add_hook("__enter_inv",({FUNC,"enter_girl"}),this_object()); replace_program(I_MONSTER); }
/* Filename : girlfuncs.c * Description : the functionfile for girl.c * * written : 23-12-1996 - Gunner * last modified : 28-05-1998 - Gunner * HTML-Version : 04-02-2000 - Ghorwin */ #include <mudlib.h> inherit I_DAEMON; #include "/doc/crashcourse/defs.h" #define SHORE_E "/doc/crashcourse/course11/shore_e" /* * reset_girl : Called every time the girl resets (once an hour), and cleans up * the quest for the next attempt... */ void reset_girl(object girl) { object shore, room = ENV(girl); if (!room) return; // Just to be sure if (room->query_property("icy_lake")) return; // Nothing needs to be done. room->add_item(({"lake","frozen lake"}), "The lake is frozen solid. If you want to cross it, you'd " "better wait for the spring to defrost it, because there's " "no way you would survive a walk across it, without falling " "through and drowning.\n"); room->add_item("ice","There sure is a lot of it.\n"); room->add_property(({"cold","icy_lake"})); shore = load_object(SHORE_E); if (!shore) return; shore->reset(1); // Force the room(and the troll) to reset... } /* * enter_girl : Called whenever the girl receives anything and we use it to check * for her necklace... */ void enter_girl(object girl, object ob, object from) { object room = ENV(girl); if (!room || !from) return; if (!ob->query_property("girly_necklace")) return; if (interactive(from)) { tell_room(room,"The girl starts running around smiling happily.\n"); tell_object(from,"The girl thanks you dearly for returning her necklace.\n"); if (!from->query_quests("return_necklace")) { from->set_quest("return_necklace"); from->add_exp(1000); // A small bonus... ;-) } } girl->move_player("runs off into the distance",load_object(R_VOID)); }