merc.h -) add this to merc.h somewhere /* Flags for wpn profs */ #define WPNPROF_UNARM 1 #define WPNPROF_SLICE 2 #define WPNPROF_STAB 4 #define WPNPROF_SLASH 8 #define WPNPROF_WHIP 16 #define WPNPROF_CLAW 32 #define WPNPROF_BLAST 64 #define WPNPROF_POUND 128 #define WPNPROF_CRUSH 256 #define WPNPROF_GREP 512 #define WPNPROF_BITE 1024 #define WPNPROF_PIERCE 2048 #define WPNPROF_SUCK 4096 #define MAX_WPNPROF 8192 later on in merc.h... dun dun dun.... -place these two in struct char_data int pcwpnprof; int pcmaxwpnprof; kav_fight.c -)Throw this in void improve_wpn in kav_fight.c if ( IS_SET( ch->pcwpnprof, WPNPROF_SLICE ) && dtype == WPN_SLICE ) max_skl += 100; if ( IS_SET( ch->pcwpnprof, WPNPROF_UNARM ) && dtype == WPN_UNARM ) max_skl += 100; if ( IS_SET( ch->pcwpnprof, WPNPROF_STAB ) && dtype == WPN_STAB ) max_skl += 100; if ( IS_SET( ch->pcwpnprof, WPNPROF_SLASH ) && dtype == WPN_SLASH ) max_skl += 100; if ( IS_SET( ch->pcwpnprof, WPNPROF_WHIP ) && dtype == WPN_WHIP ) max_skl += 100; if ( IS_SET( ch->pcwpnprof, WPNPROF_CLAW ) && dtype == WPN_CLAW ) max_skl += 100; if ( IS_SET( ch->pcwpnprof, WPNPROF_BLAST ) && dtype == WPN_BLAST ) max_skl += 100; if ( IS_SET( ch->pcwpnprof, WPNPROF_POUND ) && dtype == WPN_POUND ) max_skl += 100; if ( IS_SET( ch->pcwpnprof, WPNPROF_CRUSH ) && dtype == WPN_CRUSH ) max_skl += 100; if ( IS_SET( ch->pcwpnprof, WPNPROF_GREP ) && dtype == WPN_GREP ) max_skl += 100; if ( IS_SET( ch->pcwpnprof, WPNPROF_BITE ) && dtype == WPN_BITE ) max_skl += 100; if ( IS_SET( ch->pcwpnprof, WPNPROF_PIERCE ) && dtype == WPN_PIERCE ) max_skl += 100; if ( IS_SET( ch->pcwpnprof, WPNPROF_SUCK ) && dtype == WPN_SUCK ) max_skl += 100; random c file. -)throw this in one of ur c files, doesnt really matter which.... void do_prof(CHAR_DATA * ch, char *argument) { char arg1[MAX_STRING_LENGTH]; char buf[MSL]; argument = one_argument( argument, arg1 ); if (IS_NPC(ch))return; if ( arg1[0] == '\0' ) { send_to_char("#0 Slash, Slice, Pound, Crush, Grep, Bite, Unarmed, Pierce, Suck, Blast, Claw, Whip, Stab..\n\r",ch); return; } if (ch->pcmaxwpnprof >= 3) { send_to_char(" You may only have 3 weapon proficiencies \n\r",ch); return; } if (!str_cmp(arg1,"slash")) { if (IS_SET(ch->pcwpnprof, WPNPROF_SLASH)) { send_to_char("#0 You already have Slash proficiency\n\r",ch); return; } else { ch->pcmaxwpnprof++; SET_BIT(ch->pcwpnprof, WPNPROF_SLASH); send_to_char("#0 You now have Slash proficiency\n\r",ch); return; } } else if (!str_cmp(arg1,"slice")) { if (IS_SET(ch->pcwpnprof, WPNPROF_SLICE)) { send_to_char("#0 You already have Slice proficiency\n\r",ch); return; } else { ch->pcmaxwpnprof++; SET_BIT(ch->pcwpnprof, WPNPROF_SLICE); send_to_char("#0 You now have Slice proficiency\n\r",ch); return; } } else if (!str_cmp(arg1,"pound")) { if (IS_SET(ch->pcwpnprof, WPNPROF_POUND)) { send_to_char("#0 You already have Pound proficiency\n\r",ch); return; } else { ch->pcmaxwpnprof++; SET_BIT(ch->pcwpnprof, WPNPROF_POUND); send_to_char("#0 You now have Pound proficiency\n\r",ch); return; } } else if (!str_cmp(arg1,"crush")) { if (IS_SET(ch->pcwpnprof, WPNPROF_CRUSH)) { send_to_char("#0 You already have Crush proficiency\n\r",ch); return; } else { ch->pcmaxwpnprof++; SET_BIT(ch->pcwpnprof, WPNPROF_CRUSH); send_to_char("#0 You now have Crush proficiency\n\r",ch); return; } } else if (!str_cmp(arg1,"grep")) { if (IS_SET(ch->pcwpnprof, WPNPROF_GREP)) { send_to_char("#0 You already have Grep proficiency\n\r",ch); return; } else { ch->pcmaxwpnprof++; SET_BIT(ch->pcwpnprof, WPNPROF_GREP); send_to_char("#0 You now have Grep proficiency\n\r",ch); return; } } else if (!str_cmp(arg1,"bite")) { if (IS_SET(ch->pcwpnprof, WPNPROF_BITE)) { send_to_char("#0 You already have Bite proficiency.\n\r",ch); return; } else { ch->pcmaxwpnprof++; SET_BIT(ch->pcwpnprof, WPNPROF_BITE); send_to_char("#0 You now have Bite proficiency.\n\r",ch); return; } } else if (!str_cmp(arg1,"unarmed")) { if (IS_SET(ch->pcwpnprof, WPNPROF_UNARM)) { send_to_char("#0 You already have Hand-To-Hand proficiency.\n\r",ch); return; } else { ch->pcmaxwpnprof++; SET_BIT(ch->pcwpnprof, WPNPROF_UNARM); send_to_char("#0 You now have Unarmed proficiency.\n\r",ch); return; } } else if (!str_cmp(arg1,"pierce")) { if (IS_SET(ch->pcwpnprof, WPNPROF_PIERCE)) { send_to_char("#0 You already have Dagger Proficiency.\r",ch); return; } else { ch->pcmaxwpnprof++; SET_BIT(ch->pcwpnprof, WPNPROF_PIERCE); send_to_char("#0 You now have Pierce proficiency\n\r",ch); return; } } else if (!str_cmp(arg1,"suck")) { if (IS_SET(ch->pcwpnprof, WPNPROF_SUCK)) { send_to_char("#0 You already have Suck proficiency\n\r",ch); return; } else { ch->pcmaxwpnprof++; SET_BIT(ch->pcwpnprof, WPNPROF_SUCK); send_to_char("#0 You now have Suck proficiency\n\r",ch); return; } } else if (!str_cmp(arg1,"blast")) { if (IS_SET(ch->pcwpnprof, WPNPROF_BLAST)) { send_to_char("#0 You already have Blast proficiency\n\r",ch); return; } else { ch->pcmaxwpnprof++; SET_BIT(ch->pcwpnprof, WPNPROF_BLAST); send_to_char("#0 You now have Blast proficiency\n\r",ch); return; } } else if (!str_cmp(arg1,"claw")) { if (IS_SET(ch->pcwpnprof, WPNPROF_CLAW)) { send_to_char("#0 You already have Claw proficiency\n\r",ch); return; } else { ch->pcmaxwpnprof++; SET_BIT(ch->pcwpnprof, WPNPROF_CLAW); send_to_char("#0 You now have Claw proficiency\n\r",ch); return; } } else if (!str_cmp(arg1,"whip")) { if (IS_SET(ch->pcwpnprof, WPNPROF_WHIP)) { send_to_char("#0 You already have Whip proficiency\n\r",ch); return; } else { ch->pcmaxwpnprof++; SET_BIT(ch->pcwpnprof, WPNPROF_WHIP); send_to_char("#0 You now have Whip proficiency\n\r",ch); return; } } else if (!str_cmp(arg1,"stab")) { if (IS_SET(ch->pcwpnprof, WPNPROF_STAB)) { send_to_char("#0 You already have Stab proficiency\n\r",ch); return; } else { ch->pcmaxwpnprof++; SET_BIT(ch->pcwpnprof, WPNPROF_STAB); send_to_char("#0 You now have Stab proficiency\n\r",ch); return; } } return; } Save.c void fwrite_char fprintf(fp, "Pcwpnprof %d\n", ch->pcwpnprof); fprintf(fp, "Pcmaxwpnprof %d\n", ch->pcmaxwpnprof); bool load_char_short ch->pcwpnprof = 0; ch->pcmaxwpnprof = 0; bool load_char_obj ch->pcwpnprof = 0; ch->pcmaxwpnprof = 0; void fread_char KEY("Pcwpnprof", ch->pcwpnprof, fread_number( fp ) ); KEY("Pcmaxwpnprof", ch->pcmaxwpnprof, fread_number( fp ) );