/**************************************************************************** * ResortMUD Version 5.0 was mainly programmed by Ntanel, Garinan, Josh, * * Badastaz, Digifuzz, Kratas, Scion, Shogar and Tagith. * * ------------------------------------------------------------------------ * * Copyright (C) 1996 - 2001 Haslage Net Electronics: MudWorld of Lorain, * * Ohio. ALL RIGHTS RESERVED See /doc/RMLicense.txt for more details. * ****************************************************************************/ /* * Remort Code * Allows players to switch classes * Kratas */ #include <string.h> #include "mud.h" void do_remort( CHAR_DATA * ch, char *argument ) { int x; char arg[MAX_INPUT_LENGTH]; char buf[MAX_STRING_LENGTH]; bool found = FALSE; if( IS_NPC( ch ) ) { send_to_char( "Sorry, but mobs just can't remort!\r\n", ch ); return; } if( argument[0] == '\0' ) { buf[0] = '\0'; send_to_char( "Classes you can choose from:\r\n", ch ); for( x = 0; x < MAX_CLASS; x++ ) { if( IS_SET( race_table[ch->race]->class_restriction, 1 << x ) ) continue; if( x != ch->class && x != ch->class2 && str_cmp( class_table[x]->who_name, "Dragon" ) ) { if( x == 4 ) x++; if( strlen( buf ) + strlen( class_table[x]->who_name ) > 77 ) { strcat( buf, "\r\n" ); send_to_char( buf, ch ); buf[0] = '\0'; } else strcat( buf, " " ); strcat( buf, class_table[x]->who_name ); } } strcat( buf, "\r\n" ); send_to_char( buf, ch ); return; } if( ch->level < LEVEL_PCAVATAR ) { send_to_char( "You can't remort yet.\r\n", ch ); return; } if( ch->level3 != -1 ) { send_to_char( "You can't remort anymore!\r\n", ch ); return; } argument = one_argument( argument, arg ); for( x = 0; x < MAX_CLASS; x++ ) { if( IS_SET( race_table[ch->race]->class_restriction, 1 << x ) ) continue; if( !str_cmp( class_table[x]->who_name, arg ) ) { found = TRUE; break; } } if( !found ) { ch_printf( ch, "There is no such class %s.\r\n", arg ); return; } if( ch->class == x || ( ch->class2 == x && ch->level2 >= 0 ) ) { send_to_char( "But you're already that class.\r\n", ch ); return; } if( ch->level2 == -1 ) { ch->level2 = ch->level; ch->level = 1; ch->class2 = ch->class; ch->class = x; } else { if( ch->level != 100 && ch->level2 != 100 ) { send_to_char( "Both of your classes must be level 100 to do this.\r\n", ch ); return; } ch->level3 = ch->level2; ch->level2 = ch->level; ch->level = 1; ch->class3 = ch->class2; ch->class2 = ch->class; ch->class = x; } de_equip_char( ch ); /* * Now setup stats */ ch->max_hit = 20; ch->hit = ch->max_hit + race_table[ch->race]->hit; ch->max_mana = 100; ch->mana = ch->max_mana + race_table[ch->race]->mana; ch->max_move = 100; ch->move = ch->max_move; ch->exp = 0; // re_equip_char( ch ); save_char_obj( ch ); DISPOSE( ch->pcdata->rank ); ch->pcdata->rank = str_dup( "" ); ch_printf( ch, "You are now a %s %s.\r\n", race_table[ch->race]->race_name, class_table[x]->who_name ); sprintf( buf, "%s has just remorted!", ch->name ); do_info( NULL, buf ); char_from_room( ch ); char_to_room( ch, get_room_index( ROOM_VNUM_SCHOOL ) ); do_look( ch, "auto" ); }