Cotn 4.5 Live Version (My char gets +2 profs fromĀ  being Fighter Class)

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("#D Slash, Slice, Pound, Crush, Grep, Bite, Unarmed, Pierce, Suck, Blast, Claw, Whip, Stab.\n\r",ch);
        send_to_char("#C  <<<--= [^cProficiencies#n#C] #C=-->>>#n \n\r\n\r",ch);
        send_to_char("#c Players are allowed up to three weapon proficiencies.#n \n\r",ch);
        send_to_char("#c Each will give an additional +100 to a weapon's skill level cap.#n \n\r\n\r",ch);


        send_to_char("#D   unarmed, longsword, spear, broadsword, whip, staff, \n\r",ch);
        send_to_char("#D   knife, warhammer, mace, axe, twohanded, shortsword, bastardsword, \n\r",ch);
        send_to_char("#D   flail, morningstar, polearm, nunchaku, sickle, dagger. \n\r\n\r",ch);


	if (ch->pcwpnprof > 0)
	{

send_to_char(" #ACurrent: #W",ch); 
    if ( IS_SET( ch->pcwpnprof, WPNPROF_UNARM)) send_to_char("unarmed ",ch); 
    if ( IS_SET( ch->pcwpnprof, WPNPROF_LONGSWORD)) send_to_char("longsword ",ch); 
    if ( IS_SET( ch->pcwpnprof, WPNPROF_SPEAR )) send_to_char("spear ",ch); 
    if ( IS_SET( ch->pcwpnprof, WPNPROF_BROADSWORD))  send_to_char("broadsword ",ch); 
    if ( IS_SET( ch->pcwpnprof, WPNPROF_WHIP)) send_to_char("whip ",ch); 
    if ( IS_SET( ch->pcwpnprof, WPNPROF_STAFF)) send_to_char("staff ",ch); 

    if ( IS_SET( ch->pcwpnprof, WPNPROF_KNIFE)) send_to_char("knife ",ch); 

    if ( IS_SET( ch->pcwpnprof, WPNPROF_WARHAMMER)) send_to_char("warhammer ",ch);
    if ( IS_SET( ch->pcwpnprof, WPNPROF_MACE)) send_to_char("mace ",ch);
    if ( IS_SET( ch->pcwpnprof, WPNPROF_AXE)) send_to_char("axe ",ch);
    if ( IS_SET( ch->pcwpnprof, WPNPROF_TWOHANDED)) send_to_char("twohanded ",ch);

    if ( IS_SET( ch->pcwpnprof, WPNPROF_SHORTSWORD)) send_to_char("shortsword ",ch);
    if ( IS_SET( ch->pcwpnprof, WPNPROF_BASTARDSWORD)) send_to_char("bastardsword ",ch);
    if ( IS_SET( ch->pcwpnprof, WPNPROF_FLAIL)) send_to_char("flail ",ch);
    if ( IS_SET( ch->pcwpnprof, WPNPROF_MORNINGSTAR)) send_to_char("spear ",ch);
    if ( IS_SET( ch->pcwpnprof, WPNPROF_POLEARM)) send_to_char("polearm ",ch);
    if ( IS_SET( ch->pcwpnprof, WPNPROF_NUNCHAKU)) send_to_char("nunchaku ",ch);
    if ( IS_SET( ch->pcwpnprof, WPNPROF_SICKLE)) send_to_char("sickle ",ch);
    if ( IS_SET( ch->pcwpnprof, WPNPROF_DAGGER)) send_to_char("dagger ",ch);

send_to_char(" #n\n\r",ch); 

send_to_char(" #n\n\r",ch); 
	}
        send_to_char(" #c(#Aprof #Wclear#c) to reset weapon proficiencies.  #n\n\r",ch);
        return;
    }



/*
#define WPNPROF_UNARM     	  1
#define WPNPROF_LONGSWORD         2
#define WPNPROF_SPEAR             4
#define WPNPROF_BROADSWORD        8
#define WPNPROF_WHIP              16
#define WPNPROF_STAFF             32
#define WPNPROF_KNIFE             64
#define WPNPROF_WARHAMMER         128
#define WPNPROF_MACE              256
#define WPNPROF_AXE               512
#define WPNPROF_TWOHANDED         1024
#define WPNPROF_SHORTSWORD        2048
#define WPNPROF_BASTARDSWORD      4096
#define WPNPROF_FLAIL             8192
#define WPNPROF_MORNINGSTAR       16384
#define WPNPROF_POLEARM           32768

#define WPNPROF_CLUB              65536
#define WPNPROF_GUN               131072
#define WPNPROF_NUNCHAKU          262144

#define WPNPROF_SICKLE            524288
#define WPNPROF_DAGGER            1048576
*/
    if (!str_cmp(arg1,"clear"))
    {
	ch->pcmaxwpnprof = 0;
        ch->pcwpnprof = 0;
        send_to_char("Proficiencies reset.\n\r",ch);
        return;
    }


    if (ch->pcmaxwpnprof >= 3 && !IS_CLASS(ch, CLASS_FIGHTER))
    {
        send_to_char(" You may only have 3 weapon proficiencies \n\r",ch);
        return;
    }
    if (ch->pcmaxwpnprof >= 5 && IS_CLASS(ch, CLASS_FIGHTER))
    {
        send_to_char(" Fighter may only have 5 weapon proficiencies \n\r",ch);
        return;
    }


    if (!str_cmp(arg1,"unarmed"))
    {
        if (IS_SET(ch->pcwpnprof, WPNPROF_UNARM))
        {
            send_to_char("#D You already have Hand-To-Hand proficiency.\n\r",ch);
            return;
        }
        else
        {
            ch->pcmaxwpnprof++;
            SET_BIT(ch->pcwpnprof, WPNPROF_UNARM);
            send_to_char("#D You now have Hand-to-hand proficiency.\n\r",ch);
            return;
        }
    }


    else if (!str_cmp(arg1,"longsword"))
    {
        if (IS_SET(ch->pcwpnprof, WPNPROF_LONGSWORD))
        {
            send_to_char("#D You already have longsword proficiency\n\r",ch);
            return;
        }
        else
        {
            ch->pcmaxwpnprof++;
            SET_BIT(ch->pcwpnprof, WPNPROF_LONGSWORD);
            send_to_char("#D You now have longsword proficiency\n\r",ch);
            return;
        }
    }
    else if (!str_cmp(arg1,"spear"))
    {
        if (IS_SET(ch->pcwpnprof, WPNPROF_SPEAR))
        {
            send_to_char("#D You already have spear proficiency\n\r",ch);
            return;
        }
        else
        {
            ch->pcmaxwpnprof++;
            SET_BIT(ch->pcwpnprof, WPNPROF_SPEAR);
            send_to_char("#D You now have spear proficiency\n\r",ch);
            return;
        }
    }
    else if (!str_cmp(arg1,"broadsword"))
    {
        if (IS_SET(ch->pcwpnprof, WPNPROF_BROADSWORD))
        {
            send_to_char("#D You already have broadsword proficiency\n\r",ch);
            return;
        }
        else
        {
            ch->pcmaxwpnprof++;
            SET_BIT(ch->pcwpnprof, WPNPROF_BROADSWORD);
            send_to_char("#D You now have broadsword proficiency\n\r",ch);
            return;
        }
    }
    else if (!str_cmp(arg1,"whip"))
    {
        if (IS_SET(ch->pcwpnprof, WPNPROF_WHIP))
        {
            send_to_char("#D You already have whip proficiency\n\r",ch);
            return;
        }
        else
        {
            ch->pcmaxwpnprof++;
            SET_BIT(ch->pcwpnprof, WPNPROF_WHIP);
            send_to_char("#D You now have whip proficiency\n\r",ch);
            return;
        }
    }
    else if (!str_cmp(arg1,"staff"))
    {
        if (IS_SET(ch->pcwpnprof, WPNPROF_STAFF))
        {
            send_to_char("#D You already have staff proficiency\n\r",ch);
            return;
        }
        else
        {
            ch->pcmaxwpnprof++;
            SET_BIT(ch->pcwpnprof, WPNPROF_STAFF);
            send_to_char("#D You now have staff proficiency\n\r",ch);
            return;
        }
    }

    else if (!str_cmp(arg1,"knife"))
    {
        if (IS_SET(ch->pcwpnprof, WPNPROF_KNIFE))
        {
            send_to_char("#D You already have knife proficiency\n\r",ch);
            return;
        }
        else
        {
            ch->pcmaxwpnprof++;
            SET_BIT(ch->pcwpnprof, WPNPROF_KNIFE);
            send_to_char("#D You now have knife proficiency\n\r",ch);
            return;
        }
    }
    else if (!str_cmp(arg1,"warhammer"))
    {
        if (IS_SET(ch->pcwpnprof, WPNPROF_WARHAMMER))
        {
            send_to_char("#D You already have warhammer proficiency\n\r",ch);
            return;
        }
        else
        {
            ch->pcmaxwpnprof++;
            SET_BIT(ch->pcwpnprof, WPNPROF_WARHAMMER);
            send_to_char("#D You now have warhammer proficiency\n\r",ch);
            return;
        }
    }
    else if (!str_cmp(arg1,"mace"))
    {
        if (IS_SET(ch->pcwpnprof, WPNPROF_MACE))
        {
            send_to_char("#D You already have mace proficiency\n\r",ch);
            return;
        }
        else
        {
            ch->pcmaxwpnprof++;
            SET_BIT(ch->pcwpnprof, WPNPROF_MACE);
            send_to_char("#D You now have mace proficiency\n\r",ch);
            return;
        }
    }


    else if (!str_cmp(arg1,"axe"))
    {
        if (IS_SET(ch->pcwpnprof, WPNPROF_AXE))
        {
            send_to_char("#D You already have axe proficiency\n\r",ch);
            return;
        }
        else
        {
            ch->pcmaxwpnprof++;
            SET_BIT(ch->pcwpnprof, WPNPROF_AXE);
            send_to_char("#D You now have axe proficiency\n\r",ch);
            return;
        }
    }
    else if (!str_cmp(arg1,"twohanded"))
    {
        if (IS_SET(ch->pcwpnprof, WPNPROF_TWOHANDED))
        {
            send_to_char("#D You already have twohanded proficiency\n\r",ch);
            return;
        }
        else
        {
            ch->pcmaxwpnprof++;
            SET_BIT(ch->pcwpnprof, WPNPROF_TWOHANDED);
            send_to_char("#D You now have twohanded proficiency\n\r",ch);
            return;
        }
    }
    else if (!str_cmp(arg1,"Shortsword"))
    {
        if (IS_SET(ch->pcwpnprof, WPNPROF_SHORTSWORD))
        {
            send_to_char("#D You already have shortsword proficiency\n\r",ch);
            return;
        }
        else
        {
            ch->pcmaxwpnprof++;
            SET_BIT(ch->pcwpnprof, WPNPROF_SHORTSWORD);
            send_to_char("#D You now have shortsword proficiency\n\r",ch);
            return;
        }
    }
    else if (!str_cmp(arg1,"bastardsword"))
    {
        if (IS_SET(ch->pcwpnprof, WPNPROF_BASTARDSWORD))
        {
            send_to_char("#D You already have bastardsword proficiency\n\r",ch);
            return;
        }
        else
        {
            ch->pcmaxwpnprof++;
            SET_BIT(ch->pcwpnprof, WPNPROF_BASTARDSWORD);
            send_to_char("#D You now have bastardsword proficiency\n\r",ch);
            return;
        }
    }
    else if (!str_cmp(arg1,"flail"))
    {
        if (IS_SET(ch->pcwpnprof, WPNPROF_FLAIL))
        {
            send_to_char("#D You already have flail proficiency\n\r",ch);
            return;
        }
        else
        {
            ch->pcmaxwpnprof++;
            SET_BIT(ch->pcwpnprof, WPNPROF_FLAIL);
            send_to_char("#D You now have flail proficiency\n\r",ch);
            return;
        }
    }
    else if (!str_cmp(arg1,"morningstar"))
    {
        if (IS_SET(ch->pcwpnprof, WPNPROF_MORNINGSTAR))
        {
            send_to_char("#D You already have morningstar proficiency\n\r",ch);
            return;
        }
        else
        {
            ch->pcmaxwpnprof++;
            SET_BIT(ch->pcwpnprof, WPNPROF_MORNINGSTAR);
            send_to_char("#D You now have morningstar proficiency\n\r",ch);
            return;
        }
    }
    else if (!str_cmp(arg1,"polearm"))
    {
        if (IS_SET(ch->pcwpnprof, WPNPROF_POLEARM))
        {
            send_to_char("#D You already have polearm proficiency\n\r",ch);
            return;
        }
        else
        {
            ch->pcmaxwpnprof++;
            SET_BIT(ch->pcwpnprof, WPNPROF_POLEARM);
            send_to_char("#D You now have polearm proficiency\n\r",ch);
            return;
        }
    }

    else if (!str_cmp(arg1,"nunchaku"))
    {
        if (IS_SET(ch->pcwpnprof, WPNPROF_NUNCHAKU))
        {
            send_to_char("#D You already have nunchaku proficiency\n\r",ch);
            return;
        }
        else
        {
            ch->pcmaxwpnprof++;
            SET_BIT(ch->pcwpnprof, WPNPROF_NUNCHAKU);
            send_to_char("#D You now have nunchaku proficiency\n\r",ch);
            return;
        }
    }
    else if (!str_cmp(arg1,"sickle"))
    {
        if (IS_SET(ch->pcwpnprof, WPNPROF_SICKLE))
        {
            send_to_char("#D You already have sickle proficiency\n\r",ch);
            return;
        }
        else
        {
            ch->pcmaxwpnprof++;
            SET_BIT(ch->pcwpnprof, WPNPROF_SICKLE);
            send_to_char("#D You now have sickle proficiency\n\r",ch);
            return;
        }
    }
    else if (!str_cmp(arg1,"dagger"))
    {
        if (IS_SET(ch->pcwpnprof, WPNPROF_DAGGER))
        {
            send_to_char("#D You already have dagger proficiency\n\r",ch);
            return;
        }
        else
        {
            ch->pcmaxwpnprof++;
            SET_BIT(ch->pcwpnprof, WPNPROF_DAGGER);
            send_to_char("#D You now have dagger proficiency\n\r",ch);
            return;
        }
    }
/*
    else if (!str_cmp(arg1,""))
    {
        if (IS_SET(ch->pcwpnprof, WPNPROF_))
        {
            send_to_char("#D You already have x proficiency\n\r",ch);
            return;
        }
        else
        {
            ch->pcmaxwpnprof++;
            SET_BIT(ch->pcwpnprof, WPNPROF_);
            send_to_char("#D You now have  proficiency\n\r",ch);
            return;
        }
    }
*/


    return;
}