/* Dismiss a member from the clan/Resign from the clan */ void do_dismiss( struct char_data *ch, struct clan_type *cptr, struct char_data *vict ) { if (vict != ch){ if (vict != NULL && GET_CLAN(vict) == GET_CLAN(ch)) { if (GET_CLAN_RANK(vict) >= GET_CLAN_RANK(ch)) { send_to_char("You may not dismiss those of equal or greater clan status than yourself!\r\n", ch); return; } /* send some sort of mail to player notifying him/her of dismissal */ sprintf(buf, "%s,\r\n\r\n" " You have been dismissed from the clan of %s.\r\n" "If you are unsure of the reason why, please feel\r\n" "free to contact the leader, %s.\r\n", GET_NAME(vict), cptr->name, cptr->leadersname); store_mail(GET_IDNUM(vict), GET_IDNUM(ch), -1, buf); remove_member(cptr, vict); } } else if (GET_CLAN_RANK(vict) == CLAN_LEADER) { GET_CLAN_RANK(vict) = CLAN_MEMBER; send_to_char("You have resigned as leader.\r\n", ch); cptr->leadersname = strdup("NoOne"); save_clans(); return; } GET_CLAN(vict) = CLAN_NONE; GET_CLAN_RANK(vict) = CLAN_NONE; GET_HOME(vict) = 1; remove_member(cptr, vict); save_char(vict, NOWHERE); save_clans(); return; }
/* Accept an applicant into the clan */ void do_caccept( struct char_data *ch, struct clan_type *cptr, struct char_data *vict ) { int i=0; if (vict != NULL && (GET_CLAN(vict) < CLAN_MEMBER)) { GET_CLAN(vict) = GET_CLAN(ch); GET_CLAN_RANK(vict) = CLAN_MEMBER; /* send some sort of mail to player notifying him/her of acceptance */ sprintf(buf, "%s,\r\n\r\n" " Congratulations! You have been accepted into the ranks of\r\n" "%s. The leader of our clan is %s. Good luck.\r\n", GET_NAME(vict), cptr->name, cptr->leadersname); store_mail(GET_IDNUM(vict), GET_IDNUM(ch), -1, buf); /* now that the mail has been sent, let's continue. */ GET_HOME(vict) = GET_HOME(ch); save_char(vict, NOWHERE); /* now remove the player from the petition list */ remove_applicant(cptr, vict); for (i = 0; i < 100; i++) { if (cptr->members[i] == NULL) { cptr->members[i] = strdup(GET_NAME(vict)); break; } if (strcmp(cptr->members[i], GET_NAME(vict)) == 0) break; } save_clans(); } return; }
/* Apply to a clan for membership */ void do_apply( struct char_data *ch, struct clan_type *cptr ) { int i; long leader; if (IS_NPC(ch)) return; if (!strcmp(cptr->leadersname, "NoOne") ) { send_to_char("The clan is currently without a leader.\r\n", ch); return; } for (i = 0; i < 20; i++) { if (cptr->applicants[i] == NULL) break; if (!strcmp(cptr->applicants[i], GET_NAME(ch))) { send_to_char("You have already applied to this clan.\r\n", ch); return; } } if ((cptr->applicants[i] == NULL) && (i < 20)) { cptr->applicants[i] = str_dup(GET_NAME(ch)); save_clans(); /* send some sort of mail to leader notifying him/her of application */ leader = get_id_by_name(cptr->leadersname); sprintf(buf, "%s,\r\n\r\n" " Hi there! I'd like to apply to your clan. I have some abilities\r\n" "that I feel will be useful to you. Please feel free to contact me \r\n" "for any information that you might need about me.\r\n" "Hope to hear from you soon!\r\n" "\r\n%s\r\n", cptr->leadersname, GET_NAME(ch)); store_mail(leader, GET_IDNUM(ch), -1, buf); /* now that the mail has been sent, let's continue. */ sprintf(buf, "Your application for admittance to %s has been noted.\r\n" "You will receive notification when you have been accepted.\r\n", cptr->name); send_to_char(buf, ch); } else send_to_char("This clan is already being applied to by 20 other players, try again later.\r\n", ch); save_clans(); return; }
void write_all( bool forced ) { area_data* area; for( area = area_list; area != NULL; area = area->next ) save_area( area, forced ); save_mobs( ); save_objects( ); save_help( ); save_trainers( ); save_banned( ); save_quests( ); save_shops( ); save_tables( ); save_rtables( ); save_lists( ); save_clans( ); }
/* Reject an applicant from a clan/Withdraw an application */ void do_creject( struct char_data *ch, struct clan_type *cptr, struct char_data *vict) { int i=0; long leader; if (vict != ch) { if (vict != NULL) { /* send some sort of mail to player notifying him/her of rejection */ sprintf(buf, "%s,\r\n\r\n" " You have been rejected from the clan of %s.\r\n" "If you are unsure of the reason why, please feel\r\n" "free to contact the leader, %s.\r\n", GET_NAME(vict), cptr->name, cptr->leadersname); store_mail(GET_IDNUM(vict), GET_IDNUM(ch), -1, buf); /* mail's been sent, let's move on */ } } else { for (i=0; i<20; i++) { if (!str_cmp(cptr->applicants[i], GET_NAME(ch))) { send_to_char("You aren't applying to the clan...\r\n", ch); break; } } /* send some sort of mail to leader notifying him/her of withdrawal */ leader = get_id_by_name(cptr->leadersname); sprintf(buf, "%s,\r\n\r\n" " I have withdrawn my application from the clan.\r\n" "\r\n%s\r\n", cptr->leadersname, GET_NAME(ch)); store_mail(leader, GET_IDNUM(ch), -1, buf); /* now that the mail has been sent, let's continue. */ } GET_CLAN(vict) = CLAN_NONE; GET_CLAN_RANK(vict) = 0; save_char(vict, NOWHERE); /* now remove the player from the petition list */ remove_applicant(cptr, vict); save_clans(); return; }
void area_update( void ) { area_data* area; room_data* room; struct timeval start; bool save = TRUE; gettimeofday( &start, NULL ); for( int i = 0; i < max_clan; i++ ) if( clan_list[i]->modified ) save_clans( clan_list[i] ); for( area = area_list; area != NULL; area = area->next ) { if( ++area->age < 15 && ( area->nplayer != 0 || area->age < 5 ) ) continue; for( room = area->room_first; room != NULL; room = room->next ) if( !player_in_room( room ) ) { reset_room( room ); save_room_items( room ); } area->age = number_range( 0, 3 ); if( save && area->modified ) { save_area( area ); save = FALSE; } } shop_update( ); pulse_time[ TIME_RESET ] = stop_clock( start ); return; }
void do_write( char_data* ch, char* argument ) { char buf [ MAX_INPUT_LENGTH ]; area_data* area; int number = 0; int flags; if( !get_flags( ch, argument, &flags, "f", "write" ) ) return; if( !strcasecmp( argument, "all" ) ) { if( !has_permission( ch, PERM_WRITE_ALL, TRUE ) ) return; write_all( is_set( &flags, 0 ) ); send( ch, "All files written.\r\n" ); sprintf( buf, "All files written (%s).", ch->descr->name ); info( "", LEVEL_BUILDER, buf, IFLAG_WRITES, 1, ch ); return; } if( fmatches( argument, "areas" ) ) { if( !has_permission( ch, PERM_WRITE_AREAS, TRUE ) ) return; for( area = area_list; area != NULL; area = area->next ) number += save_area( area, is_set( &flags, 0 ) ); if( number > 0 ) { send( ch, "All areas written. ( %d file )\r\n", number ); sprintf( buf, "All areas written (%s).", ch->real_name() ); info( "", LEVEL_BUILDER, buf, IFLAG_WRITES, 1, ch ); } else { send( ch, "No area needed saving.\r\n" ); } return; } if( fmatches( argument, "rtables" ) ) { if( !has_permission( ch, PERM_RTABLES, TRUE ) ) return; save_rtables( ); send( ch, "Rtables written.\r\n" ); sprintf( buf, "Rtables written (%s).", ch->real_name() ); info( "", LEVEL_BUILDER, buf, IFLAG_WRITES, 1, ch ); return; } if( fmatches( argument, "mobs" ) ) { if( !has_permission( ch, PERM_MOBS, TRUE ) ) return; save_mobs( ); send( ch, "Ok.\r\n" ); sprintf( buf, "Mob file written (%s).", ch->real_name() ); info( "", LEVEL_BUILDER, buf, IFLAG_WRITES, 1, ch ); return; } if( fmatches( argument, "objects" ) ) { if( !has_permission( ch, PERM_OBJECTS, TRUE ) ) return; save_objects( ); send( ch, "Ok.\r\n" ); sprintf( buf, "Object file written (%s).", ch->real_name() ); info( "", LEVEL_BUILDER, buf, IFLAG_WRITES, 1, ch ); return; } if( !strcasecmp( argument, "notes" ) ) { save_notes( -1 ); send( ch, "All noteboards written.\r\n" ); return; } if( !strcasecmp( argument, "shops" ) ) { if( !has_permission( ch, PERM_ROOMS, TRUE ) ) return; save_shops( ); send( "Ok.\r\n", ch ); sprintf( buf, "Shop file written (%s).", ch->real_name() ); info( "", LEVEL_IMMORTAL, buf , IFLAG_WRITES, 1, ch ); return; } if( !strcasecmp( argument, "tables" ) ) { if( !has_permission( ch, PERM_MISC_TABLES ) && !has_permission( ch, PERM_SOCIALS, TRUE ) ) return; save_tables( ); send( "Ok.\r\n", ch ); sprintf( buf, "Table file written (%s).", ch->real_name() ); info( "", LEVEL_IMMORTAL, buf, IFLAG_WRITES, 1, ch ); return; } if( !strcasecmp( argument, "clans" ) ) { if( !has_permission( ch, PERM_CLANS, TRUE ) ) return; save_clans( ); send( ch, "Ok.\r\n" ); sprintf( buf, "Clan files written (%s).", ch->real_name() ); info( "", LEVEL_IMMORTAL, buf, IFLAG_WRITES, 1, ch ); return; } if( !strcasecmp( argument, "lists" ) ) { if( !has_permission( ch, PERM_LISTS, TRUE ) ) return; save_lists( ); send( "Ok.\r\n", ch ); sprintf( buf, "Table file written (%s).", ch->real_name() ); info( "", LEVEL_IMMORTAL, buf , IFLAG_WRITES, 1, ch ); return; } if( !strcasecmp( argument, "trainers" ) ) { if( !IS_IMMORTAL( ch ) ) { send( "You don't have permission.", ch ); return; } save_trainers( ); send( "Ok.\r\n", ch ); sprintf( buf, "Trainer file written (%s).", ch->real_name() ); info( "", LEVEL_BUILDER, buf, IFLAG_WRITES, 1, ch ); return; } if( !strcasecmp( argument, "help" ) ) { if( !has_permission( ch, PERM_HELP_FILES, TRUE ) ) return; if( !save_help( ch ) ) send( ch, "Help was not modified so was not saved.\r\n" ); return; } if( !strcasecmp( argument, "quests" ) ) { if( get_trust( ch ) < LEVEL_QUEST ) { send( ch, "You don't have permission." ); return; } save_quests( ); send( ch, "Ok.\r\n" ); sprintf( buf, "Quest file written (%s).", ch->real_name() ); info( "", LEVEL_BUILDER, buf, IFLAG_WRITES, 1, ch ); return; } if( !strcasecmp( argument, "w3" ) ) { w3_help( ); send( ch, "Webpage Updated.\r\n" ); return; } if( *argument != '\0' ) { send( ch, "What do you want to write?\r\n" ); return; } if( can_edit( ch, ch->in_room ) ) { if( !ch->in_room->area->modified ) { send( "Area has not been modified so was not saved.\r\n", ch ); } else { save_area( ch->in_room->area ); send( ch, "Area written.\r\n" ); } } }