void do_gain(CHAR_DATA * ch, char *argument)
{
    char      arg[MAX_INPUT_LENGTH];
    char      buf[MAX_STRING_LENGTH];

    argument = one_argument(argument, arg);
    if (IS_NPC(ch))
        return;
    if (!IS_CLASS(ch, CLASS_UNDEAD_KNIGHT))
    {
        send_to_char("Huh.\n\r", ch);
        return;
    }
    if (arg[0] == '\0')
    {
        if (ch->pcdata->powers[INVOCATION] == 0)
            send_to_char(" #DInvocation     #D[#R*****#D]#n\n\r",ch);
        if (ch->pcdata->powers[INVOCATION] == 1)
            send_to_char(" #DInvocation     #D[#G*#R****#D]#n\n\r",ch);
        if (ch->pcdata->powers[INVOCATION] == 2)
            send_to_char(" #DInvocation     #D[#G**#R***#D]#n\n\r",ch);
        if (ch->pcdata->powers[INVOCATION] == 3)
            send_to_char(" #DInvocation     #D[#G***#R**#D]#n\n\r",ch);
        if (ch->pcdata->powers[INVOCATION] == 4)
            send_to_char(" #DInvocation     #D[#G****#R*#D]#n\n\r",ch);
        if (ch->pcdata->powers[INVOCATION] == 5)
            send_to_char(" #DInvocation     #D[#G*****#D]#n\n\r",ch);

        if (ch->pcdata->powers[NECROMANCY] == 0)
            send_to_char(" #DNecromancy     #D[#R**********#D]#n\n\r",ch);
        if (ch->pcdata->powers[NECROMANCY] == 1)
            send_to_char(" #DNecromancy     #D[#G*#R*********#D]#n\n\r",ch);
        if (ch->pcdata->powers[NECROMANCY] == 2)
            send_to_char(" #DNecromancy     #D[#G**#R********#D]#n\n\r",ch);
        if (ch->pcdata->powers[NECROMANCY] == 3)
            send_to_char(" #DNecromancy     #D[#G***#R*******#D]#n\n\r",ch);
        if (ch->pcdata->powers[NECROMANCY] == 4)
            send_to_char(" #DNecromancy     #D[#G****#R******#D]#n\n\r",ch);
        if (ch->pcdata->powers[NECROMANCY] == 5)
            send_to_char(" #DNecromancy     #D[#G*****#R*****#D]#n\n\r",ch);
        if (ch->pcdata->powers[NECROMANCY] == 6)
            send_to_char(" #DNecromancy     #D[#G******#R****#D]#n\n\r",ch);
        if (ch->pcdata->powers[NECROMANCY] == 7)
            send_to_char(" #DNecromancy     #D[#G*******#R***#D]#n\n\r",ch);
        if (ch->pcdata->powers[NECROMANCY] == 8)
            send_to_char(" #DNecromancy     #D[#G********#R**#D]#n\n\r",ch);
        if (ch->pcdata->powers[NECROMANCY] == 9)
            send_to_char(" #DNecromancy     #D[#G*********#R*#D]#n\n\r",ch);
        if (ch->pcdata->powers[NECROMANCY] == 10)
            send_to_char(" #DNecromancy     #D[#G**********#D]#n\n\r",ch);


        if (ch->pcdata->powers[SPIRIT] == 0)
            send_to_char(" #DSpirit         #D[#R**********#D]#n\n\r",ch);
        if (ch->pcdata->powers[SPIRIT] == 1)
            send_to_char(" #DSpirit         #D[#G*#R*********#D]#n\n\r",ch);
        if (ch->pcdata->powers[SPIRIT] == 2)
            send_to_char(" #DSpirit         #D[#G**#R********#D]#n\n\r",ch);
        if (ch->pcdata->powers[SPIRIT] == 3)
            send_to_char(" #DSpirit         #D[#G***#R*******#D]#n\n\r",ch);
        if (ch->pcdata->powers[SPIRIT] == 4)
            send_to_char(" #DSpirit         #D[#G****#R******#D]#n\n\r",ch);
        if (ch->pcdata->powers[SPIRIT] == 5)
            send_to_char(" #DSpirit         #D[#G*****#R*****#D]#n\n\r",ch);
        if (ch->pcdata->powers[SPIRIT] == 6)
            send_to_char(" #DSpirit         #D[#G******#R****#D]#n\n\r",ch);
        if (ch->pcdata->powers[SPIRIT] == 7)
            send_to_char(" #DSpirit         #D[#G*******#R***#D]#n\n\r",ch);
        if (ch->pcdata->powers[SPIRIT] == 8)
            send_to_char(" #DSpirit         #D[#G********#R**#D]#n\n\r",ch);
        if (ch->pcdata->powers[SPIRIT] == 9)
            send_to_char(" #DSpirit         #D[#G*********#R*#D]#n\n\r",ch);
        if (ch->pcdata->powers[SPIRIT] == 10)
            send_to_char(" #DSpirit         #D[#G**********#D]#n\n\r",ch);

        send_to_char("\n\r #cGain command costs Primal. (#yTrain Primal#c)#n \n\r",ch);
        send_to_char(" #cWhat path of power do you wish to increase? [#wnecromancy,invocation,spirit#c]#n\n\r",ch);
        return;

    }
    if (!str_cmp(arg, "necromancy"))    /* most powers over death */
    {
        if (ch->pcdata->powers[NECROMANCY] > 9)
        {
            send_to_char
            ("You have mastered the art of necromancy.\n\r",
             ch);
            return;
        }
        else if (ch->practice <
                 ch->pcdata->powers[NECROMANCY] * 60 + 60)
        {
            send_to_char
            ("Your control over the forces of life and death is not powerful enough.\n\r",
             ch);
            return;
        }
        else
        {
            ch->practice -=
                ch->pcdata->powers[NECROMANCY] * 60 + 60;
            send_to_char
            ("Death and life is yours to command.\n\r",
             ch);
            ch->pcdata->powers[NECROMANCY] += 1;
            return;
        }
    }
    else if (!str_cmp(arg, "invocation"))   /* attacks like powerwords */
    {
        if (ch->pcdata->powers[INVOCATION] > 4)
        {
            send_to_char
            ("You have mastered the art of invocation.\n\r",
             ch);
            return;
        }
        else if (ch->practice <
                 ch->pcdata->powers[INVOCATION] * 60 + 60)
        {
            send_to_char
            ("You are not ready to advance in your magical studies.\n\r",
             ch);
            return;
        }
        else
        {
            ch->practice -=
                ch->pcdata->powers[INVOCATION] * 60 + 60;
            send_to_char
            ("Your mastery of the ancient arts increase.\n\r",
             ch);
            ch->pcdata->powers[INVOCATION] += 1;
            return;
        }
    }
    else if (!str_cmp(arg, "spirit"))   /* toughness */
    {
        if (ch->pcdata->powers[UNDEAD_SPIRIT] > 9)
        {
            send_to_char
            ("You have completely bound your spirit to this vessel.\n\r",
             ch);
            return;
        }
        if (ch->practice <
                ch->pcdata->powers[UNDEAD_SPIRIT] * 60 + 60)
        {
            send_to_char
            ("You are not ready to bind more of your spirit yet.\n\r",
             ch);
            return;
        }
        else
        {
            ch->practice -=
                ch->pcdata->powers[UNDEAD_SPIRIT] * 60 + 60;
            send_to_char
            ("You channel more of your spirit from the abyss into this body.\n\r",
             ch);
            ch->pcdata->powers[UNDEAD_SPIRIT] += 1;
            return;
        }
    }
    return;
}