[CODE] Clan deletion

From: Chuck Reed (master@I-55.COM)
Date: 07/07/98


I'm having a rough time with deleting clans because everytime I do, it
completely screws the player_table up (I think).  After I issue the command
to delete a clan, I can't mail or do other happy things like that.
I've attached then entire function below.  If anyone sees where this may be
getting stuffy, please gimme a holler (or if you need to see branching
functions).

void clan_destroy (struct char_data *ch, char *arg)
{
   int i,j;
   extern int top_of_p_table;
   struct char_file_u chdata;
   struct char_data *victim=NULL;

   if (!*arg) {
      send_clan_format(ch);
      return;
     }

   i = atoi(arg);

   if (i < 0 || i > num_of_clans - 1) {
     send_to_char("Unknown clan.\r\n", ch);
     return;
    }
   if(GET_LEVEL(ch)<LVL_CLAN_GOD) {
     send_to_char("Your not mighty enough to destroy clans!\r\n", ch);
     return;
    }

   if(i == 0) {
     send_to_char("You can't delete the 0 placeholder!\r\n", ch);
     return;
   }

for (j = 0; j <= top_of_p_table; j++) {
  if((victim=is_playing((player_table +j)->name))) {
    if(GET_CLAN(victim)== i) {
      GET_CLAN(victim)= -1;
      GET_CLAN_RANK(victim)=-1;
      save_char(victim, victim->in_room);
     }
    else if(GET_CLAN(victim) > i)
      GET_CLAN(victim) -= 1;
    }
  else {
    load_char((player_table + j)->name, &chdata);
    if(chdata.player_specials_saved.clan== i) {
      chdata.player_specials_saved.clan=-1;
      chdata.player_specials_saved.clan_rank=-1;
      save_char_file_u(chdata);
     }
    else if(chdata.player_specials_saved.clan > i) {
       chdata.player_specials_saved.clan -= 1;
       save_char_file_u(chdata);
      }
    }
   }

 memset(&clan[i], sizeof(struct clan_info), 0);
 for (j = i; j < num_of_clans - 1; j++) {
   clan[j] = clan[j + 1];
   clan[j].number = j - 1;
  }

 num_of_clans--;
 send_to_char("Clan deleted.\r\n", ch);
 save_clans();
 return;
}


     +------------------------------------------------------------+
     | Ensure that you have read the CircleMUD Mailing List FAQ:  |
     | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
     +------------------------------------------------------------+



This archive was generated by hypermail 2b30 : 12/15/00 PST