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);
}
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 ) );