/* Filename : treebranch.c * Description : on a tree branch with a birdnest * * written : 02-10-1996 - Gunner * last modified : 26-05-1998 - Gunner * HTML-Version : 02-02-2000 - Ghorwin */ #include <mudlib.h> inherit I_ROOM; #define FUNC "/doc/crashcourse/course05/treefuncs" create() { ::create(); set_light(1); set_short("On a tree branch"); set_long("You are standing on a tree branch high up in one of the " "trees. The sun is shining high above you as you look " "a birdnest right in front of you.\n"); add_item(({"tree","trees","forest","dark forest","gloomy forest"}), "The dark forest is below you. And, hopefully it'll " "stay there.\n"); add_item(({"branch","tree branch"}),"There's a birdnest on the " "branch.\n"); add_item(({"sky","sun","cloud","clouds"}),"The sun is shining high " "above you on the sky. There's not a cloud to be seen.\n"); add_item(({"ground","soft ground"}),"You can't see the ground " "from up here.\n"); add_item(({"nest","birdnest","empty nest","empty birdnest"}), "The nest seems to be empty.\n"); add_neg(({"get","take"}),({"nest","birdnest","empty nest","empty birdnest"}), "Better leave it alone. It seems to fastened to the branch.\n"); add_trigger("climb",(:call_other,FUNC,"climb_down",this_object():)); add_trigger("search",(:call_other,FUNC,"search_nest",this_object():)); add_hook("__reset",(:call_other,FUNC,"reset_tree",this_object():)); replace_program(I_ROOM); }
/* Filename : treefuncs.c * Description : the functionfile for treebranch.c * * written : 02-10-1996 - Gunner * last modified : 05-11-1997 - Gunner * HTML-Version : 02-02-2000 - Ghorwin */ #include <mudlib.h> #include "/doc/crashcourse/defs.h" inherit I_DAEMON; #define FOREST "/doc/crashcourse/course05/forest" #define RING "/doc/crashcourse/course05/ring" /* * reset_tree : Clear up the room for this next reset */ void reset_tree(object room) { room->remove_property("searched_nest"); } /* * climb_down : Let's try to get down in one piece, shall we? */ int climb_down(object room, string arg) { object dest_room = load_object(FOREST); if (!arg || (arg != "down" && arg != "tree")) return notify_fail("Climb where?\n"); tell_object(TP,"You carefully climb down.\n"); tell_room(room,TP->query_name() + " climbs down the tree.\n",({TP})); tell_room(dest_room,TP->query_name() + " comes down the tree.\n",({TP})); TP->move_player("climbing down",dest_room); return 1; } /* * search_nest : Let's see if we can't find a treasure inside the nest... */ int search_nest(object room, string arg) { object ring; if (!arg || (arg != "nest" && arg != "birdnest")) return notify_fail("Search what?\n"); if (room->query_property("searched_nest")) { tell_object(TP,"You find nothing.\n"); return 1; } tell_object(TP,"You search the nest and find a ring!\n"); tell_room(room,TP->query_name() + " searches the nest and picks up " "a ring!\n",({TP})); ring = clone_object(RING); ring->move(TP); room->add_property("searched_nest"); return 1; }