#include "standard.h" #include "path.h" inherit HAVMAND+"beach.c"; object dan; void setup() { set_light(LIGHT); set_long("\nIsle of Havmand : Beach\n\n" " This small beach ends here. The fine white sand just stops when it gets " "to the waters edge. There are trees to the south, but from here there is no " "way to enter them. This would be the perfect place to rest for a while. " "\n\n"); add_item("trees","The trees grow very closely together and many of them " "have intertwining trunks making it difficult to force your way among them.\n"); } void init() { add_exit("east",HAVMAND+"b07.c","path"); add_action("do_raft","make"); add_action("do_raft","build"); ::init(); } void reset() { if(!dan) { dan = new(CHARS+"dan.c"); dan->move(this_object()); } ::reset(); } int do_raft(string str) { int i; object *ob; if(!stringp(str)) { write("Build what?\n"); return(1); } str = lower_case(str); if(str != "raft") return 0; if(!dan) { write("There seems to be no one here to help you build a raft.\n"); return 1; } // 2 casks ob = find_match("casks",TP); if(sizeof(ob) < 2) { write("Pirate Dan says: Can't build no raft with nothing for floatation, coupla casks would do at a pinch.\n"); return 1; } // vine ob = find_match("vine",TP); if(!sizeof(ob)) { write("Pirate Dan says: We need summat ter hold it all together "+CNAME+" rope or summat like that.\n"); return 1; } // door ob = find_match("door",TP); if(!sizeof(ob)) { write("Pirate Dan says: Summat flat for the decking, maybe ?\n"); return 1; } // baccy ob = find_match("baccy",TP); if(!sizeof(ob)) { write("Pirate Dan says: We need summat ta keep the sharks away, chewing tobacco works good.\n"); return 1; } // level check here if(TP->query_level() < 5) { write("Pirate Dan says: Sorry "+CNAME+" you'd never survive the trip, I'd feel real " "guilty getting you killed. Come back when you are more experienced.\n"); return 1; } write("Old Dan smiles at you. He quickly lashes the door to the top of the " "casks, building a crude raft. You help him push it off from the shore and leap aboard.\n"); say("Old Dan quickly lashes a door to the top of some casks making a raft. "+ CNAME+" helps him push it off and climbs aboard. It looks pretty crowded and there " "wouldn't have been room for you even if you had been fast enough.\n"); if(!find_object(HAVMAND+"raft")) clone_object(HAVMAND+"raft.c"); TP->move(SHIP+"havmand_belaern"); TP->look_me(); // clean up // 2 casks ob = find_match("casks",TP); for(i= 0;i < sizeof(ob); i++) { ob[i]->dest_me(); } // vine ob = find_match("vine",TP); for(i= 0;i < sizeof(ob); i++) { ob[i]->dest_me(); } // door ob = find_match("door",TP); for(i= 0;i < sizeof(ob); i++) { ob[i]->dest_me(); } // baccy ob = find_match("baccy",TP); for(i= 0;i < sizeof(ob); i++) { ob[i]->dest_me(); } environment(TP)->do_voyage(); dan->dest_me(); return 1; } void dest_me() { if(dan) dan->dest_me(); ::dest_me(); }