#include <group_handler.h> inherit GROUP_SUBCOMMAND_INHERITABLE; string *leader_adjectives = ({ "daring", "heroic", "brave", "bold", "courageous", "dauntless", "fearless", "intrepid", "valiant", "awesome", "stalwart" }); string *follower_messages = ({ " and also includes", " and features such prominent figures as", ", whose supporters consist of", " and features such renowned names as", }); int do_list_groups(); void create() { ::create(); add_group_sub_command( "list", "", (: do_list_groups() :) ); } /* create() */ int do_list_groups() { string group, *groups, prefix, suffix, message, adjective, colour, stats; object *members, leader; int num_groups, num_members; groups = GROUP->query_groups(); num_groups = sizeof( groups ); if( !num_groups ) { return notify_fail( "There are currently no active groups.\n" ); } prefix = "$I$+8,+0= + "; suffix = "$I$-8,-0=\n"; colour = this_player()->colour_event( GROUP_COLOUR_EVENT, "" ); message = ""; num_members = 0; foreach( group in groups ) { leader = GROUP->leader_of( group ); members = GROUP->members_of( group ); if( !leader || !sizeof( members ) ) { continue; } num_members += sizeof( members ); message += prefix; message += colour + GROUP->query_group_short( group ) + "%^RESET%^ is led by "; members -= ({ leader }); if( leader->query_name() == "tape" ) { adjective = "infamous"; } else { adjective = leader_adjectives[ random( sizeof( leader_adjectives ) ) ]; } message += "the " + adjective + " %^BOLD%^" + leader->query_short() + "%^RESET%^"; if( sizeof( members ) ) { message += follower_messages[ random( sizeof( follower_messages ) ) ] + " %^BOLD%^" + query_multiple_short( members, 0, 0, 1 ) + "%^RESET%^."; } else { message += " and has no other members."; } message += suffix; } switch( num_groups ) { case 1: stats = "There is currently %^BOLD%^one%^RESET%^ active group, "; default: stats = "There are currently %^BOLD%^" + query_num( num_groups ) + "%^RESET%^ active groups, "; } stats += "with a total number of %^BOLD%^" + query_num( num_members ) + "%^RESET%^ persons:\n"; tell_object( this_player(), stats + message ); return 1; } /* do_list_groups() */ string query_help_string_for( string sub ) { return "This command lets you list all currently active " "groups and their members and leaders."; } /* query_help_string_for() */