/* -*- LPC -*- */ /** * This handles both the surrender and club accepting stuff. * The surrender stuff was done by Sin and the club stuff by Pinkfish. */ #include <clubs.h> #include <broadcaster.h> inherit COMMAND_BASE; mixed do_surrender(object player) { object *victims; victims = this_player()->query_surrenderers(); if (member_array(player, victims) == -1) { add_failed_mess("Sorry, but $I has not offered to surrender to you.\n", ({ player }) ); return 0; } this_player()->remove_surrenderer(player); player->accepted_surrender(this_player()); write("Good show!\n"); return 1; } /* do_surrender() */ mixed do_club(string club_name, object *players) { object ob; string club; int ok; foreach (ob in players) { club = this_player()->query_respond_command(CLUB_RESPOND_TYPE, ob); if (club) { if (lower_case(club) == lower_case(club_name)) { // Whooo! Found the club! They accept! // Check to see if they are already a member, other wise // add them. if (CLUB_HANDLER->is_member_of(club_name, this_player()->query_name())) { add_failed_mess("You are already a member of '" + CLUB_HANDLER->query_club_name(club_name) + "'.\n"); } else { CLUB_HANDLER->add_member(club_name, this_player()->query_name()); add_succeeded_mess("$N join$s '" + CLUB_HANDLER->query_club_name(club_name) + "' with an invite from $I.\n", ({ ob }) ); ob->remove_respond_command(CLUB_RESPOND_TYPE, ob); ok++; all_inventory(this_player())->event_joined_club(this_player(), club_name); } } else { add_failed_mess("$I is inviting you to join '" + CLUB_HANDLER->query_club_name(club) + "' not '" + club_name + "'.\n", ({ ob })); } } else { add_failed_mess("$I is not inviting you to join any clubs.\n", ({ ob })); } } return ok; } /* do_club() */ int do_family(string family, string relationship, object *players) { object ob; int ok; string curr_family; class family_response_data frog; curr_family = this_player()->query_family_name(); if (curr_family) { curr_family = CLUB_HANDLER->query_club_name(curr_family); } relationship = CLUB_HANDLER->query_ungendered_relationship(relationship); if (!relationship) { add_failed_mess("Could not figure out the relationship.\n"); return 0; } foreach (ob in players) { frog = this_player()->query_respond_command(CLUB_FAMILY_RESPOND_TYPE, ob); if (!family) { family = frog->family; } if (frog && frog->family) { if (lower_case(frog->family) == lower_case(family)) { // Whooo! Found the family! They accept the relationship! if (lower_case(frog->relationship) != lower_case(relationship)) { add_failed_mess("You were asked to have the relationship of '" + CLUB_HANDLER->query_relationship_gender(frog->relationship, this_player()->query_female()) + "', not '" + CLUB_HANDLER->query_relationship_gender(relationship, this_player()->query_female()) + "' in the family '" + CLUB_HANDLER->query_club_name(frog->family) + "'.\n"); } else if (CLUB_HANDLER->is_relationship(frog->family, this_player()->query_name(), ob->query_name(), relationship) && frog->family == curr_family) { add_failed_mess("You have already setup a relationship of '" + CLUB_HANDLER->query_relationship_gender(relationship, this_player()->query_female()) + "' with $I.\n", ({ ob }) ); } else { if (!CLUB_HANDLER->is_member_of(frog->family, this_player()->query_name())) { if (frog->family != curr_family && curr_family) { if (!CLUB_HANDLER->move_family_member(curr_family, this_player()->query_name(), frog->family)) { add_failed_mess("Unable to move you into the family " + frog->family + " for some reason.\n"); continue; } } else { if (!CLUB_HANDLER->add_member(frog->family, this_player()->query_name())){ add_failed_mess("Unable to add you into the family " + frog->family + " for some reason.\n"); continue; } } this_player()->set_family_name(frog->family); } if (!CLUB_HANDLER->is_relationship(frog->family, this_player()->query_name(), ob->query_name(), relationship)) { if (!CLUB_HANDLER->add_relationship(ob->query_family_name(), ob->query_name(), frog->family, this_player()->query_name(), relationship)) { add_failed_mess("Unable to add the relationship to $I for " "some reason.\n"); } else { add_succeeded_mess("$N set$s up a relationship with $I " + "in '" + CLUB_HANDLER->query_club_name(frog->family) + "'.\n", ({ ob }) ); ok++; } } else { add_succeeded_mess("$N set$s up a relationship with $I " + "in '" + CLUB_HANDLER->query_club_name(frog->family) + "'.\n", ({ ob }) ); ok++; } ob->remove_respond_command(CLUB_FAMILY_RESPOND_TYPE, ob); } } else { add_failed_mess("$I is inviting you to a relationship in '" + CLUB_HANDLER->query_club_name(frog->family) + "' not '" + family + "'.\n", ({ ob })); } } else { add_failed_mess("$I is not inviting you to setup any relationships.\n", ({ ob })); } } return ok; } /* do_family() */ mixed *query_patterns() { #ifdef SURRENDER_ON return ({ "<indirect:living:here>", (: do_surrender($1[0]) :), "invite from <indirect:living:here> to <string'club name'>", (: do_club($4[1], $1) :), "relationship from <indirect:living:here> to <string'family'> as <string'relationship'>", (: do_family($4[1], $4[2], $1) :), "relationship from <indirect:living:here> as <string'relationship'>", (: do_family(this_player()->query_family_name(), $4[1], $1) :) }); #else return ({ "invite from <indirect:living:here> to <string'club name'>", (: do_club($4[1], $1) :), "relationship from <indirect:living:here> to <string'family'> as <string'relationship'>", (: do_family($4[1], $4[2], $1) :), "relationship from <indirect:living:here> as <string'relationship'>", (: do_family(this_player()->query_family_name(), $4[1], $1) :) }); #endif } /* query_patterns() */