/
blademaster/
BladeMaster.txt by Xrakisis


// fight.c
 if (dt == gsn_retort)
  {
    int x;

    act("You see a hole in $N's defenses and take advantage!", ch, NULL, victim, TO_CHAR);
    act("$n takes advantage of your failure to defend yourself.", ch, NULL, victim, TO_VICT);
    act("$n gracefuly hits $N, taking advantage of a weak spot in their defence.", ch, NULL, victim, TO_NOTVICT);

    x = number_range(1, 3);
    while (--x >= 0) one_hit(ch, victim, dt, 1);
    return;
  }

  if (!IS_NPC(ch) && IS_SET(ch->pcdata->powers[BM_BITS], BLADE_RETORT) && IS_CLASS(ch, CLASS_BLADE_MASTER))
  multi_hit(ch,victim,gsn_retort);



/* update.c */
void update_blade args((CHAR_DATA * ch));

                                if (IS_CLASS(ch, CLASS_BLADE_MASTER))
                                {
                                        if (IS_ITEMAFF(ch, ITEMA_REGENERATE))
                                                update_arti_regen(ch);
                                        update_blade(ch);
                                }
void update_blade(CHAR_DATA * ch)
{
        if (ch->hit < ch->max_hit || ch->mana < ch->max_mana
            || ch->move < ch->max_move)
        {
                werewolf_regen(ch, 2);
                regen_limb(ch);
        }
        return;
}


/* fight.c */
X) void multi_hit(CHAR_DATA * ch, CHAR_DATA * victim, int dt)
   
     else if (IS_CLASS(ch, CLASS_BLADE_MASTER))
        {
            if (ch->pcdata->powers[WEAPONSKILL] > 8)
            {
                one_hit(ch, victim, gsn_lightningslash, 1);
                one_hit(ch, victim, gsn_lightningslash, 1);
            }
        }


	else if (IS_CLASS(ch, CLASS_BLADE_MASTER) && IS_SET(ch->newbits2, NEW2_AUTOATTACK))
	{
	one_hit(ch,victim,gsn_lightningslash,1);
	one_hit(ch,victim,gsn_lightningslash,1);
	}


X)number_attacks
Place this both under if is npc victim and if !isnpc victim

                else if (IS_CLASS(ch, CLASS_BLADE_MASTER))
                    count += ch->pcdata->powers[WEAPONSKILL] / 1.6;


X)void one_hit(CHAR_DATA * ch, CHAR_DATA * victim, int dt, int handtype)
          else if (IS_CLASS(ch, CLASS_BLADE_MASTER))
          {
            if (ch->pcdata->powers[WEAPONSKILL] > 4)
              dam *= 1.4;
            if (ch->pcdata->powers[WEAPONSKILL] > 8)
              dam *= 1.6;
            if (IS_CLASS(victim, CLASS_SAMURAI))
              dam *= 1.2;
          }

Its real easy to do the fight.c stuff for my blademaster class,
i was kinda lazy and i made their melee variable be the same as 
the uk one for two reasons. A) so all their fight stuff would be 
the same as UK's and B) so might be balanced from the start.
So just go through fight.c and search out every entry for weaponskill
and make a duplicate entry for blademaster.. what could be easyer..
yes i know, you dont have to tell me, im lazy!
-Xrakisis


/* fight.c */
update damcap
	  else if (IS_CLASS(ch, CLASS_BLADE_MASTER) && IS_SET(ch->newbits2, NEW2_DAMCAP))
			max_dam += 700;



I placed in here my entire group gain function for a few reasons
i wanted you to see exactly where to place the blade master stuff
in your fight.c, cant think of the other reasons at this time :P


void group_gain(CHAR_DATA * ch, CHAR_DATA * victim)
{
        char      buf[MAX_STRING_LENGTH];
        char      buf2[MAX_STRING_LENGTH];
        CHAR_DATA *gch;
        CHAR_DATA *lch;
        CHAR_DATA *mount;
        OBJ_DATA *familiar;
        OBJ_INDEX_DATA *familiar2;
        bool      warlord = FALSE;
        int       xp;
        int       temp = 0;
        int       members;
        int       expneeded = 0;
        int       familiar_exp;
        int       ultima = 78019;
        int       bladeexp;
	int	  bladeexpneeded = 0;
	int	  bladeexpgain;

	bladeexp = ch->bladeexp;

        /*
         * Monsters don't get kill xp's or alignment changes.
         * P-killing doesn't help either.
         * Dying of mortal wounds or poison doesn't give xp to anyone!
         */
        if ((IS_NPC(ch) && (mount = ch->mount) == NULL) || victim == ch)
                return;
        members = 0;
        for (gch = ch->in_room->people; gch != NULL; gch = gch->next_in_room)
        {
                if (IS_NPC(gch))
                        continue;
                if (is_same_group(gch, ch))
                        members++;
        }
        if (members == 0)
        {
                bug("Group_gain: members.", members);
                members = 1;
        }
        if (IS_NPC(victim) && victim->pIndexData->vnum == MOB_VNUM_WARLORD)
                warlord = TRUE;
        lch = (ch->leader != NULL) ? ch->leader : ch;
        for (gch = ch->in_room->people; gch != NULL; gch = gch->next_in_room)
        {
                int       xp_modifier = 100;

                if (IS_NPC(gch))
                        continue;
                if (!is_same_group(gch, ch))
                        continue;
                xp = xp_compute(gch, victim) * 2.5;

                xp *= ccenter[CCENTER_EXP_LEVEL];
                xp /= 100;

                xprintf(buf2, "#0-=-=-= #WExp modifiers  #G:");
                if ((IS_EVIL(gch) && IS_GOOD(victim))
                    || (IS_GOOD(gch) && IS_EVIL(victim)))
                {
                        xp_modifier += 25;
                        strcat(buf2, " #Calignment#n");
                }
                if ((IS_EVIL(gch) && IS_EVIL(victim))
                    || (IS_GOOD(gch) && IS_GOOD(victim)))
                {
                        xp_modifier -= 25;
                        strcat(buf2, " #palignment#n");
                }
                if (gch != NULL && gch->desc != NULL)
                {
                        if (gch->desc->out_compress)
                        {
                                xp_modifier += 25;
                                strcat(buf2, " #Cmccp#n");
                        }
                        else if ((get_age(gch) - 17) >= 2)
                        {
                                xp_modifier += 25;
                                strcat(buf2, " #pmccp#n");
                        }
                }
                if ((get_age(gch) - 17) < 2)    /* 4 hours worth of newbie exp. */
                {
                        xp_modifier += 200;
                        strcat(buf2, " #CNewbie#n");
                }
                if (global_exp)
                {
                        xp_modifier += 200;
                        strcat(buf2, " #sDouble exp#n");
                }
                if (gch->tick_timer[TIMER_EXPERIENCE] > 0)
                {
                        xp_modifier += 250;
                        strcat(buf2, " #sFairy#n");
                }
                if (gch->race < 1);
                else if (gch->race < 5)
                {
                        xp_modifier += 25;
                        xp_modifier += UMIN(100, temp / 50);
                        strcat(buf2, " #0status#n");
                }
                else if (gch->race < 10)
                {
                        xp_modifier += 50;
                        xp_modifier += UMIN(100, temp / 50);
                        strcat(buf2, " #cstatus#n");
                }
                else if (gch->race < 15)
                {
                        xp_modifier += 75;
                        xp_modifier += UMIN(100, temp / 50);
                        strcat(buf2, " #Cstatus#n");
                }
                else if (gch->race < 20)
                {
                        xp_modifier += 100;
                        xp_modifier += UMIN(100, temp / 50);
                        strcat(buf2, " #Bstatus#n");
                }
                else if (gch->race < 25)
                {
                        xp += 150;
                        xp_modifier += UMIN(100, temp / 50);
                        strcat(buf2, " #gstatus#n");
                }
                else
                {
                        xp += 200;
                        xp_modifier += UMIN(100, temp / 50);
                        strcat(buf2, " #Gstatus#n");
                }
                if (!IS_NPC(gch) && gch->pcdata->religion != 0)
                {
                        xp_modifier -= 5;
                        strcat(buf2, " #ptithe#n");
                }
                if (!IS_NPC(gch) && gch->pcdata->kingdom != 0)
                {
                        xp_modifier -= 5;
                        strcat(buf2, " #pKingdom Tax#n");
                }
                if (!IS_NPC(gch) && gch->pcdata->time_tick > 49)
                {
                        xp_modifier += gch->pcdata->time_tick / 5;
                        strcat(buf2, " #Caddict#n");
                }
                if (!IS_NPC(gch) && IS_SET(gch->pcdata->tempflag, TEMP_EDGE))
                {
                        xp_modifier += 15;
                        strcat(buf2, " #Cedge#n");
                }
                if (members > 1)
                {
                        strcat(buf2, " #pgrouped#n");
                        xp_modifier *= 100;
                        xp_modifier /= 75 * members;
                }
                strcat(buf2, " #0=-=-=-#n\n\r");
                xp = xp * xp_modifier / 100;
                if (!IS_SET(gch->act, PLR_BRIEF5))
                        send_to_char(buf2, gch);
                xprintf(buf2, "#RTotal modifier #G:#n %d percent bonus\n\r",
                        xp_modifier - 100);
                if (!IS_SET(gch->act, PLR_BRIEF5))
                        send_to_char(buf2, gch);
                if ((get_age(gch) - 17) > 2 && ch->level < 3)
                        xp /= 10;   /* anti mortal exp bot thingie */
                if (gch->exp > 5000000)
                        xp = 5000000;   /* avoid overflow */
                if (xp > ccenter[CCENTER_MAX_EXP])
                        xp = number_range(ccenter[CCENTER_MAX_EXP] * 0.9,
                                          ccenter[CCENTER_MAX_EXP] * 1.1);
                if (warlord)
                        xp = 5000000;

                if ((get_age(gch) - 17) >= 2
                    && !IS_SET(gch->pcdata->jflags, JFLAG_POLICY))
                {
                        xp = 0;
                        send_to_char
                                ("#BYou must accept the policy before you can gain experience [#wHELP POLICY#B]#n\n\r",
                                 gch);
                }
                if (xp < 0)
                        xp = 0;
                xprintf(buf, "#R-->#0You receive #W%d #0experience points.#n\n\r", xp);
                if (ch->generation == 6)
                        expneeded = 13000000;
                else if (ch->generation == 5)
                        expneeded = 150000000;
                else if (ch->generation == 4)
                        expneeded = 400000000;
                else if (ch->generation == 3)
                        expneeded = 900000000;
                else if (ch->generation == 2)
                        expneeded = 1800000000;


    if (IS_CLASS(ch, CLASS_BLADE_MASTER)) // Class by Xrakisis
     {
     if (ch->pcdata->powers[BLADE_SKILL] == 0)
         bladeexpneeded = 50000000;
     else if (ch->pcdata->powers[BLADE_PROWESS] == 0)
         bladeexpneeded = 50000000;
     else if (ch->pcdata->powers[BLADE_MELEE] == 0)
         bladeexpneeded = 50000000;
     else if (ch->pcdata->powers[BLADE_SKILL] == 1)
         bladeexpneeded = 100000000;
     else if (ch->pcdata->powers[BLADE_PROWESS] == 1)
         bladeexpneeded = 100000000;
     else if (ch->pcdata->powers[BLADE_MELEE] == 1)
         bladeexpneeded = 100000000;
     else if (ch->pcdata->powers[BLADE_SKILL] == 2)
         bladeexpneeded = 150000000;
     else if (ch->pcdata->powers[BLADE_PROWESS] == 2)
         bladeexpneeded = 150000000;
     else if (ch->pcdata->powers[BLADE_MELEE] == 2)
         bladeexpneeded = 150000000;
     else if (ch->pcdata->powers[BLADE_SKILL] == 3)
         bladeexpneeded = 150000000;
     else if (ch->pcdata->powers[BLADE_PROWESS] == 3)
         bladeexpneeded = 150000000;
     else if (ch->pcdata->powers[BLADE_MELEE] == 3)
         bladeexpneeded = 150000000;
     else if (ch->pcdata->powers[BLADE_SKILL] == 4)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_PROWESS] == 4)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_MELEE] == 4)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_SKILL] == 5)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_PROWESS] == 5)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_MELEE] == 5)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_SKILL] == 6)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_PROWESS] == 6)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_MELEE] == 6)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_SKILL] == 7)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_PROWESS] == 7)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_MELEE] == 7)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_SKILL] == 8)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_PROWESS] == 8)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_MELEE] == 8)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_SKILL] == 9)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_PROWESS] == 9)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_MELEE] == 9)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_SKILL] == 10)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_PROWESS] == 10)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_MELEE] == 10)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_SKILL] == 11)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_PROWESS] == 11)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_MELEE] == 11)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_SKILL] == 12)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_PROWESS] == 12)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_MELEE] == 12)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_SKILL] == 13)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_PROWESS] == 13)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_MELEE] == 13)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_SKILL] == 14)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_PROWESS] == 14)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_MELEE] == 14)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_SKILL] == 15)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_PROWESS] == 15)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_MELEE] == 15)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_SKILL] == 16)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_PROWESS] == 16)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_MELEE] == 16)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_SKILL] == 17)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_PROWESS] == 17)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_MELEE] == 17)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_SKILL] == 18)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_PROWESS] == 18)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_MELEE] == 18)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_SKILL] == 19)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_PROWESS] == 19)
         bladeexpneeded = 200000000;
     else if (ch->pcdata->powers[BLADE_MELEE] == 19)
         bladeexpneeded = 200000000;
}

                if (!IS_SET(gch->act, PLR_BRIEF5))
                        send_to_char(buf, gch);

                ch->total_exp_gained += xp;
                if ((mount = gch->mount) != NULL)
                        send_to_char(buf, mount);
                gain_exp(gch, xp);

                /*
                 * Familiar Stuff 
                 */

                if ((familiar = get_eq_char(gch, WEAR_FAMILIAR)) != NULL
                    && familiar->item_type == ITEM_FAMILIAR
                    && familiar->value[1] < 99)
                {
                        familiar_exp = (xp * .005);
                        xp -= (familiar_exp);
                        familiar_exp *= (familiar->value[6] * .01);
                        sprintf(buf,
                                "#0- #wYour familiar receives #G%d #wexperience points.#n\n\r",
                                familiar_exp);
                        if (!IS_SET(ch->act, PLR_BRIEF4))
                                stc(buf, gch);
                        familiar->value[5] += familiar_exp;

                        /*
                         * Level Up!
                         */
                        if (familiar->value[5] >=
                            ((familiar->value[1] + 1) * 1000000))
                        {
                                act("$p #yhas gained a level!#n", gch,
                                    familiar, NULL, TO_CHAR);
                                familiar->value[1]++;
                                familiar->value[5] = 0;

                                /*
                                 * Increase Chance to Hit
                                 */
                                if (number_percent() > 50)
                                {
                                        familiar->value[4]++;
                                        act("$p's #yhitroll increases!#n",
                                            gch, familiar, NULL, TO_CHAR);
                                }

                                /*
                                 * Base Damage Increase
                                 */
                                if ((familiar->value[1] % 5) == 0)
                                {
                                        familiar->value[2] +=
                                                number_range(2, 5);
                                        act("$p's #Rbase damage increases!#n",
                                            gch, familiar, NULL, TO_CHAR);
                                }

                                /*
                                 * Learning Ability Increase
                                 */
                                if ((familiar->value[1] % 10) == 0)
                                {
                                        familiar->value[6] +=
                                                number_range(1, 10);
                                        act("$p's #Clearning ability increases!#n", gch, familiar, NULL, TO_CHAR);
                                }
                                if ((familiar->value[0] == 8
                                     && familiar->value[1] >= 50))
                                {
                                        act("$p #Lmetamorphs into the ultimate weapon!!!!#n", gch, familiar, NULL, TO_CHAR);
                                        extract_obj(familiar);
                                        familiar2 = get_obj_index(ultima);
                                        if ((familiar =
                                             create_object(familiar2,
                                                           50)) != NULL)
                                        {
                                                obj_to_char(familiar, gch);
                                        }
                                }
                        }
                }

    if (IS_CLASS(ch, CLASS_BLADE_MASTER) && (ch->pcdata->powers[BLADE_MELEE] < 20
    || ch->pcdata->powers[BLADE_PROWESS] < 20 || ch->pcdata->powers[BLADE_SKILL] < 20))
      {
        bladeexpgain = (xp * .020);
        xp -= (bladeexpgain);
        sprintf(buf, "#0- #wYour Class receives #G%d #wexperience points.#n\n\r",bladeexpgain);
        stc(buf, gch);
	ch->bladeexp += bladeexpgain;

	if (bladeexp >= bladeexpneeded)
	{
     if (ch->pcdata->powers[BLADE_SKILL] == 0)
     {  
         ch->pcdata->powers[BLADE_SKILL] += 1;
         send_to_char("#0Your Skill with a blade is now level #7One#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_PROWESS] == 0)
     {
         ch->pcdata->powers[BLADE_PROWESS] += 1;
         send_to_char("#0Your combat prowess is now level #7One#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_MELEE] == 0)
     {
         ch->pcdata->powers[BLADE_MELEE] += 1;
         send_to_char("#0You bring your BladeMaster Melee to level #7One#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_SKILL] == 1)
     {
         ch->pcdata->powers[BLADE_SKILL] += 1;
         send_to_char("#0Your Skill with a blade is now level #7Two#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_PROWESS] == 1)
     {
         ch->pcdata->powers[BLADE_PROWESS] += 1;
         send_to_char("#0Your combat prowess is now level #7Two#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_MELEE] == 1)
     {
         ch->pcdata->powers[BLADE_MELEE] += 1;
         send_to_char("#0You bring your Blade Master Melee to level #7Two#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_SKILL] == 2)
     {
         ch->pcdata->powers[BLADE_SKILL] += 1;
         send_to_char("#0Your Skill with a blade is now level #7Three#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_PROWESS] == 2)
     {
         ch->pcdata->powers[BLADE_PROWESS] += 1;
         send_to_char("#0Your combat prowess is now level #7Three#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_MELEE] == 2)
     {
         ch->pcdata->powers[BLADE_MELEE] += 1;
         send_to_char("#0You bring your Blade Master Melee to level #7Three#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_SKILL] == 3)
     {
         ch->pcdata->powers[BLADE_SKILL] += 1;
         send_to_char("#0Your Skill with a blade is now level #7Four#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_PROWESS] == 3)
     {
         ch->pcdata->powers[BLADE_PROWESS] += 1;
         send_to_char("#0Your combat prowess is now level #7Four#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_MELEE] == 3)
     {
         ch->pcdata->powers[BLADE_MELEE] += 1;
         send_to_char("#0You bring your Blade Master Melee to level #7Four#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_SKILL] == 4)
     {
         ch->pcdata->powers[BLADE_SKILL] += 1;
         send_to_char("#0Your Skill with a blade is now level #7Five#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_PROWESS] == 4)
     {
         ch->pcdata->powers[BLADE_PROWESS] += 1;
         send_to_char("#0Your combat prowess is now level #7Five#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_MELEE] == 4)
     {
         ch->pcdata->powers[BLADE_MELEE] += 1;
         send_to_char("#0You bring your Blade Master Melee to level #7Five#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_SKILL] == 5)
     {
         ch->pcdata->powers[BLADE_SKILL] += 1;
         send_to_char("#0Your Skill with a blade is now level #7Six#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_PROWESS] == 5)
     {
         ch->pcdata->powers[BLADE_PROWESS] += 1;
         send_to_char("#0Your combat prowess is now level #7Six#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_MELEE] == 5)
     {
         ch->pcdata->powers[BLADE_MELEE] += 1;
         send_to_char("#0You bring your Blade Master Melee to level #7Six#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_SKILL] == 6)
     {
         ch->pcdata->powers[BLADE_SKILL] += 1;
         send_to_char("#0Your Skill with a blade is now level #7Seven#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_PROWESS] == 6)
     {
         ch->pcdata->powers[BLADE_PROWESS] += 1;
         send_to_char("#0Your combat prowess is now level #7Seven#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_MELEE] == 6)
     {
         ch->pcdata->powers[BLADE_MELEE] += 1;
         send_to_char("#0You bring your Blade Master Melee to level #7Seven#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_SKILL] == 7)
     {
         ch->pcdata->powers[BLADE_SKILL] += 1;
         send_to_char("#0Your Skill with a blade is now level #7Eight#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_PROWESS] == 7)
     {
         ch->pcdata->powers[BLADE_PROWESS] += 1;
         send_to_char("#0Your combat prowess is now level #7Eight#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_MELEE] == 7)
     {
         ch->pcdata->powers[BLADE_MELEE] += 1;
         send_to_char("#0You bring your Blade Master Melee to level #7Eight#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_SKILL] == 8)
     {
         ch->pcdata->powers[BLADE_SKILL] += 1;
         send_to_char("#0Your Skill with a blade is now level #7Nine#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_PROWESS] == 8)
     {
         ch->pcdata->powers[BLADE_PROWESS] += 1;
         send_to_char("#0Your combat prowess is now level #7Nine#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_MELEE] == 8)
     {
         ch->pcdata->powers[BLADE_MELEE] += 1;
         send_to_char("#0You bring your Blade Master Melee to level #7Nine#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_SKILL] == 9)
     {
         ch->pcdata->powers[BLADE_SKILL] += 1;
         send_to_char("#0Your Skill with a blade is now level #7Ten#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_PROWESS] == 9)
     {
         ch->pcdata->powers[BLADE_PROWESS] += 1;
         send_to_char("#0Your combat prowess is now level #7Ten#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_MELEE] == 9)
     {
         ch->pcdata->powers[BLADE_MELEE] += 1;
         send_to_char("#0You bring your Blade Master Melee to level #7Ten#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_SKILL] == 10)
     {
         ch->pcdata->powers[BLADE_SKILL] += 1;
         send_to_char("#0Your Skill with a blade is now level #7Eleven#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_PROWESS] == 10)
     {
         ch->pcdata->powers[BLADE_PROWESS] += 1;
         send_to_char("#0Your combat prowess is now level #7Eleven#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_MELEE] == 10)
     {
         ch->pcdata->powers[BLADE_MELEE] += 1;
         send_to_char("#0You bring your Blade Master Melee to level #7Eleven#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_SKILL] == 11)
     {
         ch->pcdata->powers[BLADE_SKILL] += 1;
         send_to_char("#0Your Skill with a blade is now level #7Twelve#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_PROWESS] == 11)
     {
         ch->pcdata->powers[BLADE_PROWESS] += 1;
         send_to_char("#0Your combat prowess is now level #7Twelve#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_MELEE] == 11)
     {
         ch->pcdata->powers[BLADE_MELEE] += 1;
         send_to_char("#0You bring your Blade Master Melee to level #7Twelve#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_SKILL] == 12)
     {
         ch->pcdata->powers[BLADE_SKILL] += 1;
         send_to_char("#0Your Skill with a blade is now level #7Thirteen#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_PROWESS] == 12)
     {
         ch->pcdata->powers[BLADE_PROWESS] += 1;
         send_to_char("#0Your combat prowess is now level #7Thirteen#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_MELEE] == 12)
     {
         ch->pcdata->powers[BLADE_MELEE] += 1;
         send_to_char("#0You bring your Blade Master Melee to level #7Thirteen#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_SKILL] == 13)
     {
         ch->pcdata->powers[BLADE_SKILL] += 1;
         send_to_char("#0Your Skill with a blade is now level #7Fourteen#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_PROWESS] == 13)
     {
         ch->pcdata->powers[BLADE_PROWESS] += 1;
         send_to_char("#0Your combat prowess is now level #7Fourteen#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_MELEE] == 13)
     {
         ch->pcdata->powers[BLADE_MELEE] += 1;
         send_to_char("#0You bring your Blade Master Melee to level #7Fourteen#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_SKILL] == 14)
     {
         ch->pcdata->powers[BLADE_SKILL] += 1;
         send_to_char("#0Your Skill with a blade is now level #7Fifteen#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_PROWESS] == 14)
     {
         ch->pcdata->powers[BLADE_PROWESS] += 1;
         send_to_char("#0Your combat prowess is now level #7Fifteen#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_MELEE] == 14)
     {
         ch->pcdata->powers[BLADE_MELEE] += 1;
         send_to_char("#0You bring your Blade Master Melee to level #7Fifteen#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_SKILL] == 15)
     {
         ch->pcdata->powers[BLADE_SKILL] += 1;
         send_to_char("#0Your Skill with a blade is now level #7Sixteen#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_PROWESS] == 15)
     {
         ch->pcdata->powers[BLADE_PROWESS] += 1;
         send_to_char("#0Your combat prowess is now level #7Sixteen#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_MELEE] == 15)
     {
         ch->pcdata->powers[BLADE_MELEE] += 1;
         send_to_char("#0You bring your Blade Master Melee to level #7Sixteen#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_SKILL] == 16)
     {
         ch->pcdata->powers[BLADE_SKILL] += 1;
         send_to_char("#0Your Skill with a blade is now level #7Seventeen#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_PROWESS] == 16)
     {
         ch->pcdata->powers[BLADE_PROWESS] += 1;
         send_to_char("#0Your combat prowess is now level #7Seventeen#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_MELEE] == 16)
     {
         ch->pcdata->powers[BLADE_MELEE] += 1;
         send_to_char("#0You bring your Blade Master Melee to level #7Seventeen#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_SKILL] == 17)
     {
         ch->pcdata->powers[BLADE_SKILL] += 1;
         send_to_char("#0Your Skill with a blade is now level #7Eighteen#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_PROWESS] == 17)
     {
         ch->pcdata->powers[BLADE_PROWESS] += 1;
         send_to_char("#0Your combat prowess is now level #7Eighteen#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_MELEE] == 17)
     {
         ch->pcdata->powers[BLADE_MELEE] += 1;
         send_to_char("#0You bring your Blade Master Melee to level #7Eighteen#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_SKILL] == 18)
     {
         ch->pcdata->powers[BLADE_SKILL] += 1;
         send_to_char("#0Your Skill with a blade is now level #7Nineteen#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_PROWESS] == 18)
     {
         ch->pcdata->powers[BLADE_PROWESS] += 1;
         send_to_char("#0Your combat prowess is now level #7Nineteen#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_MELEE] == 18)
     {
         ch->pcdata->powers[BLADE_MELEE] += 1;
         send_to_char("#0You bring your Blade Master Melee to level #7Nineteen#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_SKILL] == 19)
     {
         ch->pcdata->powers[BLADE_SKILL] += 1;
         send_to_char("#0Your Skill with a blade is now level #7Twenty#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_PROWESS] == 19)
     {
         ch->pcdata->powers[BLADE_PROWESS] += 1;
         send_to_char("#0Your combat prowess is now level #7Twenty#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
     else if (ch->pcdata->powers[BLADE_MELEE] == 19)
     {
         ch->pcdata->powers[BLADE_MELEE] += 1;
         send_to_char("#0You bring your Blade Master Melee to level #7Twenty#n.\n\r",ch);
	   ch->bladeexp = 0;
     }
}
      
}



                if ((IS_CLASS(ch, CLASS_BLADE_MASTER) || !IS_CLASS(ch, CLASS_BLADE_MASTER)) 
		&& ch->generation > 1 && ch->level > 2)
                {
                        ch->genexp += number_range((xp / 10), (xp / 2));
                        if (ch->genexp >= expneeded)
                        {
                                ch->genexp = 0;
                                ch->generation -= 1;
                                xprintf(buf,"#B%s #0has advanced a #GGeneration!#n",ch->name);
                               do_info(ch, buf);
                                do_save(ch, "");
                        }
                }
 
      }
        return;
}




/* act_info.c */
// int char_damroll(CHAR_DATA * ch)
        if (IS_CLASS(ch, CLASS_BLADE_MASTER)) value += 400;
// int char_hitroll(CHAR_DATA * ch)
        if (IS_CLASS(ch, CLASS_BLADE_MASTER)) value += 400;


/* void show_char_to_char_0 */
        if ( !IS_NPC(victim) && !IS_NPC(ch) && IS_CLASS(victim, CLASS_BLADE_MASTER)
           && IS_HERO(victim) && IS_HERO(ch))
                strcat( buf, "#7[#0{#7B#0lad#7e #7M#0aste#7r#0}#7]#n " );



/* do_who */
                else if (IS_CLASS(wch, CLASS_BLADE_MASTER))
                {
                        strcpy(openb, "#0|[#n");
                        strcpy(closeb, "#0]|#n");
                }

                        else if (IS_CLASS(wch, CLASS_BLADE_MASTER))
                        {
                        sprintf(kav, "%s#0-#r=#RB#0lad#ReM#0aste#Rr#r=#0-#n%s      ", openb, closeb );
                        }



/* void do_class clan.c */
        else if (!str_cmp(arg2, "blademaster"))
        {
                victim->class = CLASS_BLADE_MASTER;
                send_to_char("You are now a Blade Master!\n\r", victim);
        }



// interp.c
    /*
     * Blade Master Class by Xrakisis
     */
    { "bladeshow",          do_bladegain,     POS_STANDING,   3,  LOG_NORMAL, CLASS_BLADE_MASTER,0,0},
    { "retort", do_retort, POS_STANDING, 3, LOG_NORMAL, CLASS_BLADE_MASTER,0,0},
    { "portal", do_portal, POS_STANDING, 3, LOG_NORMAL, CLASS_BLADE_MASTER,0,0},
    { "rapidstrike", do_rapidstrike, POS_STANDING, 3, LOG_NORMAL, CLASS_BLADE_MASTER,0,0},
    { "pstrike", do_pstrike, POS_FIGHTING, 3, LOG_NORMAL, CLASS_BLADE_MASTER,0,0},
    { "combatstyle", do_combatstyle,  POS_STANDING, 3,  LOG_NORMAL, CLASS_BLADE_MASTER,0,0 },
    { "weaponpractice", do_weaponpractice, POS_STANDING, 3, LOG_NORMAL, CLASS_BLADE_MASTER,0,0},
    { "shield",    do_shield,    POS_STANDING,  3,  LOG_NORMAL, CLASS_BLADE_MASTER, 0, 0 },
    { "truesight",  do_truesight, POS_STANDING,      3,  LOG_NORMAL, CLASS_BLADE_MASTER,0,0 },


// interp.h
/* Blade Master */
DECLARE_DO_FUN(do_bladegain);
DECLARE_DO_FUN(do_retort);
DECLARE_DO_FUN(do_portal);
DECLARE_DO_FUN(do_rapidstrike);
DECLARE_DO_FUN(do_pstrike);
DECLARE_DO_FUN(do_combatstyle);



// merc.h
#define NEW2_AUTOATTACK         32768
#define NEW2_OFFENCE            65536
#define NEW2_DEFENSE            131072
#define NEW2_DAMCAP             262144

struct char_data
        int       bladeexp; // for blade master class by Xrakisis
        int       bladeexpneeded;