cotn/notes/
cotn/src/
/********************************************************************
 * This code was written from scratch by Listy (listy@godwars.com)  *
 * Use of this code is prohibited unless with written permission by *
 * Listy. This acknowledgement must not be removed from this code   *
 * (c) 1999 Listy from God Wars Rogue Edition                       *
 * Jedi, Lightsaber are trademarks of Lucasfilm                     *
 ********************************************************************/
/***************************************************************************
 *                                 _/                            _/        *
 *      _/_/_/  _/_/      _/_/_/  _/    _/_/    _/    _/    _/_/_/         *
 *     _/    _/    _/  _/        _/  _/    _/  _/    _/  _/    _/          *
 *    _/    _/    _/  _/        _/  _/    _/  _/    _/  _/    _/           *
 *   _/    _/    _/    _/_/_/  _/    _/_/      _/_/_/    _/_/_/            *
 ***************************************************************************
 * Mindcloud Copyright 2001-2003 by Jeff Boschee (Zarius),                 *
 * Additional credits are in the help file CODECREDITS                     *
 * All Rights Reserved.                                                    *
 ***************************************************************************/
#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include "merc.h"
#include "interp.h"
#include "magic.h"


void do_jediskill(CHAR_DATA * ch, char *argument)
{
        char      arg1[MAX_INPUT_LENGTH];
        char      buf[MAX_STRING_LENGTH];
        char      buf2[MAX_STRING_LENGTH];
        int       maxbody;
        int       maxmind;
        int       maxspirit;
        int       maxtech;
        int       learncost;

        maxbody = 7;
        maxmind = 5;
        maxspirit = 6;
        maxtech = 10;
        argument = one_argument(argument, arg1);

        if (IS_NPC(ch))
                return;
        else if (!IS_CLASS(ch, CLASS_JEDI))
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else if (ch->level < 3)
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else if (arg1[0] == '\0')
        {
                xprintf(buf,
                        "#CB#cody#0 (#7%d#0/#77#0)#7,#C M#cind#0 (#7%d#0/#75#0)#7,#C S#cpirit#0 (#7%d#0/#76#0)#7,#C T#cechnique#0 (#7%d#0/#710#0)#n\n\r",
                        ch->pcdata->powers[JPOWER_BODY],
                        ch->pcdata->powers[JPOWER_MIND],
                        ch->pcdata->powers[JPOWER_SPIRIT],
                        ch->pcdata->powers[JPOWER_TECHNIQUE]);
                send_to_char(buf, ch);
                xprintf(buf,
                        "#CYou have achieved#R %d#C jedi states, and are currently at#R %d#C.#n\n\r",
                        ch->pcdata->powers[JEDI_STATE_MAX],
                        ch->pcdata->powers[JEDI_STATE]);
                send_to_char(buf, ch);
                xprintf(buf2,
                        "#CYou have achieved#R %d#C jedi points, and are currently at#R %d#C.#n\n\r",
                        ch->pcdata->powers[JEDI_FOCUS_MAX],
                        ch->pcdata->powers[JEDI_FOCUS]);
                send_to_char(buf2, ch);
                if (IS_IMMUNE(ch, IMM_SHIELDED)
                    || IS_SET(ch->special, SPC_JEDI_FSHIELD)
                    || IS_ITEMAFF(ch, ITEMA_SPEED))
                {
                        send_to_char("#1Active Body Powers.#n\n\r", ch);
                        if (IS_IMMUNE(ch, IMM_SHIELDED))
                                send_to_char
                                        ("#1You are shielding your aura from those around you.#n\n\r",
                                         ch);
                        if (IS_SET(ch->special, SPC_JEDI_FSHIELD))
                                send_to_char
                                        ("#1You are surrounded in a shield of the force.#n\n\r",
                                         ch);
                        if (IS_ITEMAFF(ch, ITEMA_SPEED))
                                send_to_char
                                        ("#1You are in a state of enhanced speed.#n\n\r",
                                         ch);
                }
                if (IS_SET(ch->act, PLR_HOLYLIGHT)
                    || (IS_SET(ch->special, SPC_JEDI_LEVITATE)))
                {
                        send_to_char("#2Active Mind Powers.#n\n\r", ch);
                        if (IS_SET(ch->special, SPC_JEDI_LEVITATE))
                                send_to_char
                                        ("#2You are levitating in the force.#n\n\r",
                                         ch);
                        if (IS_SET(ch->act, PLR_HOLYLIGHT))
                                send_to_char
                                        ("#2Your vision has been enhanced.#n\n\r",
                                         ch);
                }
                return;
        }
        else if (!str_cmp(arg1, "body"))
        {
                send_to_char
                        ("Body - Mastering the Force channelling through your body.\n\r",
                         ch);
                if (ch->pcdata->powers[JPOWER_BODY] > 0)
                        send_to_char
                                ("1  - Jedi Meditation (jedisleep) An enhanced form of sleep.\n\r",
                                 ch);
                if (ch->pcdata->powers[JPOWER_BODY] > 1)
                        send_to_char
                                ("2  - Shield (jedishield) Prevents people from reading your aura.\n\r",
                                 ch);
                if (ch->pcdata->powers[JPOWER_BODY] > 2)
                        send_to_char("3  - Enhanced Dodge (Auto).\n\r", ch);
                if (ch->pcdata->powers[JPOWER_BODY] > 3)
                        send_to_char("4  - Enhanced Parry (Auto).\n\r", ch);
                if (ch->pcdata->powers[JPOWER_BODY] > 4)
                        send_to_char
                                ("5  - Shield of the Force (fshield) Using the force to protect your mortal body.\n\r",
                                 ch);
                if (ch->pcdata->powers[JPOWER_BODY] > 5)
                        send_to_char
                                ("6  - Enhanced Speed (fspeed) Using the force to speed up your actions.\n\r",
                                 ch);
                if (ch->pcdata->powers[JPOWER_BODY] > 6)
                        send_to_char
                                ("7  - Jedi Touch (jtouch) Stunning an opponent with the force blow.\n\r",
                                 ch);
                if (ch->pcdata->powers[JPOWER_BODY] >= maxbody)
                        send_to_char
                                ("You have mastered all the skills of the body.\n\r",
                                 ch);
                else
                {
                        learncost =
                                ((ch->pcdata->powers[JPOWER_BODY] +
                                  1) * 10000000);
                        xprintf(buf, "Improvement of body will cost : %d",
                                learncost);
                        send_to_char(buf, ch);
                }
                return;
        }
        else if (!str_cmp(arg1, "mind"))
        {
                send_to_char
                        ("Mind - Using the Force to control other things\n\r",
                         ch);
                if (ch->pcdata->powers[JPOWER_MIND] > 0)
                        send_to_char
                                ("1  - Levitate (jlevitate) Using the force to lift you off the ground.\n\r",
                                 ch);
                if (ch->pcdata->powers[JPOWER_MIND] > 1)
                        send_to_char
                                ("2  - Jedi Sight (jsight) Allows you to perceive more.\n\r",
                                 ch);
                if (ch->pcdata->powers[JPOWER_MIND] > 2)
                        send_to_char
                                ("3  - Jedi Sense (jsense) Read your opponent's statistics.\n\r",
                                 ch);
                if (ch->pcdata->powers[JPOWER_MIND] > 3)
                        send_to_char
                                ("4  - Jedi Eyes (jeyes) Look through your target's eyes.\n\r",
                                 ch);
                if (ch->pcdata->powers[JPOWER_MIND] > 4)
                        send_to_char
                                ("5  - Jedi Mental Focus (jfocus) Allows you to perceive different planes of existence.\n\r",
                                 ch);
                if (ch->pcdata->powers[JPOWER_SPIRIT] > 2
                    && ch->pcdata->powers[JPOWER_MIND] > 4)
                        send_to_char
                                ("5  - Jedi Mind Walk (jwalk) Moves you into a different plane of existence.\n\r",
                                 ch);
                if (ch->pcdata->powers[JPOWER_MIND] >= maxmind)
                        send_to_char
                                ("You have mastered all the skills of the mind.\n\r",
                                 ch);
                else
                {
                        learncost =
                                ((ch->pcdata->powers[JPOWER_MIND] +
                                  1) * 10000000);
                        xprintf(buf, "Improvement of mind will cost : %d",
                                learncost);
                        send_to_char(buf, ch);
                }
                return;
        }
        else if (!str_cmp(arg1, "spirit"))
        {
                send_to_char("Spirit - Feeling the Force in all things.\n\r",
                             ch);
                if (ch->pcdata->powers[JPOWER_SPIRIT] > 0)
                        send_to_char
                                ("1  - Jedi Healing (jhealing) Uses the force to reinforce your vitality.\n\r",
                                 ch);
                if (ch->pcdata->powers[JPOWER_SPIRIT] > 1)
                        send_to_char
                                ("2  - Jedi Perception (Auto) Feels the fluctuations in the force of an outside presence.\n\r",
                                 ch);
                if (ch->pcdata->powers[JPOWER_SPIRIT] > 2
                    && ch->pcdata->powers[JPOWER_MIND] > 4)
                        send_to_char
                                ("3  - Jedi Mind Walk (jwalk) Moves you into a different plane of existence.\n\r",
                                 ch);
                if (ch->pcdata->powers[JPOWER_SPIRIT] > 3)
                        send_to_char("4  - Enhanced Defence (Auto).\n\r", ch);
                if (ch->pcdata->powers[JPOWER_SPIRIT] > 4)
                        send_to_char("5  - Enhanced Attack (Auto).\n\r", ch);
                if (ch->pcdata->powers[JPOWER_SPIRIT] > 5)
                        send_to_char
                                ("6  - Jedi Summon (jsummon) Summons the force to your aid in a battle.\n\r",
                                 ch);
                if (ch->pcdata->powers[JPOWER_SPIRIT] >= maxspirit)
                        send_to_char
                                ("You have mastered all the skills of the spirit.\n\r",
                                 ch);
                else
                {
                        learncost =
                                ((ch->pcdata->powers[JPOWER_SPIRIT] +
                                  1) * 10000000);
                        xprintf(buf, "Improvement of spirit will cost : %d",
                                learncost);
                        send_to_char(buf, ch);
                }
                return;
        }
        else if (!str_cmp(arg1, "technique"))
        {
                send_to_char("Technique - Mastery of Force combat.\n\r", ch);
                if (ch->pcdata->powers[JPOWER_TECHNIQUE] > 0)
                        send_to_char("1  - Jedi Somersault (jsault)\n\r", ch);
                if (ch->pcdata->powers[JPOWER_TECHNIQUE] > 1)
                        send_to_char("2  - Jedi Reverse Spin (jreverse)\n\r",
                                     ch);
                if (ch->pcdata->powers[JPOWER_TECHNIQUE] > 2)
                        send_to_char("3  - Jedi Kneel (jkneel)\n\r", ch);
                if (ch->pcdata->powers[JPOWER_TECHNIQUE] > 3)
                        send_to_char("4  - Jedi Stab (jstab)\n\r", ch);
                if (ch->pcdata->powers[JPOWER_TECHNIQUE] > 4)
                        send_to_char("5  - Jedi High Strike (jhigh)\n\r", ch);
                if (ch->pcdata->powers[JPOWER_TECHNIQUE] > 5)
                        send_to_char("6  - Jedi Upper Cut (jupper)\n\r", ch);
                if (ch->pcdata->powers[JPOWER_TECHNIQUE] > 6)
                        send_to_char
                                ("7  - Jedi Butterfly Cut (jbutterfly)\n\r",
                                 ch);
                if (ch->pcdata->powers[JPOWER_TECHNIQUE] > 7)
                        send_to_char("8  - Jedi Cross (jcross)\n\r", ch);
                if (ch->pcdata->powers[JPOWER_TECHNIQUE] > 8)
                        send_to_char("9  - Jedi Slash (jslash)\n\r", ch);
                if (ch->pcdata->powers[JPOWER_TECHNIQUE] > 9)
                        send_to_char("10 - Jedi Circle (jcircle)\n\r", ch);
                if (ch->pcdata->powers[JPOWER_TECHNIQUE] >= maxtech)
                        send_to_char
                                ("You have mastered all the techniques of the jedi.\n\r",
                                 ch);
                else
                {
                        learncost =
                                ((ch->pcdata->powers[JPOWER_TECHNIQUE] +
                                  1) * 5000000);
                        xprintf(buf,
                                "Improvement in technique will cost : %d",
                                learncost);
                        send_to_char(buf, ch);
                }
                return;
        }
        else
        {
                xprintf(buf,
                        "#RBody #0(#7%d#0)#R Mind #0(#7%d#0)#R Spirit#0 (#7%d#0)#R Technique#0 (#7%d#0)#n.\n\r",
                        ch->pcdata->powers[JPOWER_BODY],
                        ch->pcdata->powers[JPOWER_MIND],
                        ch->pcdata->powers[JPOWER_SPIRIT],
                        ch->pcdata->powers[JPOWER_TECHNIQUE]);
                send_to_char(buf, ch);
                xprintf(buf,
                        "#CYou have achieved#R %d#C jedi states, and are curently at#R %d#C.#n\n\r",
                        ch->pcdata->powers[JEDI_STATE_MAX],
                        ch->pcdata->powers[JEDI_STATE]);
                send_to_char(buf, ch);
                xprintf(buf2,
                        "You have achieved %d points of jedi points, and are currently at %d\n\r",
                        ch->pcdata->powers[JEDI_FOCUS_MAX],
                        ch->pcdata->powers[JEDI_FOCUS]);
                send_to_char(buf2, ch);
                send_to_char("Active Body Powers.\n\r", ch);
                if (IS_IMMUNE(ch, IMM_SHIELDED)
                    || IS_SET(ch->special, SPC_JEDI_FSHIELD)
                    || IS_ITEMAFF(ch, ITEMA_SPEED))
                {
                        send_to_char("#1Active Body Powers.#n\n\r", ch);
                        if (IS_IMMUNE(ch, IMM_SHIELDED))
                                send_to_char
                                        ("#1You are shielding your aura from those around you.#n\n\r",
                                         ch);
                        if (IS_SET(ch->special, SPC_JEDI_FSHIELD))
                                send_to_char
                                        ("#1You are surrounded in a shield of the force.#n\n\r",
                                         ch);
                        if (IS_ITEMAFF(ch, ITEMA_SPEED))
                                send_to_char
                                        ("#1You are in a state of enhanced speed.#n\n\r",
                                         ch);
                }
                if (IS_SET(ch->act, PLR_HOLYLIGHT)
                    || (IS_SET(ch->special, SPC_JEDI_LEVITATE)))
                {
                        send_to_char("#2Active Mind Powers.#n\n\r", ch);
                        if (IS_SET(ch->special, SPC_JEDI_LEVITATE))
                                send_to_char
                                        ("#2You are levitating in the force.#n\n\r",
                                         ch);
                        if (IS_SET(ch->act, PLR_HOLYLIGHT))
                                send_to_char
                                        ("#2Your vision has been enhanced.#n\n\r",
                                         ch);
                }
        }
}   /* End of void do_jediskill */

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

        argument = one_argument(argument, arg);

        if (IS_NPC(ch))
                return;
        else if (!IS_CLASS(ch, CLASS_JEDI))
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else if (ch->level < 3)
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else if (arg[0] == '\0')
        {
                send_to_char("Who do you wish to sense?\n\r", ch);
                return;
        }
        else if ((victim = get_char_room(ch, NULL, arg)) == NULL)
        {
                send_to_char("They aren't here.\n\r", ch);
                return;
        }
        else if (!IS_CLASS(victim, CLASS_JEDI))
        {
                send_to_char("They are not jedi.\n\r", ch);
                return;
        }
        else if (IS_NPC(victim))
        {
                send_to_char("They are not jedi.\n\r", ch);
                return;
        }
        else if (ch == victim)
        {
                send_to_char("Not on yourself!\n\r", ch);
                return;
        }
        else
        {
                xprintf(buf,
                        "%s : Body(%d) Mind(%d) Spirit(%d) Technique(%d).\n\r",
                        victim->name, victim->pcdata->powers[JPOWER_BODY],
                        victim->pcdata->powers[JPOWER_MIND],
                        victim->pcdata->powers[JPOWER_SPIRIT],
                        victim->pcdata->powers[JPOWER_TECHNIQUE]);
                send_to_char(buf, ch);
        }
}   /* End of void do_sense */
void do_jedilearn(CHAR_DATA * ch, char *argument)
{
        char      arg1[MAX_INPUT_LENGTH];
        char      buf[MAX_STRING_LENGTH];
        int       learncost;
        int       maxbody;
        int       maxmind;
        int       maxspirit;
        int       maxtech;

        argument = one_argument(argument, arg1);
        maxbody = 7;
        maxmind = 5;
        maxspirit = 6;
        maxtech = 10;

        if (IS_NPC(ch))
                return;
        else if (!IS_CLASS(ch, CLASS_JEDI))
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else if (ch->level < 3)
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else if (arg1[0] == '\0')
        {
                send_to_char
                        ("#RSyntax#7:#R Jedilearn #0<#LBody#0/#CMind#0/#YSpirit#0/#GTechnique#0/#PState#0/#7Point#0>#n\n\r",
                         ch);
                return;
        }
        else if (!str_cmp(arg1, "body"))
        {
                if (ch->pcdata->powers[JPOWER_BODY] >= maxbody)
                {
                        send_to_char
                                ("You have already mastered the body.\n\r",
                                 ch);
                        return;
                }
                else
                {
                        learncost = ((ch->pcdata->powers[JPOWER_BODY] + 1)
                                     * 2000000);
                        if (ch->exp < learncost)
                        {
                                xprintf(buf, "Body Power : %d will cost %d",
                                        (ch->pcdata->powers[JPOWER_BODY] + 1),
                                        learncost);
                                send_to_char(buf, ch);
                                return;
                        }
                        else
                        {
                                ch->exp -= learncost;
                                ch->pcdata->powers[JPOWER_BODY] += 1;
                                send_to_char
                                        ("You have advanced to the next level of the body.\n\r",
                                         ch);
                                return;
                        }
                }
        }
        else if (!str_cmp(arg1, "mind"))
        {
                if (ch->pcdata->powers[JPOWER_MIND] >= maxmind)
                {
                        send_to_char
                                ("You have already mastered the mind.\n\r",
                                 ch);
                        return;
                }
                else
                {
                        learncost =
                                ((ch->pcdata->powers[JPOWER_MIND] +
                                  1) * 2000000);
                        if (ch->exp < learncost)
                        {
                                xprintf(buf, "Mind Power : %d will cost %d",
                                        (ch->pcdata->powers[JPOWER_MIND] + 1),
                                        learncost);
                                send_to_char(buf, ch);
                                return;
                        }
                        else
                        {
                                ch->exp -= learncost;
                                ch->pcdata->powers[JPOWER_MIND] += 1;
                                send_to_char
                                        ("You have advanced to the next level of the mind.\n\r",
                                         ch);
                                return;
                        }
                }
        }
        else if (!str_cmp(arg1, "spirit"))
        {
                if (ch->pcdata->powers[JPOWER_SPIRIT] >= maxspirit)
                {
                        send_to_char
                                ("You have already mastered the spirit.\n\r",
                                 ch);
                        return;
                }
                else
                {
                        learncost =
                                ((ch->pcdata->powers[JPOWER_SPIRIT] +
                                  1) * 2000000);
                        if (ch->exp < learncost)
                        {
                                xprintf(buf, "Spirit Power : %d will cost %d",
                                        (ch->pcdata->powers[JPOWER_SPIRIT] +
                                         1), learncost);
                                send_to_char(buf, ch);
                                return;
                        }
                        else
                        {
                                ch->exp -= learncost;
                                ch->pcdata->powers[JPOWER_SPIRIT] += 1;
                                send_to_char
                                        ("You have advanced to the next level of the spirit.\n\r",
                                         ch);
                                return;
                        }
                }
        }
        else if (!str_cmp(arg1, "technique"))
        {
                if (ch->pcdata->powers[JPOWER_TECHNIQUE] >= maxtech)
                {
                        send_to_char
                                ("You have already mastered the techniques.\n\r",
                                 ch);
                        return;
                }
                else
                {
                        learncost =
                                ((ch->pcdata->powers[JPOWER_TECHNIQUE] +
                                  1) * 2000000);
                        if (ch->exp < learncost)
                        {
                                xprintf(buf,
                                        "Technique Level : %d will cost %d",
                                        (ch->pcdata->
                                         powers[JPOWER_TECHNIQUE] + 1),
                                        learncost);
                                send_to_char(buf, ch);
                                return;
                        }
                        else
                        {
                                ch->exp -= learncost;
                                ch->pcdata->powers[JPOWER_TECHNIQUE] += 1;
                                send_to_char
                                        ("You have advanced to the next technique.\n\r",
                                         ch);
                                return;
                        }
                }
        }
        else if (!str_cmp(arg1, "state"))
        {
                if (ch->pcdata->powers[JEDI_STATE_MAX] >= 5)
                {
                        send_to_char
                                ("You have learned all the states available to the jedi.\n\r",
                                 ch);
                        return;
                }
                else
                {
                        learncost =
                                ((ch->pcdata->powers[JEDI_STATE_MAX] +
                                  1) * 2000000);
                        if (ch->exp < learncost)
                        {
                                xprintf(buf,
                                        "State Level : %d will cost %d.\n\r",
                                        (ch->pcdata->powers[JEDI_STATE_MAX] +
                                         1), learncost);
                                send_to_char(buf, ch);
                                return;
                        }
                        else
                        {
                                ch->exp -= learncost;
                                ch->pcdata->powers[JEDI_STATE_MAX] += 1;
                                send_to_char
                                        ("You can now access the next jedi state.\n\r",
                                         ch);
                                return;
                        }
                }
        }
        else if (!str_cmp(arg1, "point"))
        {
                if (ch->pcdata->powers[JEDI_FOCUS_MAX] >= 100)
                {
                        send_to_char
                                ("You have gained all the points possible for a jedi.\n\r",
                                 ch);
                        return;
                }
                else
                {
                        learncost = 1000000;
                        if (ch->exp < learncost)
                        {
                                send_to_char
                                        ("Jedi points are 1,000,000 experience each.\n\r",
                                         ch);
                                return;
                        }
                        else
                        {
                                ch->exp -= learncost;
                                ch->pcdata->powers[JEDI_FOCUS_MAX] += 1;
                                send_to_char("You gained a jedi point.\n\r",
                                             ch);
                                return;
                        }
                }
        }
        send_to_char
                ("#RSyntax#7:#R Jedilearn #0<#cBody#0/#cMind#0/#cSpirit#0/#cTechnique#0/#cState#0/#cPoint#0>#n\n\r",
                 ch);
        return;
}   /* End of void do_learn */
void do_jstate(CHAR_DATA * ch, char *argument)
{
        if (IS_NPC(ch))
                return;
        else if (!IS_CLASS(ch, CLASS_JEDI))
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else if (ch->position != POS_FIGHTING)
        {
                send_to_char("You must be fighting.\n\r", ch);
                return;
        }
        else if (ch->pcdata->powers[JEDI_STATE] ==
                 ch->pcdata->powers[JEDI_STATE_MAX])
        {
                send_to_char("You are already at your maximum state.\n\r",
                             ch);
                return;
        }
        else if (ch->move < ch->max_move / 2)
        {
                send_to_char
                        ("You are not vital enough to achieve jedi state.\n\r",
                         ch);
                return;
        }
        else
        {
                send_to_char("You concentrate upon your state.\n\r", ch);
                act("$n concentrates deeply and is encompassed by a glow.",
                    ch, NULL, NULL, TO_ROOM);
                ch->pcdata->powers[JEDI_STATE] += 1;
        }
        return;
}   /* End of void do_jstate */
void do_jediarmor(CHAR_DATA * ch, char *argument)
{
        OBJ_INDEX_DATA *pObjIndex;
        OBJ_DATA *obj;
        char      arg[MAX_INPUT_LENGTH];
        int       vnum = 0;

        argument = one_argument(argument, arg);

        if (IS_NPC(ch))
                return;
        if (!IS_CLASS(ch, CLASS_JEDI))
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }

        if (arg[0] == '\0')
        {
                send_to_char
                        ("#RPlease specify what kind of equipment you want to make#7:#n\n\r",
                         ch);
                send_to_char
                        ("#RLightsaber#0,#R Belt#0,#R Robes#0,#R Cloak#0.#n\n\r",
                         ch);
                return;
        }
        if (!str_cmp(arg, "lightsaber"))
                vnum = 33416;
        else if (!str_cmp(arg, "belt"))
                vnum = 33420;
        else if (!str_cmp(arg, "robes"))
                vnum = 33419;
        else if (!str_cmp(arg, "cloak"))
                vnum = 33421;
        else
        {
                send_to_char("That is an invalid type.\n\r", ch);
                return;
        }
        if (ch->practice < 140)
        {
                send_to_char
                        ("It costs 140 points of primal to make a piece of jedi equipment.\n\r",
                         ch);
                return;
        }
        if (vnum == 0 || (pObjIndex = get_obj_index(vnum)) == NULL)
        {
                send_to_char
                        ("Missing object, please inform an Implementor.\n\r",
                         ch);
                return;
        }
        ch->practice -= 140;
        obj = create_object(pObjIndex, 50);
        obj->questowner = str_dup(ch->pcdata->switchname);
        obj_to_char(obj, ch);
        act("$p appears in your hands.", ch, obj, NULL, TO_CHAR);
        act("$p appears in $n's hands.", ch, obj, NULL, TO_ROOM);
        return;
}

/* Jedi Body Powers */
void do_jedisleep(CHAR_DATA * ch, char *argument)
{
        if (IS_NPC(ch))
                return;
        else if (!IS_CLASS(ch, CLASS_JEDI))
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else if (ch->pcdata->powers[JPOWER_BODY] < 1)
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else if (ch->level < 3)
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else
        {
                switch (ch->position)
                {
                case POS_SLEEPING:
                        send_to_char
                                ("You close your eyes and fall into a jedi sleep.\n\r",
                                 ch);
                        act("$n closes $s eyes and falls into a jedi sleep.",
                            ch, NULL, NULL, TO_ROOM);
                        ch->position = POS_MEDITATING;
                        break;
                case POS_RESTING:
                        send_to_char
                                ("You close your eyes and fall into a jedi sleep.\n\r",
                                 ch);
                        act("$n closes $s eyes and falls into a jedi sleep.",
                            ch, NULL, NULL, TO_ROOM);
                        ch->position = POS_MEDITATING;
                        break;
                case POS_MEDITATING:
                        send_to_char
                                ("You are already in a state of jedi sleep.\n\r",
                                 ch);
                        break;
                case POS_SITTING:
                        send_to_char
                                ("You close your eyes and fall into a jedi sleep.\n\r",
                                 ch);
                        act("$n closes $s eyes and falls into a jedi sleep.",
                            ch, NULL, NULL, TO_ROOM);
                        ch->position = POS_MEDITATING;
                        break;
                case POS_STANDING:
                        send_to_char
                                ("You close your eyes and fall into a jedi sleep.\n\r",
                                 ch);
                        act("$n closes $s eyes and falls into a jedi sleep.",
                            ch, NULL, NULL, TO_ROOM);
                        ch->position = POS_MEDITATING;
                        break;
                case POS_FIGHTING:
                        send_to_char("You are fighting!\n\r", ch);
                        break;
                }
        }
        return;
}   /*End of void do_jedisleep */
void do_jedishield(CHAR_DATA * ch, char *argument)
{
        char      arg[MAX_INPUT_LENGTH];

        argument = one_argument(argument, arg);

        if (IS_NPC(ch))
                return;
        else if (!IS_CLASS(ch, CLASS_JEDI))
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else if (ch->level < 3)
        {
                send_to_char("Huh?\n\r", ch);
        }
        else if (ch->pcdata->powers[JPOWER_BODY] < 2)
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else if (!IS_IMMUNE(ch, IMM_SHIELDED))
        {
                send_to_char
                        ("You use the force to shield your aura from those who would invade it.\n\r",
                         ch);
                SET_BIT(ch->immune, IMM_SHIELDED);
                return;
        }
        else
        {
                send_to_char("You let your shield drop.\n\r", ch);
                REMOVE_BIT(ch->immune, IMM_SHIELDED);
                return;
        }
}   /* End of void do_jedishield */
void do_fshield(CHAR_DATA * ch, char *argument)
{
        if (IS_NPC(ch))
                return;
        else if (!IS_CLASS(ch, CLASS_JEDI))
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else if (ch->level < 3)
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else if (ch->pcdata->powers[JPOWER_BODY] < 5)
        {
                send_to_char("You need at least Jedi Body power of 5\n\r",
                             ch);
                return;
        }
        else if (IS_SET(ch->special, SPC_JEDI_FSHIELD))
        {
                act("You remove yourself from the protection of the force",
                    ch, NULL, NULL, TO_CHAR);
                act("$n removes themself from the force", ch, NULL, NULL,
                    TO_NOTVICT);
                REMOVE_BIT(ch->special, SPC_JEDI_FSHIELD);
                ch->armor += 1000;
                return;
        }
        else
        {
                act("You surround yourself in the force", ch, NULL, NULL,
                    TO_CHAR);
                act("$n surrounds themself in the force", ch, NULL, NULL,
                    TO_NOTVICT);
                SET_BIT(ch->special, SPC_JEDI_FSHIELD);
                ch->armor -= 1000;
                return;
        }
}

/* End of do_fshield */
void do_fspeed(CHAR_DATA * ch, char *argument)
{
        if (IS_NPC(ch))
                return;
        else if (!IS_CLASS(ch, CLASS_JEDI))
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else if (ch->level < 3)
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else if (ch->pcdata->powers[JPOWER_BODY] < 6)
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else if (ch->move < (ch->max_move / 2))
        {
                send_to_char
                        ("You are not vital enough to use this power.\n\r",
                         ch);
                return;
        }
        else if (IS_ITEMAFF(ch, ITEMA_SPEED))
        {
                REMOVE_BIT(ch->itemaffect, ITEMA_SPEED);
                send_to_char
                        ("Your actions slow down to normal speed as you release yourself from the force.\n\r",
                         ch);
                act("$n releases themself from the force.", ch, NULL, NULL,
                    TO_ROOM);
        }
        else
        {
                SET_BIT(ch->itemaffect, ITEMA_SPEED);
                send_to_char
                        ("You let the speed of the force envelope you.\n\r",
                         ch);
                act("$n concentrates and starts to move faster.", ch, NULL,
                    NULL, TO_ROOM);
        }
}   /* End of void do_fspeed */
void do_jtouch(CHAR_DATA * ch, char *argument)
{
        CHAR_DATA *victim;
        char      buf[MAX_STRING_LENGTH];
        char      arg[MAX_INPUT_LENGTH];
        int       touchdamage;

        argument = one_argument(argument, arg);

        if (IS_NPC(ch))
                return;
        else if (!IS_CLASS(ch, CLASS_JEDI))
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else if (ch->level < 3)
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else if (ch->pcdata->powers[JPOWER_BODY] < 7)
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else if (ch->move < 2000)
        {
                send_to_char("You do not have the vitality to do this\n\r",
                             ch);
                return;
        }
        else if (arg[0] == '\0')
        {
                send_to_char("Who do you wish to attack with the force?\n\r",
                             ch);
                return;
        }
        else if ((victim = get_char_room(ch, NULL, arg)) == NULL)
        {
                send_to_char("They aren't here.\n\r", ch);
                return;
        }
        else if (victim->level < 3)
        {
                send_to_char("You cannot do that to them.\n\r", ch);
                return;
        }
        else if (victim->position == POS_FIGHTING)
        {
                send_to_char("They are already in a fight.\n\r", ch);
                return;
        }
        else if (is_safe(ch, victim))
        {
                send_to_char("You cannot seem to do it.\n\r", ch);
                return;
        }
        else if (victim->hit < (victim->max_hit))
        {
                send_to_char("They are hurt.\n\r", ch);
                return;
        }
        else
        {
                ch->move -= 500;
                if (IS_ITEMAFF(ch, ITEMA_SPEED))
                        touchdamage =
                                number_range(100, (victim->max_hit * .13));
                else
                        touchdamage =
                                number_range(0, (victim->max_hit * 0.1));
                if (touchdamage == 0)
                {
                        xprintf(buf,
                                "You lash out at $N blindly with the force [%d]\n\r",
                                touchdamage);
                        act(buf, ch, NULL, victim, TO_CHAR);
                        xprintf(buf,
                                "$n lashes out blindly with the force at you[%d]\n\r",
                                touchdamage);
                        act(buf, ch, NULL, victim, TO_VICT);
                        xprintf(buf,
                                "$n lashes out with the force at $N [%d]\n\r",
                                touchdamage);
                        act(buf, ch, NULL, victim, TO_NOTVICT);
                        WAIT_STATE(ch, 10);
                }
                else if ((touchdamage > 0) && (touchdamage < 101))
                {
                        xprintf(buf,
                                "You lash out at with the force, just scathing $N [%d]\n\r",
                                touchdamage);
                        act(buf, ch, NULL, victim, TO_CHAR);
                        xprintf(buf,
                                "$n lashes out with the force and scathes you [%d]\n\r",
                                touchdamage);
                        act(buf, ch, NULL, victim, TO_VICT);
                        xprintf(buf,
                                "$n lashes out with the force at $N [%d]\n\r",
                                touchdamage);
                        act(buf, ch, NULL, victim, TO_NOTVICT);
                        hurt_person(ch, victim, touchdamage);
//          victim->hit -= touchdamage;
                        WAIT_STATE(ch, 10);
                }
                else if ((touchdamage > 100) && (touchdamage < 751))
                {
                        xprintf(buf,
                                "You lash out viciously at $N with the force [%d]\n\r",
                                touchdamage);
                        act(buf, ch, NULL, victim, TO_CHAR);
                        xprintf(buf,
                                "$n lashes out vicously with the force at you, throwing you back [%d]\n\r",
                                touchdamage);
                        act(buf, ch, NULL, victim, TO_VICT);
                        xprintf(buf,
                                "$n lashes out with the force at $N knocking them over [%d]\n\r",
                                touchdamage);
                        act(buf, ch, NULL, victim, TO_NOTVICT);
                        hurt_person(ch, victim, touchdamage);
//          victim->hit -= touchdamage;
                        victim->position = POS_STUNNED;
                        WAIT_STATE(ch, 10);
                }
                else if ((touchdamage > 750) && (touchdamage < 1501))
                {
                        xprintf(buf,
                                "You channel the force violently at $N [%d]\n\r",
                                touchdamage);
                        act(buf, ch, NULL, victim, TO_CHAR);
                        xprintf(buf,
                                "You feel yourself thrown backwards as a force wave strikes you from $n [%d]\n\r",
                                touchdamage);
                        act(buf, ch, NULL, victim, TO_VICT);
                        xprintf(buf,
                                "$n lashes out with the force at $N knocking them over [%d]\n\r",
                                touchdamage);
                        act(buf, ch, NULL, victim, TO_NOTVICT);
                        hurt_person(ch, victim, touchdamage);
//          victim->hit -= touchdamage;
                        victim->position = POS_STUNNED;
                        WAIT_STATE(ch, 10);
                }
                else
                {
                        xprintf(buf,
                                "You concentrate and create a force wave engulfing $N [%d]\n\r",
                                touchdamage);
                        act(buf, ch, NULL, victim, TO_CHAR);
                        xprintf(buf,
                                "You are thrown off your feet as a wave of energy is hurled at you from $n [%d]\n\r",
                                touchdamage);
                        act(buf, ch, NULL, victim, TO_VICT);
                        xprintf(buf,
                                "$n lashes out with the force at $N knocking them over [%d]\n\r",
                                touchdamage);
                        act(buf, ch, NULL, victim, TO_NOTVICT);
                        hurt_person(ch, victim, touchdamage);
//          victim->hit -= touchdamage;
                        victim->position = POS_STUNNED;
                        WAIT_STATE(ch, 10);
                }
        }
}

/* End of Jedi Body Powers */
/* Jedi Mind Powers */
void do_jlevitate(CHAR_DATA * ch, char *argument)
{
        if (IS_NPC(ch))
                return;
        else if (!IS_CLASS(ch, CLASS_JEDI))
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else if (ch->pcdata->powers[JPOWER_MIND] < 1)
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else if (IS_SET(ch->special, SPC_JEDI_LEVITATE))
        {
                REMOVE_BIT(ch->special, SPC_JEDI_LEVITATE);
                send_to_char("You let the force move you to the ground.\n\r",
                             ch);
                return;
        }
        else
        {
                SET_BIT(ch->special, SPC_JEDI_LEVITATE);
                send_to_char
                        ("You concentrate on the force to lift you from the floor.\n\r",
                         ch);
                return;
        }
        return;

}   /* End of void do_levitate */
void do_jsight(CHAR_DATA * ch, char *argument)
{
        if (IS_NPC(ch))
                return;
        else if (!IS_CLASS(ch, CLASS_JEDI))
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else if (ch->pcdata->powers[JPOWER_MIND] < 2)
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else if (IS_SET(ch->act, PLR_HOLYLIGHT))
        {
                REMOVE_BIT(ch->act, PLR_HOLYLIGHT);
                send_to_char("You release your jedi vision.\n\r", ch);
                return;
        }
        else
        {
                SET_BIT(ch->act, PLR_HOLYLIGHT);
                send_to_char("Your jedi senses enhance your vision.\n\r", ch);

                return;
        }
        return;
}   /* End of void do_jsight */
void do_jsense(CHAR_DATA * ch, char *argument)
{
        CHAR_DATA *victim;
        OBJ_DATA *obj;
        char      arg[MAX_INPUT_LENGTH];
        char      buf[MAX_INPUT_LENGTH];

        argument = one_argument(argument, arg);

        if (IS_NPC(ch))
                return;
        else if (!IS_CLASS(ch, CLASS_JEDI))
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else if (ch->pcdata->powers[JPOWER_MIND] < 3)
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else if (arg[0] == '\0')
        {
                send_to_char("Sense the aura on what?\n\r", ch);
                return;
        }
        else if ((victim = get_char_room(ch, NULL, arg)) == NULL)
        {
                if ((obj = get_obj_carry(ch, arg, ch)) == NULL)
                {
                        send_to_char("Sense the aura on what?\n\r", ch);
                        return;
                }
                act("$n examines $p intently.", ch, obj, NULL, TO_ROOM);
                spell_identify(skill_lookup("identify"), ch->level, ch, obj);
                return;
        }
        else if (!IS_NPC(victim) && (IS_IMMUNE(victim, IMM_SHIELDED) ||
                                     (IS_CLASS(victim, CLASS_DROW)
                                      && IS_SET(victim->pcdata->powers[1],
                                                DPOWER_DROWSHIELD)))
                 && !IS_ITEMAFF(ch, ITEMA_VISION))
        {
                send_to_char("You are unable to read their aura.\n\r", ch);
                return;
        }
        act("$n examines $N intently.", ch, NULL, victim, TO_NOTVICT);
        act("$n examines you intently.", ch, NULL, victim, TO_VICT);
        if (IS_NPC(victim))
                xprintf(buf, "%s is an NPC.\n\r", victim->short_descr);
        else
                xprintf(buf, "%s's Stats : ", victim->pcdata->switchname);
        send_to_char(buf, ch);
        xprintf(buf, "Hp:%d/%d, Mana:%d/%d, Move:%d/%d.\n\r", victim->hit,
                victim->max_hit, victim->mana, victim->max_mana, victim->move,
                victim->max_move);
        send_to_char(buf, ch);
        return;
}   /* End of void do_jsense */
void do_jeyes(CHAR_DATA * ch, char *argument)
{
        CHAR_DATA *victim;
        ROOM_INDEX_DATA *chroom;
        ROOM_INDEX_DATA *victimroom;
        char      arg[MAX_INPUT_LENGTH];

        argument = one_argument(argument, arg);

        if (IS_NPC(ch))
                return;
        else if (!IS_CLASS(ch, CLASS_JEDI))
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else if (ch->pcdata->powers[JPOWER_MIND] < 4)
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        if (arg[0] == '\0')
        {
                send_to_char("Whose eyes do you wish to look through?\n\r",
                             ch);
                return;
        }
        if ((victim = get_char_world(ch, arg)) == NULL)
        {
                send_to_char("They aren't here.\n\r", ch);
                return;
        }
        if (IS_NPC(victim))
        {
                send_to_char("You cannot scry a mobile .\n\r", ch);
                return;
        }
        chroom = ch->in_room;
        victimroom = victim->in_room;

        char_from_room(ch);
        char_to_room(ch, victimroom);
        if (IS_AFFECTED(ch, AFF_SHADOWPLANE)
            && (!IS_AFFECTED(victim, AFF_SHADOWPLANE)))
        {
                REMOVE_BIT(ch->affected_by, AFF_SHADOWPLANE);
                do_look(ch, "auto");
                SET_BIT(ch->affected_by, AFF_SHADOWPLANE);
        }
        else if (!IS_AFFECTED(ch, AFF_SHADOWPLANE)
                 && (IS_AFFECTED(victim, AFF_SHADOWPLANE)))
        {
                SET_BIT(ch->affected_by, AFF_SHADOWPLANE);
                do_look(ch, "auto");
                REMOVE_BIT(ch->affected_by, AFF_SHADOWPLANE);
        }
        else
                do_look(ch, "auto");
        char_from_room(ch);
        char_to_room(ch, chroom);
        ch->fight_timer = 10;
        if (IS_CLASS(victim, CLASS_MONK) && victim->pcdata->powers[PMONK] > 1
            && victim->level > 2)
        {
                send_to_char
                        ("You feel your soul being invaded by an outside force.\n\r",
                         victim);
                return;
        }

        if ((victim->pcdata->powers[JPOWER_SPIRIT] < 2)
            && IS_CLASS(victim, CLASS_JEDI) && victim->level > 2)
                send_to_char
                        ("You sense the force moving as you are being watched.\n\r",
                         victim);
        return;
}   /* End of void do_jeyes */
void do_jfocus(CHAR_DATA * ch, char *argument)
{
        char      arg[MAX_INPUT_LENGTH];

        argument = one_argument(argument, arg);

        if (IS_NPC(ch))
                return;
        else if (!IS_CLASS(ch, CLASS_JEDI))
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else if (ch->pcdata->powers[JPOWER_MIND] < 5)
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else if (IS_AFFECTED(ch, AFF_SHADOWSIGHT))
        {
                send_to_char("You can no longer see between planes.\n\r", ch);
                REMOVE_BIT(ch->affected_by, AFF_SHADOWSIGHT);
                return;
        }
        send_to_char("You can now see between planes.\n\r", ch);
        SET_BIT(ch->affected_by, AFF_SHADOWSIGHT);
        return;
}   /* End of void do_jfocus */

/* End of Jedi Mind Powers */
/* Jedi Spirit Powers */
void do_jhealing(CHAR_DATA * ch, char *argument)
{
        if (IS_NPC(ch))
                return;
        else if (!IS_CLASS(ch, CLASS_JEDI))
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else if (ch->pcdata->powers[JPOWER_SPIRIT] < 1)
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else if (ch->move < 100)
        {
                send_to_char("You don't have enough move.\n\r", ch);
                return;
        }
        else if (ch->position == POS_FIGHTING)
        {
                send_to_char("You cannot do this whilst fighting.\n\r", ch);
                return;
        }
        else if (ch->fight_timer > 0)
        {
                send_to_char
                        ("You cannot concentrate enough after a fight.\n\r",
                         ch);
                return;
        }
        ch->move = ch->move - 4000;
        ch->hit = ch->hit + 4000;
        if (ch->hit > ch->max_hit)
                ch->hit = ch->max_hit;
        send_to_char("The Force encompasses you.\n\r", ch);
        act("$n is surrounded in the Force.", ch, NULL, NULL, TO_ROOM);
        WAIT_STATE(ch, 5);
        return;
}   /* End of void do_jhealing */
void do_jwalk(CHAR_DATA * ch, char *argument)
{

        if (IS_NPC(ch))
                return;
        else if (!IS_CLASS(ch, CLASS_JEDI))
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else if (ch->pcdata->powers[JPOWER_SPIRIT] < 3)
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else if (ch->pcdata->powers[JPOWER_MIND] < 5)
        {
                send_to_char
                        ("This power must be used in conjuntion with Jedi Mind Power Level 5\n\r",
                         ch);
                return;
        }
        else if (!IS_AFFECTED(ch, AFF_SHADOWSIGHT))
        {
                send_to_char
                        ("You must have jedi focus active to use this power\n\r",
                         ch);
                return;
        }
        else if (has_timer(ch))
                return;
        else if (!IS_AFFECTED(ch, AFF_SHADOWPLANE))
        {
                send_to_char("You fade into the plane of jedi thought.\n\r",
                             ch);
                act("The force flicker and swallow up $n.", ch, NULL, NULL,
                    TO_ROOM);
                SET_BIT(ch->affected_by, AFF_SHADOWPLANE);
                do_look(ch, "auto");
                return;
        }
        REMOVE_BIT(ch->affected_by, AFF_SHADOWPLANE);
        send_to_char("You fade back into the real world.\n\r", ch);
        act("The shadows flicker and $n fades into existance.", ch, NULL,
            NULL, TO_ROOM);
        do_look(ch, "auto");
        return;
}   /* End of void do_jwalk */
void do_jfight(CHAR_DATA * ch, char *argument)
{
        if (IS_NPC(ch))
                return;
        else if (!IS_CLASS(ch, CLASS_JEDI))
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else if (ch->move < 2000)
        {
                send_to_char("You do not have the vitality to do this.\n\r",
                             ch);
                return;
        }
        else if (ch->position != POS_FIGHTING)
        {
                send_to_char("You must be fighting.\n\r", ch);
                return;
        }
        else if (IS_SET(ch->special, SPC_JEDI_QUICKEN))
        {
                send_to_char
                        ("You are already in a state of jedi fighting.\n\r",
                         ch);
                return;
        }
        else
        {
                SET_BIT(ch->special, SPC_JEDI_QUICKEN);
                act("Your actions become guided by the force.", ch, NULL,
                    NULL, TO_CHAR);
                act("$n's become guided in the force.", ch, NULL, NULL,
                    TO_NOTVICT);
                ch->move -= 2000;
                return;
        }
}
void do_jsummon(CHAR_DATA * ch, char *argument)
{
        char      arg1[MAX_INPUT_LENGTH];
        int       dam;
        CHAR_DATA *victim;
        char      buf[MAX_STRING_LENGTH];

        argument = one_argument(argument, arg1);

        if (IS_NPC(ch))
                return;
        else if (!IS_CLASS(ch, CLASS_JEDI))
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else if (ch->pcdata->powers[JPOWER_SPIRIT] < 6)
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else if (ch->move < 2000)
        {
                send_to_char("You do not have the vitality to do this.\n\r",
                             ch);
                return;
        }
        else if ((victim = ch->fighting) == NULL)
        {
                send_to_char("They aren't here.\n\r", ch);
                return;
        }
        else if (ch->position != POS_FIGHTING)
        {
                send_to_char("You must be fighting.\n\r", ch);
                return;
        }
        else if (ch->pcdata->powers[JEDI_FOCUS] < 50)
        {
                send_to_char
                        ("You do not have the 50 jedi points necessary to do this\n\r",
                         ch);
                return;
        }
        else
        {
                ch->move -= 500;
                ch->pcdata->powers[JEDI_FOCUS] -= 50;
                if (ch->generation == 6)
                        dam = number_range(0, (victim->max_hit * 0.05));
                else if (ch->generation == 5)
                        dam = number_range(0, (victim->max_hit * 0.07));
                else if (ch->generation == 4)
                        dam = number_range(0, (victim->max_hit * 0.10));
                else if (ch->generation == 3)
                        dam = number_range(0, (victim->max_hit * 0.13));
                else if (ch->generation == 2)
                        dam = number_range(0, (victim->max_hit * 0.16));
                else if (ch->generation == 1)
                        dam = number_range(0, (victim->max_hit * 0.20));
                else if (ch->generation == 0)
                        dam = number_range(0, (victim->max_hit * 0.25));
                else
                        dam = number_range(0, (victim->max_hit * 0.03));


                send_to_char
                        ("You calm your thoughts and call upon the force to guide your blows\n\r",
                         ch);
                xprintf(buf,
                        "$n closes their eyes, a look of concentration surrounds them");
                act(buf, ch, NULL, NULL, TO_NOTVICT);

                if (dam == 0)
                {
                        xprintf(buf,
                                "Your blow against $N miss entirely[%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_CHAR);
                        xprintf(buf,
                                "You watch as $n flails wildly with the force [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_VICT);
                        xprintf(buf,
                                "$n flails wildly with the force [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_NOTVICT);
                }
                else
                {
                        xprintf(buf,
                                "Your summon all the force in a single blow against $N [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_CHAR);
                        xprintf(buf, "You feel the force from $n [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_VICT);
                        xprintf(buf,
                                "$n unleashes a single blow at $N [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_NOTVICT);
                }
                hurt_person(ch, victim, dam);
//      victim->hit -= dam;
                update_pos(victim);
                WAIT_STATE(ch, 10);
        }
}   /* End of Jedi Spirit Powers *//* Jedi Technique Powers */
void do_jsault(CHAR_DATA * ch, char *argument)
{
        int       dam;
        CHAR_DATA *victim;
        OBJ_DATA *obj;
        char      buf[MAX_STRING_LENGTH];

        if (IS_NPC(ch))
                return;
        else if (!IS_CLASS(ch, CLASS_JEDI))
        {
                send_to_char("Huh?.\n\r", ch);
                return;
        }
        else if (ch->pcdata->powers[JPOWER_TECHNIQUE] < 1)
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else if ((victim = ch->fighting) == NULL)
        {
                send_to_char("They aren't here.\n\r", ch);
                return;
        }
        else if (ch->position != POS_FIGHTING)
        {
                send_to_char("You must be fighting.\n\r", ch);
                return;
        }
        else if (((obj = get_eq_char(ch, WEAR_WIELD)) == NULL
                  || obj->pIndexData->vnum != 33416)
                 && ((obj = get_eq_char(ch, WEAR_HOLD)) == NULL
                     || obj->pIndexData->vnum != 33416))
        {
                send_to_char("You need to wield a lightsaber.\n\r", ch);
                return;
        }
        else if (ch->move < 1500)
        {
                send_to_char
                        ("You are not vital enough to use combo moves.\n\r",
                         ch);
                return;
        }
        else
        {
                if (IS_SET(ch->special, SPC_JEDI_QUICKEN))
                {
                        WAIT_STATE(ch, 6);
                }
                else
                {
                        WAIT_STATE(ch, 9);
                }
                ch->move -= 100;
                if (ch->pcdata->stats[JEDI_COMBO_CURR] == 0)
                {
                        ch->pcdata->stats[JEDI_COMBO_CURR] = 1;
                        dam = 890 + number_range(50, 350);
                        act("A intensity of the Force grows around you(1-1).",
                            ch, NULL, NULL, TO_CHAR);
                        act("A intensity of the Force grows around $n.", ch,
                            NULL, NULL, TO_NOTVICT);
                }
                else if (ch->pcdata->stats[JEDI_COMBO_CURR] == 14)
                {
                        ch->pcdata->stats[JEDI_COMBO_CURR] = 15;
                        dam = 850 + number_range(75, 550);
                        act("A intensity of the Force grows around you(5-4).",
                            ch, NULL, NULL, TO_CHAR);
                        act("A intensity of the Force grows around $n.", ch,
                            NULL, NULL, TO_NOTVICT);
                }
                else if (ch->pcdata->stats[JEDI_COMBO_CURR] == 24)
                {
                        ch->pcdata->stats[JEDI_COMBO_CURR] = 0;
                        dam = 2490 + number_range(500, 1500);
                        act("A intensity of the Force explodes around you(6-F).", ch, NULL, NULL, TO_CHAR);
                        act("A intensity of the Force explodes around $n.",
                            ch, NULL, NULL, TO_NOTVICT);
                        act("You launch yourself into the air.", ch, NULL,
                            NULL, TO_CHAR);
                        act("$n leaps high into the air.", ch, NULL, NULL,
                            TO_NOTVICT);
                        xprintf(buf,
                                "You somersault over $N's scathing their back with your sabre [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_CHAR);
                        xprintf(buf,
                                "You feel a burning as $n cuts into you with their lightsaber [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_VICT);
                        xprintf(buf,
                                "$n cuts a wound into $N's back as they somersault over them [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_NOTVICT);
                        hurt_person(ch, victim, dam);
//          victim->hit -= dam;
                        return;

                }
                else
                {
                        if (ch->pcdata->stats[JEDI_COMBO_CURR] > 0)
                        {
                                act("A intensity of the Force fizzles out.",
                                    ch, NULL, NULL, TO_CHAR);
                                act("A intensity of the Force dissipates around $n.", ch, NULL, NULL, TO_NOTVICT);
                                ch->pcdata->stats[JEDI_COMBO_CURR] = 0;
                        }
                        dam = 830 + number_range(50, 250);
                }
                act("You launch yourself into the air.", ch, NULL, NULL,
                    TO_CHAR);
                act("$n leaps high into the air.", ch, NULL, NULL,
                    TO_NOTVICT);
                if (dam == 0)
                {
                        xprintf(buf,
                                "You miss $N with your jedi somersault [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_CHAR);
                        xprintf(buf,
                                "$n misses you with their jedi somersault [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_VICT);
                        xprintf(buf,
                                "$n misses $N with their jedi somersault [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_NOTVICT);
                }
                else if ((dam > 0) && (dam < 100))
                {
                        xprintf(buf,
                                "You clip $N with your lightsaber as you somersault over them [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_CHAR);
                        xprintf(buf,
                                "$n clips you with their lightsaber as they somersault over you [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_VICT);
                        xprintf(buf,
                                "$n clips $N with their lightsaber as they jedi somersault [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_NOTVICT);
                }
                else if (dam >= 100)
                {
                        xprintf(buf,
                                "You slice $N with your lightsaber as you somersault over them [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_CHAR);
                        xprintf(buf,
                                "$n slice you with their lightsaber as they somersault over you [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_VICT);
                        xprintf(buf,
                                "$n slice $N with their lightsaber as they jedi somersault [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_NOTVICT);
                }
        }
        hurt_person(ch, victim, dam);
//  victim->hit -= dam;
        WAIT_STATE(ch, 8);
        return;
}   /* End of void do_jsault */

void do_jreverse(CHAR_DATA * ch, char *argument)
{
        int       dam;
        CHAR_DATA *victim;
        OBJ_DATA *obj;
        char      buf[MAX_STRING_LENGTH];

        if (IS_NPC(ch))
                return;
        else if (!IS_CLASS(ch, CLASS_JEDI))
        {
                send_to_char("Huh?.\n\r", ch);
                return;
        }
        else if (ch->pcdata->powers[JPOWER_TECHNIQUE] < 2)
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else if ((victim = ch->fighting) == NULL)
        {
                send_to_char("They aren't here.\n\r", ch);
                return;
        }
        else if (ch->position != POS_FIGHTING)
        {
                send_to_char("You must be fighting.\n\r", ch);
                return;
        }
        else if (((obj = get_eq_char(ch, WEAR_WIELD)) == NULL
                  || obj->pIndexData->vnum != 33416)
                 && ((obj = get_eq_char(ch, WEAR_HOLD)) == NULL
                     || obj->pIndexData->vnum != 33416))
        {
                send_to_char("You need to wield a lightsaber.\n\r", ch);
                return;
        }
        else if (ch->move < 1500)
        {
                send_to_char
                        ("You are not vital enough to use combo moves.\n\r",
                         ch);
                return;
        }
        else
        {
                if (IS_SET(ch->special, SPC_JEDI_QUICKEN))
                {
                        WAIT_STATE(ch, 6);
                }
                else
                {
                        WAIT_STATE(ch, 9);
                }
                ch->move -= 100;
                if (ch->pcdata->stats[JEDI_COMBO_CURR] == 1)
                {
                        ch->pcdata->stats[JEDI_COMBO_CURR] = 2;
                        dam = 860 + number_range(50, 375);
                        act("A intensity of the Force grows around you(1-2).",
                            ch, NULL, NULL, TO_CHAR);
                        act("A intensity of the Force grows around $n.", ch,
                            NULL, NULL, TO_NOTVICT);
                }
                else if (ch->pcdata->stats[JEDI_COMBO_CURR] == 8)
                {
                        ch->pcdata->stats[JEDI_COMBO_CURR] = 9;
                        dam = 870 + number_range(50, 395);
                        act("A intensity of the Force grows around you(4-2).",
                            ch, NULL, NULL, TO_CHAR);
                        act("A intensity of the Force grows around $n.", ch,
                            NULL, NULL, TO_NOTVICT);
                }
                else
                {
                        if (ch->pcdata->stats[JEDI_COMBO_CURR] > 0)
                        {
                                act("A intensity of the Force fizzles out.",
                                    ch, NULL, NULL, TO_CHAR);
                                act("A intensity of the Force dissipates around $n.", ch, NULL, NULL, TO_NOTVICT);
                                ch->pcdata->stats[JEDI_COMBO_CURR] = 0;
                        }
                        dam = 840 + number_range(50, 290);
                }
                act("You turn around swinging your lightsaber.", ch, NULL,
                    NULL, TO_CHAR);
                act("$n turns aroudn swinging their lightsaber.", ch, NULL,
                    NULL, TO_NOTVICT);
                if (dam == 0)
                {
                        xprintf(buf,
                                "You miss $N with your jedi reverse [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_CHAR);
                        xprintf(buf,
                                "$n misses you with their jedi reverse [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_VICT);
                        xprintf(buf,
                                "$n misses $N with their jedi reverse [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_NOTVICT);
                }
                else if ((dam > 0) && (dam < 100))
                {
                        xprintf(buf,
                                "You clip $N with your lightsaber as you turn in the jedi reverse [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_CHAR);
                        xprintf(buf,
                                "$n clips you with their lightsaber as they turn around [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_VICT);
                        xprintf(buf,
                                "$n clips $N with their lightsaber as they turn around [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_NOTVICT);
                }
                else if (dam >= 100)
                {
                        xprintf(buf,
                                "You slice $N with your lightsaber as you turn around [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_CHAR);
                        xprintf(buf,
                                "$n slice you with their lightsaber as they turn around [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_VICT);
                        xprintf(buf,
                                "$n slice $N with their lightsaber as they turn around [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_NOTVICT);
                }
        }
        hurt_person(ch, victim, dam);
//  victim->hit -= dam;
        WAIT_STATE(ch, 8);
        return;
}
void do_jkneel(CHAR_DATA * ch, char *argument)
{
        int       dam;
        CHAR_DATA *victim;
        OBJ_DATA *obj;
        char      buf[MAX_STRING_LENGTH];

        if (IS_NPC(ch))
                return;
        else if (!IS_CLASS(ch, CLASS_JEDI))
        {
                send_to_char("Huh?.\n\r", ch);
                return;
        }
        else if (ch->pcdata->powers[JPOWER_TECHNIQUE] < 3)
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else if ((victim = ch->fighting) == NULL)
        {
                send_to_char("They aren't here.\n\r", ch);
                return;
        }
        else if (ch->position != POS_FIGHTING)
        {
                send_to_char("You must be fighting.\n\r", ch);
                return;
        }
        else if (((obj = get_eq_char(ch, WEAR_WIELD)) == NULL
                  || obj->pIndexData->vnum != 33416)
                 && ((obj = get_eq_char(ch, WEAR_HOLD)) == NULL
                     || obj->pIndexData->vnum != 33416))
        {
                send_to_char("You need to wield a lightsaber.\n\r", ch);
                return;
        }
        else if (ch->move < 1500)
        {
                send_to_char
                        ("You are not vital enough to use combo moves.\n\r",
                         ch);
                return;
        }
        else
        {
                if (IS_SET(ch->special, SPC_JEDI_QUICKEN))
                {
                        WAIT_STATE(ch, 6);
                }
                else
                {
                        WAIT_STATE(ch, 9);
                }
                ch->move -= 100;
                if (ch->pcdata->stats[JEDI_COMBO_CURR] == 2)
                {
                        ch->pcdata->stats[JEDI_COMBO_CURR] = 0;
                        dam = 960 + number_range(200, 550);
                        act("A intensity of the Force grows around you(1-F).",
                            ch, NULL, NULL, TO_CHAR);
                        act("A intensity of the Force grows around $n.", ch,
                            NULL, NULL, TO_NOTVICT);
                        act("You drop to one knee swinging your lightsaber.",
                            ch, NULL, NULL, TO_CHAR);
                        act("$n drops to one knee swinging their lightsaber.",
                            ch, NULL, NULL, TO_NOTVICT);
                        xprintf(buf,
                                "You unleash the force solidly at $N's legs buckling them [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_CHAR);
                        xprintf(buf,
                                "You feel your knees buckle as $n swings at them [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_VICT);
                        xprintf(buf,
                                "$N looks in pain as $n buckles their knees [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_NOTVICT);
                        hurt_person(ch, victim, dam);
//          victim->hit -= dam;
                        return;
                }
                else if (ch->pcdata->stats[JEDI_COMBO_CURR] == 13)
                {
                        ch->pcdata->stats[JEDI_COMBO_CURR] = 14;
                        dam = 850 + number_range(50, 450);
                        act("A intensity of the Force grows around you(5-3).",
                            ch, NULL, NULL, TO_CHAR);
                        act("A intensity of the Force grows around $n.", ch,
                            NULL, NULL, TO_NOTVICT);
                }
                else if (ch->pcdata->stats[JEDI_COMBO_CURR] == 3)
                {
                        ch->pcdata->stats[JEDI_COMBO_CURR] = 4;
                        dam = 840 + number_range(50, 410);
                        act("A intensity of the Force grows around you(2-2).",
                            ch, NULL, NULL, TO_CHAR);
                        act("A intensity of the Force grows around $n.", ch,
                            NULL, NULL, TO_NOTVICT);
                }
                else if (ch->pcdata->stats[JEDI_COMBO_CURR] == 15)
                {
                        ch->pcdata->stats[JEDI_COMBO_CURR] = 16;
                        dam = 860 + number_range(50, 470);
                        act("A intensity of the Force grows around you(5-5).",
                            ch, NULL, NULL, TO_CHAR);
                        act("A intensity of the Force grows around $n.", ch,
                            NULL, NULL, TO_NOTVICT);
                }
                else if (ch->pcdata->stats[JEDI_COMBO_CURR] == 18)
                {
                        ch->pcdata->stats[JEDI_COMBO_CURR] = 19;
                        dam = 860 + number_range(30, 434);
                        act("A intensity of the Force grows around you(6-3).",
                            ch, NULL, NULL, TO_CHAR);
                        act("A intensity of the Force grows around $n.", ch,
                            NULL, NULL, TO_NOTVICT);
                }
                else
                {
                        if (ch->pcdata->stats[JEDI_COMBO_CURR] > 0)
                        {
                                act("A intensity of the Force fizzles out.",
                                    ch, NULL, NULL, TO_CHAR);
                                act("A intensity of the Force dissipates around $n.", ch, NULL, NULL, TO_NOTVICT);
                                ch->pcdata->stats[JEDI_COMBO_CURR] = 0;
                        }
                        dam = 850 + number_range(20, 340);
                }
                act("You drop to one knee swinging your lightsaber.", ch,
                    NULL, NULL, TO_CHAR);
                act("$n drops to one knee swinging their lightsaber.", ch,
                    NULL, NULL, TO_NOTVICT);
                if (dam == 0)
                {
                        xprintf(buf,
                                "You miss $N with your jedi kneel [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_CHAR);
                        xprintf(buf,
                                "$n misses you with their jedi kneel [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_VICT);
                        xprintf(buf,
                                "$n misses $N with their jedi kneel [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_NOTVICT);
                }
                else if ((dam > 0) && (dam < 100))
                {
                        xprintf(buf,
                                "You clip $N with your lightsaber as you kneel [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_CHAR);
                        xprintf(buf,
                                "$n clips you with their lightsaber as they kneel [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_VICT);
                        xprintf(buf,
                                "$n clips $N with their lightsaber as they kneel [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_NOTVICT);
                }
                else if (dam >= 100)
                {
                        xprintf(buf,
                                "You slice $N with your lightsaber as you kneel [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_CHAR);
                        xprintf(buf,
                                "$n slice you with their lightsaber as they kneel [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_VICT);
                        xprintf(buf,
                                "$n slice $N with their lightsaber as they kneel [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_NOTVICT);
                }
        }
        hurt_person(ch, victim, dam);
//  victim->hit -= dam;
        WAIT_STATE(ch, 8);

        return;
}
void do_jstab(CHAR_DATA * ch, char *argument)
{
        int       dam;
        CHAR_DATA *victim;
        OBJ_DATA *obj;
        char      buf[MAX_STRING_LENGTH];

        if (IS_NPC(ch))
                return;
        else if (!IS_CLASS(ch, CLASS_JEDI))
        {
                send_to_char("Huh?.\n\r", ch);
                return;
        }
        else if (ch->pcdata->powers[JPOWER_TECHNIQUE] < 4)
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else if ((victim = ch->fighting) == NULL)
        {
                send_to_char("They aren't here.\n\r", ch);
                return;
        }
        else if (ch->position != POS_FIGHTING)
        {
                send_to_char("You must be fighting.\n\r", ch);
                return;
        }
        else if (((obj = get_eq_char(ch, WEAR_WIELD)) == NULL
                  || obj->pIndexData->vnum != 33416)
                 && ((obj = get_eq_char(ch, WEAR_HOLD)) == NULL
                     || obj->pIndexData->vnum != 33416))
        {
                send_to_char("You need to wield a lightsaber.\n\r", ch);
                return;
        }
        else if (ch->move < 1500)
        {
                send_to_char
                        ("You are not vital enough to use combo moves.\n\r",
                         ch);
                return;
        }
        else
        {
                if (IS_SET(ch->special, SPC_JEDI_QUICKEN))
                {
                        WAIT_STATE(ch, 6);
                }
                else
                {
                        WAIT_STATE(ch, 9);
                }
                ch->move -= 100;
                if (ch->pcdata->stats[JEDI_COMBO_CURR] == 0)
                {
                        ch->pcdata->stats[JEDI_COMBO_CURR] = 3;
                        dam = 860 + number_range(50, 350);
                        act("A intensity of the Force grows around you(2-1).",
                            ch, NULL, NULL, TO_CHAR);
                        act("A intensity of the Force grows around $n.", ch,
                            NULL, NULL, TO_NOTVICT);
                }
                else if (ch->pcdata->stats[JEDI_COMBO_CURR] == 10)
                {
                        ch->pcdata->stats[JEDI_COMBO_CURR] = 11;
                        dam = 830 + number_range(40, 320);
                        act("A intensity of the Force grows around you(4-4).",
                            ch, NULL, NULL, TO_CHAR);
                        act("A intensity of the Force grows around $n.", ch,
                            NULL, NULL, TO_NOTVICT);
                }
                else if (ch->pcdata->stats[JEDI_COMBO_CURR] == 16)
                {
                        dam = 2590 + number_range(400, 900);
                        ch->pcdata->stats[JEDI_COMBO_CURR] = 0;
                        act("A intensity of the Force grows around you(5-F).",
                            ch, NULL, NULL, TO_CHAR);
                        act("A intensity of the Force grows around $n.", ch,
                            NULL, NULL, TO_NOTVICT);
                        act("You reverse your grip on your light sabre lightsaber.", ch, NULL, NULL, TO_CHAR);
                        act("$n reveses their grip on their light sabre.", ch,
                            NULL, NULL, TO_NOTVICT);
                        xprintf(buf, "You stab deep into $N's body [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_CHAR);
                        xprintf(buf,
                                "$n stabs you with their light sabre [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_VICT);
                        xprintf(buf,
                                "$n stabs $N in one swift strike [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_NOTVICT);
                        hurt_person(ch, victim, dam);
//          victim->hit -= dam;
                        return;
                }
                else
                {
                        if (ch->pcdata->stats[JEDI_COMBO_CURR] > 0)
                        {
                                act("A intensity of the Force fizzles out.",
                                    ch, NULL, NULL, TO_CHAR);
                                act("A intensity of the Force dissipates around $n.", ch, NULL, NULL, TO_NOTVICT);
                                ch->pcdata->stats[JEDI_COMBO_CURR] = 0;
                        }
                        dam = 850 + number_range(50, 370);
                }
                act("You reverse your grip on your light sabre lightsaber.",
                    ch, NULL, NULL, TO_CHAR);
                act("$n reveses their grip on their light sabre.", ch, NULL,
                    NULL, TO_NOTVICT);
                if (dam == 0)
                {
                        xprintf(buf,
                                "You miss $N with your jedi stab [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_CHAR);
                        xprintf(buf,
                                "$n misses you with their jedi stab [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_VICT);
                        xprintf(buf,
                                "$n misses $N with their jedi stab [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_NOTVICT);
                }
                else if ((dam > 0) && (dam < 100))
                {
                        xprintf(buf,
                                "You clip $N as you stab with your lightsaber [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_CHAR);
                        xprintf(buf,
                                "$n clips you with their lightsaber as they stab [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_VICT);
                        xprintf(buf,
                                "$n clips $N with their lightsaber as they stab [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_NOTVICT);
                }
                else if (dam >= 100)
                {
                        xprintf(buf,
                                "You slice $N with your lightsaber as you stab them [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_CHAR);
                        xprintf(buf,
                                "$n slice you with their lightsaber as they stab at you [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_VICT);
                        xprintf(buf,
                                "$n slice $N with their lightsaber as they stab [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_NOTVICT);
                }
        }
        hurt_person(ch, victim, dam);
//  victim->hit -= dam;
        WAIT_STATE(ch, 8);
        return;
}
void do_jhigh(CHAR_DATA * ch, char *argument)
{
        int       dam;
        CHAR_DATA *victim;
        OBJ_DATA *obj;
        char      buf[MAX_STRING_LENGTH];

        if (IS_NPC(ch))
                return;
        else if (!IS_CLASS(ch, CLASS_JEDI))
        {
                send_to_char("Huh?.\n\r", ch);
                return;
        }
        else if (ch->pcdata->powers[JPOWER_TECHNIQUE] < 5)
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else if ((victim = ch->fighting) == NULL)
        {
                send_to_char("They aren't here.\n\r", ch);
                return;
        }
        else if (ch->position != POS_FIGHTING)
        {
                send_to_char("You must be fighting.\n\r", ch);
                return;
        }
        else if (((obj = get_eq_char(ch, WEAR_WIELD)) == NULL
                  || obj->pIndexData->vnum != 33416)
                 && ((obj = get_eq_char(ch, WEAR_HOLD)) == NULL
                     || obj->pIndexData->vnum != 33416))
        {
                send_to_char("You need to wield a lightsaber.\n\r", ch);
                return;
        }
        else if (ch->move < 1500)
        {
                send_to_char
                        ("You are not vital enough to use combo moves.\n\r",
                         ch);
                return;
        }
        else
        {
                if (IS_SET(ch->special, SPC_JEDI_QUICKEN))
                {
                        WAIT_STATE(ch, 6);
                }
                else
                {
                        WAIT_STATE(ch, 9);
                }
                ch->move -= 100;
                if (ch->pcdata->stats[JEDI_COMBO_CURR] == 0)
                {
                        ch->pcdata->stats[JEDI_COMBO_CURR] = 8;
                        dam = 880 + number_range(40, 320);
                        act("A intensity of the Force grows around you(4-1).",
                            ch, NULL, NULL, TO_CHAR);
                        act("A intensity of the Force grows around $n.", ch,
                            NULL, NULL, TO_NOTVICT);
                }
                else if (ch->pcdata->stats[JEDI_COMBO_CURR] == 11)
                {
                        dam = 980 + number_range(300, 800);
                        ch->pcdata->stats[JEDI_COMBO_CURR] = 0;
                        act("A intensity of the Force grows around you(4-F).",
                            ch, NULL, NULL, TO_CHAR);
                        act("A intensity of the Force grows around $n.", ch,
                            NULL, NULL, TO_NOTVICT);
                        act("You raise your lightsaber high above your head.",
                            ch, NULL, NULL, TO_CHAR);
                        act("$n raises their light sabre high above their head.", ch, NULL, NULL, TO_NOTVICT);
                        xprintf(buf,
                                "You bring your light sabre down solidly on $N's head [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_CHAR);
                        xprintf(buf,
                                "$n strikes at you with his light sabre [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_VICT);
                        xprintf(buf,
                                "$n strikes $N down in one cleaving strike [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_NOTVICT);
                        hurt_person(ch, victim, dam);
//          victim->hit -= dam;
                        return;
                }
                else if (ch->pcdata->stats[JEDI_COMBO_CURR] == 23)
                {
                        dam = 880 + number_range(40, 690);
                        ch->pcdata->stats[JEDI_COMBO_CURR] = 24;
                        act("A intensity of the Force grows around you(6-8).",
                            ch, NULL, NULL, TO_CHAR);
                        act("A intensity of the Force grows around $n.", ch,
                            NULL, NULL, TO_NOTVICT);
                }
                else
                {
                        if (ch->pcdata->stats[JEDI_COMBO_CURR] > 0)
                        {
                                act("A intensity of the Force fizzles out.",
                                    ch, NULL, NULL, TO_CHAR);
                                act("A intensity of the Force dissipates around $n.", ch, NULL, NULL, TO_NOTVICT);
                                ch->pcdata->stats[JEDI_COMBO_CURR] = 0;
                        }
                        dam = 870 + number_range(50, 340);
                }
                act("You raise your lightsaber high above your head.", ch,
                    NULL, NULL, TO_CHAR);
                act("$n raises their light sabre high above their head.", ch,
                    NULL, NULL, TO_NOTVICT);
                if (dam == 0)
                {
                        xprintf(buf,
                                "You miss $N with your jedi strike [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_CHAR);
                        xprintf(buf,
                                "$n misses you with their jedi strike [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_VICT);
                        xprintf(buf,
                                "$n misses $N with their jedi strike [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_NOTVICT);
                }
                else if ((dam > 0) && (dam < 100))
                {
                        xprintf(buf,
                                "You clip $N as you strike with your lightsaber [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_CHAR);
                        xprintf(buf,
                                "$n clips you with their lightsaber as they strike [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_VICT);
                        xprintf(buf,
                                "$n clips $N with their lightsaber as they strike [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_NOTVICT);
                }
                else if (dam >= 100)
                {
                        xprintf(buf,
                                "You slice $N with your lightsaber as you strike them [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_CHAR);
                        xprintf(buf,
                                "$n slice you with their lightsaber as they strike at you [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_VICT);
                        xprintf(buf,
                                "$n slice $N with their lightsaber as they strike [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_NOTVICT);
                }
        }
        hurt_person(ch, victim, dam);
//  victim->hit -= dam;
        WAIT_STATE(ch, 8);
        return;
}
void do_jupper(CHAR_DATA * ch, char *argument)
{
        int       dam;
        CHAR_DATA *victim;
        OBJ_DATA *obj;
        char      buf[MAX_STRING_LENGTH];

        if (IS_NPC(ch))
                return;
        else if (!IS_CLASS(ch, CLASS_JEDI))
        {
                send_to_char("Huh?.\n\r", ch);
                return;
        }
        else if (ch->pcdata->powers[JPOWER_TECHNIQUE] < 6)
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else if ((victim = ch->fighting) == NULL)
        {
                send_to_char("They aren't here.\n\r", ch);
                return;
        }
        else if (ch->position != POS_FIGHTING)
        {
                send_to_char("You must be fighting.\n\r", ch);
                return;
        }
        else if (((obj = get_eq_char(ch, WEAR_WIELD)) == NULL
                  || obj->pIndexData->vnum != 33416)
                 && ((obj = get_eq_char(ch, WEAR_HOLD)) == NULL
                     || obj->pIndexData->vnum != 33416))
        {
                send_to_char("You need to wield a lightsaber.\n\r", ch);
                return;
        }
        else if (ch->move < 1500)
        {
                send_to_char
                        ("You are not vital enough to use combo moves.\n\r",
                         ch);
                return;
        }
        else
        {
                if (IS_SET(ch->special, SPC_JEDI_QUICKEN))
                {
                        WAIT_STATE(ch, 6);
                }
                else
                {
                        WAIT_STATE(ch, 9);
                }
                ch->move -= 100;
                if (ch->pcdata->stats[JEDI_COMBO_CURR] == 4)
                {
                        ch->pcdata->stats[JEDI_COMBO_CURR] = 0;
                        dam = 890 + number_range(300, 750);
                        act("A intensity of the Force grows around you(2-F).",
                            ch, NULL, NULL, TO_CHAR);
                        act("A intensity of the Force grows around $n.", ch,
                            NULL, NULL, TO_NOTVICT);
                        act("You lunge into a searing uppercut with your lightsaber.", ch, NULL, NULL, TO_CHAR);
                        act("$n leaps into an uppercut holding his lightsaber high.", ch, NULL, NULL, TO_NOTVICT);
                        xprintf(buf,
                                "You unleash the force solidly at $N's head in a sweeping uppercut [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_CHAR);
                        xprintf(buf,
                                "You feel yourself be throw back as $n's uppercut strikes you [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_VICT);
                        xprintf(buf,
                                "$n strikes deep into $N with an uppercut [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_NOTVICT);
                        hurt_person(ch, victim, dam);
//          victim->hit -= dam;
                        return;

                }
                else if (ch->pcdata->stats[JEDI_COMBO_CURR] == 19)
                {
                        ch->pcdata->stats[JEDI_COMBO_CURR] = 20;
                        dam = 890 + number_range(50, 350);
                        act("A intensity of the Force grows around you(6-4).",
                            ch, NULL, NULL, TO_CHAR);
                        act("A intensity of the Force grows around $n.", ch,
                            NULL, NULL, TO_NOTVICT);
                }
                else
                {
                        if (ch->pcdata->stats[JEDI_COMBO_CURR] > 0)
                        {
                                act("A intensity of the Force fizzles out.",
                                    ch, NULL, NULL, TO_CHAR);
                                act("A intensity of the Force dissipates around $n.", ch, NULL, NULL, TO_NOTVICT);
                                ch->pcdata->stats[JEDI_COMBO_CURR] = 0;
                        }
                        dam = 860 + number_range(40, 340);
                }
                act("You lunge into a searing uppercut with your lightsaber.",
                    ch, NULL, NULL, TO_CHAR);
                act("$n leaps into an uppercut holding his lightsaber high.",
                    ch, NULL, NULL, TO_NOTVICT);
                if (dam == 0)
                {
                        xprintf(buf,
                                "You miss $N with your jedi uppercut [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_CHAR);
                        xprintf(buf,
                                "$n misses you with their jedi uppercut [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_VICT);
                        xprintf(buf,
                                "$n misses $N with their jedi uppercut [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_NOTVICT);
                }
                else if ((dam > 0) && (dam < 100))
                {
                        xprintf(buf,
                                "You clip $N as you stab with your uppercut [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_CHAR);
                        xprintf(buf,
                                "$n clips you with their lightsaber as they upercut [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_VICT);
                        xprintf(buf,
                                "$n clips $N with their lightsaber as they uppercut [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_NOTVICT);
                }
                else if (dam >= 100)
                {
                        xprintf(buf,
                                "You slice $N with your lightsaber as you uppercut them [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_CHAR);
                        xprintf(buf,
                                "$n slice you with their lightsaber as they uppercut at you [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_VICT);
                        xprintf(buf,
                                "$n slice $N with their lightsaber as they uppercut [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_NOTVICT);
                }
        }
        hurt_person(ch, victim, dam);
//  victim->hit -= dam;
        WAIT_STATE(ch, 8);
        return;
}
void do_jbutterfly(CHAR_DATA * ch, char *argument)
{
        int       dam;
        CHAR_DATA *victim;
        OBJ_DATA *obj;
        char      buf[MAX_STRING_LENGTH];

        if (IS_NPC(ch))
                return;
        else if (!IS_CLASS(ch, CLASS_JEDI))
        {
                send_to_char("Huh?.\n\r", ch);
                return;
        }
        else if (ch->pcdata->powers[JPOWER_TECHNIQUE] < 7)
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else if ((victim = ch->fighting) == NULL)
        {
                send_to_char("They aren't here.\n\r", ch);
                return;
        }
        else if (ch->position != POS_FIGHTING)
        {
                send_to_char("You must be fighting.\n\r", ch);
                return;
        }
        else if (((obj = get_eq_char(ch, WEAR_WIELD)) == NULL
                  || obj->pIndexData->vnum != 33416)
                 && ((obj = get_eq_char(ch, WEAR_HOLD)) == NULL
                     || obj->pIndexData->vnum != 33416))
        {
                send_to_char("You need to wield a lightsaber.\n\r", ch);
                return;
        }
        else if (ch->move < 1500)
        {
                send_to_char
                        ("You are not vital enough to use combo moves.\n\r",
                         ch);
                return;
        }
        else
        {
                if (IS_SET(ch->special, SPC_JEDI_QUICKEN))
                {
                        WAIT_STATE(ch, 6);
                }
                else
                {
                        WAIT_STATE(ch, 9);
                }
                ch->move -= 100;
                if (ch->pcdata->stats[JEDI_COMBO_CURR] == 0)
                {
                        ch->pcdata->stats[JEDI_COMBO_CURR] = 3;
                        dam = 870 + number_range(50, 380);
                        act("A intensity of the Force grows around you(2-1).",
                            ch, NULL, NULL, TO_CHAR);
                        act("A intensity of the Force grows around $n.", ch,
                            NULL, NULL, TO_NOTVICT);
                }
                else if (ch->pcdata->stats[JEDI_COMBO_CURR] == 12)
                {
                        ch->pcdata->stats[JEDI_COMBO_CURR] = 13;
                        dam = 860 + number_range(50, 630);
                        act("A intensity of the Force grows around you(5-2).",
                            ch, NULL, NULL, TO_CHAR);
                        act("A intensity of the Force grows around $n.", ch,
                            NULL, NULL, TO_NOTVICT);
                }
                else if (ch->pcdata->stats[JEDI_COMBO_CURR] == 7)
                {
                        ch->pcdata->stats[JEDI_COMBO_CURR] = 0;
                        dam = 3000 + number_range(260, 550);
                        act("A intensity of the Force grows around you(3-F).",
                            ch, NULL, NULL, TO_CHAR);
                        act("A intensity of the Force grows around $n.", ch,
                            NULL, NULL, TO_NOTVICT);
                        act("You swing your light sabre around your body.",
                            ch, NULL, NULL, TO_CHAR);
                        act("$n swings their light sabre around their body.",
                            ch, NULL, NULL, TO_NOTVICT);
                        xprintf(buf,
                                "You unleash the force solidly at $N [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_CHAR);
                        xprintf(buf,
                                "You feel your strength leave as $n strikes at you with the force [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_VICT);
                        xprintf(buf,
                                "$N looks weaker as $n strikes out with the force [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_NOTVICT);
                        hurt_person(ch, victim, (dam / 2));
//          victim->hit -= (dam/2);
                        victim->move -= dam;
                        if (victim->move < 0)
                                victim->move = 0;
                        ch->move += dam;
                        if (ch->move > (ch->max_move * 1.3))
                                (ch->move = ch->max_move * 1.3);
                        return;
                }
                else if (ch->pcdata->stats[JEDI_COMBO_CURR] == 20)
                {
                        ch->pcdata->stats[JEDI_COMBO_CURR] = 21;
                        dam = 870 + number_range(50, 524);
                        act("A intensity of the Force grows around you(6-5).",
                            ch, NULL, NULL, TO_CHAR);
                        act("A intensity of the Force grows around $n.", ch,
                            NULL, NULL, TO_NOTVICT);
                }
                else if (ch->pcdata->stats[JEDI_COMBO_CURR] == 22)
                {
                        ch->pcdata->stats[JEDI_COMBO_CURR] = 23;
                        dam = 860 + number_range(50, 470);
                        act("A intensity of the Force grows around you(6-7).",
                            ch, NULL, NULL, TO_CHAR);
                        act("A intensity of the Force grows around $n.", ch,
                            NULL, NULL, TO_NOTVICT);
                }
                else
                {
                        if (ch->pcdata->stats[JEDI_COMBO_CURR] > 0)
                        {
                                act("A intensity of the Force fizzles out.",
                                    ch, NULL, NULL, TO_CHAR);
                                act("A intensity of the Force dissipates around $n.", ch, NULL, NULL, TO_NOTVICT);
                                ch->pcdata->stats[JEDI_COMBO_CURR] = 0;
                        }
                        dam = 860 + number_range(60, 290);
                }
                act("You swing your light sabre around your body.", ch, NULL,
                    NULL, TO_CHAR);
                act("$n swings their light sabre around their body.", ch,
                    NULL, NULL, TO_NOTVICT);
                if (dam == 0)
                {
                        xprintf(buf,
                                "You miss $N with your jedi butterfly [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_CHAR);
                        xprintf(buf,
                                "$n misses you with their jedi butterfly [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_VICT);
                        xprintf(buf,
                                "$n misses $N with their jedi butterfly [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_NOTVICT);
                }
                else if ((dam > 0) && (dam < 100))
                {
                        xprintf(buf,
                                "You clip $N as you swing with your lightsaber [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_CHAR);
                        xprintf(buf,
                                "$n clips you with their lightsaber as they swing it around their body [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_VICT);
                        xprintf(buf,
                                "$n clips $N with their lightsaber as they swing their light sabre around their body [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_NOTVICT);
                }
                else if (dam >= 100)
                {
                        xprintf(buf,
                                "You slice $N with your lightsaber as you swing it [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_CHAR);
                        xprintf(buf,
                                "$n slice you with their lightsaber as they swing at you [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_VICT);
                        xprintf(buf,
                                "$n slice $N with their lightsaber as they swing it [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_NOTVICT);
                }
        }
        hurt_person(ch, victim, dam);
//  victim->hit -= dam;
        WAIT_STATE(ch, 8);
        return;
}
void do_jcross(CHAR_DATA * ch, char *argument)
{
        int       dam;
        CHAR_DATA *victim;
        OBJ_DATA *obj;
        char      buf[MAX_STRING_LENGTH];

        if (IS_NPC(ch))
                return;
        else if (!IS_CLASS(ch, CLASS_JEDI))
        {
                send_to_char("Huh?.\n\r", ch);
                return;
        }
        else if (ch->pcdata->powers[JPOWER_TECHNIQUE] < 8)
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else if ((victim = ch->fighting) == NULL)
        {
                send_to_char("They aren't here.\n\r", ch);
                return;
        }
        else if (ch->position != POS_FIGHTING)
        {
                send_to_char("You must be fighting.\n\r", ch);
                return;
        }
        else if (((obj = get_eq_char(ch, WEAR_WIELD)) == NULL
                  || obj->pIndexData->vnum != 33416)
                 && ((obj = get_eq_char(ch, WEAR_HOLD)) == NULL
                     || obj->pIndexData->vnum != 33416))
        {
                send_to_char("You need to wield a lightsaber.\n\r", ch);
                return;
        }
        else if (ch->move < 1500)
        {
                send_to_char
                        ("You are not vital enough to use combo moves.\n\r",
                         ch);
                return;
        }
        else
        {
                if (IS_SET(ch->special, SPC_JEDI_QUICKEN))
                {
                        WAIT_STATE(ch, 6);
                }
                else
                {
                        WAIT_STATE(ch, 9);
                }
                ch->move -= 100;
                if (ch->pcdata->stats[JEDI_COMBO_CURR] == 6)
                {
                        ch->pcdata->stats[JEDI_COMBO_CURR] = 7;
                        dam = 870 + number_range(50, 450);
                        act("A intensity of the Force grows around you(3-3).",
                            ch, NULL, NULL, TO_CHAR);
                        act("A intensity of the Force grows around $n.", ch,
                            NULL, NULL, TO_NOTVICT);
                }
                else if (ch->pcdata->stats[JEDI_COMBO_CURR] == 0)
                {
                        dam = 880 + number_range(50, 270);
                        act("A intensity of the Force grows around you(5-1).",
                            ch, NULL, NULL, TO_CHAR);
                        act("A intensity of the Force grows around $n.", ch,
                            NULL, NULL, TO_NOTVICT);
                        ch->pcdata->stats[JEDI_COMBO_CURR] = 12;
                }
                else if (ch->pcdata->stats[JEDI_COMBO_CURR] == 21)
                {
                        dam = 890 + number_range(60, 470);
                        ch->pcdata->stats[JEDI_COMBO_CURR] = 22;
                        act("A intensity of the Force grows around you(6-6).",
                            ch, NULL, NULL, TO_CHAR);
                        act("A intensity of the Force grows around $n.", ch,
                            NULL, NULL, TO_NOTVICT);
                }
                else
                {
                        if (ch->pcdata->stats[JEDI_COMBO_CURR] > 0)
                        {
                                act("A intensity of the Force fizzles out.",
                                    ch, NULL, NULL, TO_CHAR);
                                act("A intensity of the Force dissipates around $n.", ch, NULL, NULL, TO_NOTVICT);
                                ch->pcdata->stats[JEDI_COMBO_CURR] = 0;
                        }
                        dam = 860 + number_range(40, 680);
                }
                act("You bring your light sabre back at waist height.", ch,
                    NULL, NULL, TO_CHAR);
                act("$n brings their lightsaber back at waist height.", ch,
                    NULL, NULL, TO_NOTVICT);
                if (dam == 0)
                {
                        xprintf(buf,
                                "You miss $N with your jedi cross [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_CHAR);
                        xprintf(buf,
                                "$n misses you with their jedi cross [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_VICT);
                        xprintf(buf,
                                "$n misses $N with their jedi cross[%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_NOTVICT);
                }
                else if ((dam > 0) && (dam < 100))
                {
                        xprintf(buf,
                                "You clip $N as you cross with your lightsaber [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_CHAR);
                        xprintf(buf,
                                "$n clips you with their lightsaber as they cross you [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_VICT);
                        xprintf(buf,
                                "$n clips $N with their lightsaber as they cross them [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_NOTVICT);
                }
                else if (dam >= 100)
                {
                        xprintf(buf,
                                "You slice $N with your lightsaber as you cross them [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_CHAR);
                        xprintf(buf,
                                "$n slice you with their lightsaber as they cross at you [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_VICT);
                        xprintf(buf,
                                "$n slice $N with their lightsaber as they cross [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_NOTVICT);
                }
        }
        hurt_person(ch, victim, dam);
//  victim->hit -= dam;
        WAIT_STATE(ch, 8);
        return;
}
void do_jslash(CHAR_DATA * ch, char *argument)
{
        int       dam;
        CHAR_DATA *victim;
        OBJ_DATA *obj;
        char      buf[MAX_STRING_LENGTH];

        if (IS_NPC(ch))
                return;
        else if (!IS_CLASS(ch, CLASS_JEDI))
        {
                send_to_char("Huh?.\n\r", ch);
                return;
        }
        else if (ch->pcdata->powers[JPOWER_TECHNIQUE] < 9)
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else if ((victim = ch->fighting) == NULL)
        {
                send_to_char("They aren't here.\n\r", ch);
                return;
        }
        else if (ch->position != POS_FIGHTING)
        {
                send_to_char("You must be fighting.\n\r", ch);
                return;
        }
        else if (((obj = get_eq_char(ch, WEAR_WIELD)) == NULL
                  || obj->pIndexData->vnum != 33416)
                 && ((obj = get_eq_char(ch, WEAR_HOLD)) == NULL
                     || obj->pIndexData->vnum != 33416))
        {
                send_to_char("You need to wield a lightsaber.\n\r", ch);
                return;
        }
        else if (ch->move < 1500)
        {
                send_to_char
                        ("You are not vital enough to use combo moves.\n\r",
                         ch);
                return;
        }
        else
        {
                if (IS_SET(ch->special, SPC_JEDI_QUICKEN))
                {
                        WAIT_STATE(ch, 6);
                }
                else
                {
                        WAIT_STATE(ch, 9);
                }
                ch->move -= 100;
                if (ch->pcdata->stats[JEDI_COMBO_CURR] == 5)
                {
                        ch->pcdata->stats[JEDI_COMBO_CURR] = 6;
                        dam = 880 + number_range(50, 340);
                        act("A intensity of the Force grows around you(3-2).",
                            ch, NULL, NULL, TO_CHAR);
                        act("A intensity of the Force grows around $n.", ch,
                            NULL, NULL, TO_NOTVICT);
                }
                else if (ch->pcdata->stats[JEDI_COMBO_CURR] == 9)
                {
                        ch->pcdata->stats[JEDI_COMBO_CURR] = 10;
                        dam = 880 + number_range(50, 760);
                        act("A intensity of the Force grows around you(4-3).",
                            ch, NULL, NULL, TO_CHAR);
                        act("A intensity of the Force grows around $n.", ch,
                            NULL, NULL, TO_NOTVICT);
                }
                else if (ch->pcdata->stats[JEDI_COMBO_CURR] == 17)
                {
                        ch->pcdata->stats[JEDI_COMBO_CURR] = 18;
                        dam = 880 + number_range(150, 930);
                        act("A intensity of the Force grows around you(6-2).",
                            ch, NULL, NULL, TO_CHAR);
                        act("A intensity of the Force grows around $n.", ch,
                            NULL, NULL, TO_NOTVICT);
                }
                else if (ch->pcdata->stats[JEDI_COMBO_CURR] == 0)
                {
                        ch->pcdata->stats[JEDI_COMBO_CURR] = 17;
                        dam = 890 + number_range(160, 570);
                        act("A intensity of the Force grows around you(6-1).",
                            ch, NULL, NULL, TO_CHAR);
                        act("A intensity of the Force grows around $n.", ch,
                            NULL, NULL, TO_NOTVICT);
                }
                else
                {
                        if (ch->pcdata->stats[JEDI_COMBO_CURR] > 0)
                        {
                                act("A intensity of the Force fizzles out.",
                                    ch, NULL, NULL, TO_CHAR);
                                act("A intensity of the Force dissipates around $n.", ch, NULL, NULL, TO_NOTVICT);
                                ch->pcdata->stats[JEDI_COMBO_CURR] = 0;
                        }
                        dam = 850 + number_range(150, 660);
                }
                act("You bring your lightsaber down upon your opponent.", ch,
                    NULL, NULL, TO_CHAR);
                act("$n brings their light sabre down.", ch, NULL, NULL,
                    TO_NOTVICT);
                if (dam == 0)
                {
                        xprintf(buf,
                                "You miss $N with your jedi slash [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_CHAR);
                        xprintf(buf,
                                "$n misses you with their jedi slash [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_VICT);
                        xprintf(buf,
                                "$n misses $N with their jedi slash [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_NOTVICT);
                }
                else if ((dam > 0) && (dam < 100))
                {
                        xprintf(buf,
                                "You clip $N as you slash with your lightsaber [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_CHAR);
                        xprintf(buf,
                                "$n clips you with their lightsaber as they slash [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_VICT);
                        xprintf(buf,
                                "$n clips $N with their lightsaber as they slash [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_NOTVICT);
                }
                else if (dam >= 100)
                {
                        xprintf(buf,
                                "You slice $N with your lightsaber as you slash them [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_CHAR);
                        xprintf(buf,
                                "$n slice you with their lightsaber as they slash at you [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_VICT);
                        xprintf(buf,
                                "$n slice $N with their lightsaber as they slash [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_NOTVICT);
                }
        }
        hurt_person(ch, victim, dam);
//  victim->hit -= dam;
        WAIT_STATE(ch, 8);
        return;
}
void do_jcircle(CHAR_DATA * ch, char *argument)
{
        int       dam;
        CHAR_DATA *victim;
        OBJ_DATA *obj;
        char      buf[MAX_STRING_LENGTH];

        if (IS_NPC(ch))
                return;
        else if (!IS_CLASS(ch, CLASS_JEDI))
        {
                send_to_char("Huh?.\n\r", ch);
                return;
        }
        else if (ch->pcdata->powers[JPOWER_TECHNIQUE] < 10)
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }
        else if ((victim = ch->fighting) == NULL)
        {
                send_to_char("They aren't here.\n\r", ch);
                return;
        }
        else if (ch->position != POS_FIGHTING)
        {
                send_to_char("You must be fighting.\n\r", ch);
                return;
        }
        else if (((obj = get_eq_char(ch, WEAR_WIELD)) == NULL
                  || obj->pIndexData->vnum != 33416)
                 && ((obj = get_eq_char(ch, WEAR_HOLD)) == NULL
                     || obj->pIndexData->vnum != 33416))
        {
                send_to_char("You need to wield a lightsaber.\n\r", ch);
                return;
        }
        else if (ch->move < 1500)
        {
                send_to_char
                        ("You are not vital enough to use combo moves.\n\r",
                         ch);
                return;
        }
        else
        {
                if (IS_SET(ch->special, SPC_JEDI_QUICKEN))
                {
                        WAIT_STATE(ch, 6);
                }
                else
                {
                        WAIT_STATE(ch, 9);
                }
                ch->move -= 100;
                if (ch->pcdata->stats[JEDI_COMBO_CURR] == 0)
                {
                        ch->pcdata->stats[JEDI_COMBO_CURR] = 5;
                        dam = 860 + number_range(50, 210);
                        act("A intensity of the Force grows around you(3-1).",
                            ch, NULL, NULL, TO_CHAR);
                        act("A intensity of the Force grows around $n.", ch,
                            NULL, NULL, TO_NOTVICT);
                }
                else
                {
                        if (ch->pcdata->stats[JEDI_COMBO_CURR] > 0)
                        {
                                act("A intensity of the Force fizzles out.",
                                    ch, NULL, NULL, TO_CHAR);
                                act("A intensity of the Force dissipates around $n.", ch, NULL, NULL, TO_NOTVICT);
                                ch->pcdata->stats[JEDI_COMBO_CURR] = 0;
                        }
                        dam = 880 + number_range(0, 830);
                }
                act("You circle around your opponent.", ch, NULL, NULL,
                    TO_CHAR);
                act("$n circles behind their opponent.", ch, NULL, NULL,
                    TO_NOTVICT);
                if (dam == 0)
                {
                        xprintf(buf,
                                "You miss $N with your jedi circle [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_CHAR);
                        xprintf(buf,
                                "$n misses you with their jedi circle [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_VICT);
                        xprintf(buf,
                                "$n misses $N with their jedi circle [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_NOTVICT);
                }
                else if ((dam > 0) && (dam < 100))
                {
                        xprintf(buf,
                                "You clip $N as you circle behind them [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_CHAR);
                        xprintf(buf,
                                "$n clips you with their lightsaber as they circle behind you [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_VICT);
                        xprintf(buf,
                                "$n clips $N with their lightsaber as they circle behind them [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_NOTVICT);
                }
                else if (dam >= 100)
                {
                        xprintf(buf,
                                "You slice $N with your lightsaber as you circle them [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_CHAR);
                        xprintf(buf,
                                "$n slice you with their lightsaber as they circle you [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_VICT);
                        xprintf(buf,
                                "$n slice $N with their lightsaber as they circle [%d]\n\r",
                                dam);
                        act(buf, ch, NULL, victim, TO_NOTVICT);
                }
        }
        hurt_person(ch, victim, dam);
//  victim->hit -= dam;
        WAIT_STATE(ch, 8);
        return;
}

/* End of Jedi Technique Powers */
/* JStep Jedi Travel Technique 3-17 Berelain */
void do_jstep(CHAR_DATA * ch, char *argument)
{
        char      arg[MAX_INPUT_LENGTH];
        ROOM_INDEX_DATA *location;
        CHAR_DATA *victim;

        one_argument(argument, arg);

        if (IS_NPC(ch))
                return;

        if (!IS_CLASS(ch, CLASS_JEDI))
        {
                stc("Huh?\n\r", ch);
                return;
        }

        if ((victim = get_char_world(ch, arg)) == NULL)
        {
                send_to_char("Jstep to whom?\n\r", ch);
                return;
        }
        if (IS_SET(victim->in_room->room_flags, ROOM_ASTRAL))
        {
                stc("You can't find it's room.\n\r", ch);
                return;
        }
        if (IS_SET(ch->in_room->room_flags, ROOM_ASTRAL))
        {
                stc("Your room is not connected to the astral plane.\n\r",
                    ch);
                return;
        }
        if (IS_SET(victim->act, ACT_NOTRAVEL))
        {
                send_to_char("No Can Do.\n\r", ch);
                return;
        }
        location = victim->in_room;

        if (ch->move < 2000)
        {
                send_to_char("You are too tired to go through the force.\n\r",
                             ch);
                return;
        }
        if ((ch->in_room->vnum >= 50) && (ch->in_room->vnum <= 68))
        {
                send_to_char
                        ("You cannot activate a transporter out whilst you are in the arena.\n\r",
                         ch);
                return;
        }
        if ((victim->in_room->vnum >= 50) && (victim->in_room->vnum <= 68))
        {
                send_to_char("You cannot transport inside the arena.\n\r",
                             ch);
                return;
        }

        if (ch->fight_timer > 0)
        {
                send_to_char("Not with a fight timer!\n\r", ch);
                return;
        }
        if (!IS_NPC(victim))
        {
                if (ch->max_move < victim->max_move)
                {
                        send_to_char("Get more move!\n\r", ch);
                        return;
                }
        }
        act("You enter the force.", ch, NULL, NULL, TO_CHAR);
        act("$n walks into the force.", ch, NULL, NULL, TO_ROOM);
        ch->move -= 2000;
        char_from_room(ch);
        char_to_room(ch, location);
        do_look(ch, "auto");
        act("You walk out of the force.", ch, NULL, NULL, TO_CHAR);
        act("$n walks out of the force.", ch, NULL, NULL, TO_CHAR);

        return;
}

void do_channelforce(CHAR_DATA * ch, char *argument)
{
        int       sn;
        int       spelltype;

        if (IS_NPC(ch))
                return;

        if (!IS_CLASS(ch, CLASS_JEDI))
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }

        if (ch->mana < 500)
        {
                send_to_char("You don't have enough mana.\n\r", ch);
                return;
        }

        if ((sn = skill_lookup("forcebless")) < 0)
                return;

        spelltype = skill_table[sn].target;

        (*skill_table[sn].spell_fun) (sn, 300, ch, ch);

        WAIT_STATE(ch, 12);

        ch->mana = ch->mana - 500;

        return;

}


void do_fpush(CHAR_DATA * ch, char *argument)
{
  CHAR_DATA *mount;
  CHAR_DATA *victim;
  char arg[MAX_INPUT_LENGTH];
  char buf[MAX_STRING_LENGTH];
  ROOM_INDEX_DATA *pRoomIndex;
  int to_room;

  one_argument(argument, arg);

  if ( ch->in_room != NULL)
  {
    if  ( IS_SET(ch->in_room->room_flags, ROOM_NO_RECALL)
    ||   IS_SET(ch->in_room->room_flags, ROOM_SAFE)
    ||   IS_SET(ch->in_room->room_flags, ROOM_NO_TELEPORT)
    ||   IS_SET(ch->in_room->room_flags, ROOM_ASTRAL))
    {
        send_to_char( "You cannot use this power here.\n\r", ch );
        return;
    }
  }

  if (arg[0] == '\0')
  {
    send_to_char("Push who?\n\r", ch);
    return;
  }

  if ((victim = get_char_room(ch, NULL, arg)) == NULL)
  {
     send_to_char("They aren't here.\n\r", ch);
     return;
  }

  if (ch->position != POS_FIGHTING)
  {
     send_to_char("You can only use this power in battle!\n\r", ch);
     return;
  }

  if (is_safe(ch,victim)) return;

  if (IS_CLASS(ch, CLASS_JEDI) && ch->pcdata->powers[J_TIMER] > 0)
  {
    stc("You cannot do that yet.\n\r",ch);
    return;
  }

  if ( number_percent() >= 45 )
  {
    sprintf(buf,"%s failed to force push you!\n\r",ch->name); 
    stc("Push Failed.\n\r",ch);
    stc(buf,victim);
    WAIT_STATE(ch,16); 
//    ch->pcdata->fail_count++;
    return;
}
//  ch->pcdata->fail_count = 0;

  for ( ; ; )
  {
    to_room = number_range( 3000, 50000 );
    pRoomIndex = get_room_index( to_room );
    if ( pRoomIndex != NULL )
    if ( !IS_SET(pRoomIndex->room_flags, ROOM_PRIVATE)
      &&   !IS_SET(pRoomIndex->room_flags, ROOM_SOLITARY)
      &&   !IS_SET(pRoomIndex->room_flags, ROOM_NO_TELEPORT)
      &&   !IS_SET(pRoomIndex->room_flags, ROOM_ASTRAL)
      &&   to_room != 30008 && to_room != 30002 )
            break;
  }

  stop_fighting(ch,TRUE);
  act( "You push $N into the skies.", ch, NULL, victim, TO_CHAR );
  act( "$N is thrown into the skies by $n.", ch, NULL, victim, TO_ROOM );
  act( "$n concentrates and throws you into the sky and from the room.", ch, NULL, victim, TO_VICT );
  char_from_room( victim );
  char_to_room( victim, pRoomIndex );
  do_look( victim, "auto" );
  act( "$N lands here on their back.", ch, NULL, victim, TO_ROOM );
  act( "You land here on your back.", ch, NULL, victim, TO_VICT );
  if ( (mount = ch->mount) != NULL )
  {
    char_from_room( mount );
    char_to_room( mount, ch->in_room );
    do_look( mount, "auto" );
  }
  ch->fight_timer += 5; 
  stop_fighting(victim,TRUE);
  if ( ch->pcdata->powers[JPOWER_MIND] > 4) ch->pcdata->powers[J_TIMER] = 4;
  else ch->pcdata->powers[J_TIMER] = 6;  
  return;

}