// By Zazel(t3hphil@gmail.com) for Mass-Chaos.com 5000
// Thank you Igabod for striking the idea for this


// Thanks to Darien for xprintf
// You can find his snippets here: http://www.mudbytes.net/index.php?a=files&s=search&uid=51
// You will need to replace all the xprintf with sprintf or whatever you use


/* Put in merc.h */
char    *getClassByNum          args( (int class) );
int     getClassByName          args( (char *name) );

/* Put in interp.c */
{ "zclass",   do_zclass, POS_STANDING, 3, LOG_ALWAYS, 0,0,0 },
/* Put in interp.h */
DECLARE_DO_FUN( do_zclass );




/*
 * Everything below here can go into any c file...the current classself should be in
 * wizutil.c.  Just make sure to #include "interp.h" in addition to all the regulars
 */



/*
 * This is the main funciton, takes care of user input, and handles errors
 */
void do_zclass(CHAR_DATA *ch, char *argument){
        char arg1[MAX_STRING_LENGTH];
        char buf[MSL];
        argument = one_argument( argument, arg1 );
        int newClass = getClassByName(arg1);

        if (IS_NPC(ch))
                return;

        if (!IS_NPC(ch) && ch->class != 0){
                send_to_char("You already have a class.\n\r",ch);
                return;
        }
        if (ch->level < 3){
                send_to_char("You must be avatar to selfclass.\n\r",ch);
                return;
        }
        if (newClass > 0){
                ch->class = newClass;
                if (newClass == CLASS_DEMON || newClass == CLASS_FAE || newClass == CLASS_WEREWOLF || newClass == CLASS_VAMPIRE)
                        set_learnable_disciplines(ch);
                if (newClass == CLASS_GHOUL)
                        ch->hit = 1;
                if (newClass == CLASS_VAMPIRE)
                        ch->beast = 30;
                sprintf(buf, "%s is now a %s", ch->name, getClassByNum(newClass));
                send_to_char(buf, ch);
                return;

        }

        send_to_char("#CClasses#W: #WT#wype #cselfclass #Y<#yclass#Y> #wto get classed#W.#n\n\r\n\r",ch);
        send_to_char("#r--#R==[ #CMass Chaos Classes #R]==#r--#n\n\r",ch);
        send_to_char("#YDemon,        Werewolf,         Drow,           \n\r",ch);
        send_to_char("#YNinja,        Vampire,          Shapeshifter,\n\r",ch);
        send_to_char("#YBattlemage,   Tanar'ri,         Undead Knight,#n\n\r", ch);
        send_to_char("#YCyborg,       Samurai,          Monk,\n\r", ch);
        send_to_char("#YAngel,        Lich,             Ghoul,#n\n\r", ch);
        send_to_char("#YSkyblade,     Priest,           Draconian,#n\n\r", ch);
        send_to_char("#YShadow,       Jedi,             Thief,#n\n\r", ch);
        send_to_char("#YFae,          Drone,            Giant,\n\r", ch);
        send_to_char("#YHobbit,       Saiyan,           Dark Knight,\n\r",ch);
        send_to_char("#YDruid,        None,             None  \n\r\n\r", ch);
        return;
}


/*
 * Helper function to feed in a class id ex: CLASS_DEMON, and recieve a string of the name
 * Has many uses outside of this selfclass code
 */
char *getClassByNum(int class){
        char class2[MSL];
        if (class == CLASS_DEMON) xprintf(class2,"Demon");
        else if (class == CLASS_MAGE) xprintf(class2,"Battlemage");
        else if (class == CLASS_WEREWOLF) xprintf(class2,"Werewolf");
        else if (class == CLASS_VAMPIRE) xprintf(class2,"Vampire");
        else if (class == CLASS_SAMURAI) xprintf(class2,"Samurai");
        else if (class == CLASS_DROW) xprintf(class2,"Drow");
        else if (class == CLASS_MONK) xprintf(class2,"Monk");
        else if (class == CLASS_NINJA) xprintf(class2,"Ninja");
        else if (class == CLASS_LICH) xprintf(class2,"Lich");
        else if (class == CLASS_TANARRI) xprintf(class2,"Tanarri");
        else if (class == CLASS_ANGEL) xprintf(class2,"Angel");
        else if (class == CLASS_UNDEAD_KNIGHT) xprintf(class2,"Undead Knight");
        else if (class == CLASS_CYBORG) xprintf(class2,"Cyborg");
        else if (class == CLASS_DRACONIAN) xprintf(class2,"Draconian");
        else if (class == CLASS_SKYBLADE) xprintf(class2,"Skyblade");
        else if (class == CLASS_GHOUL) xprintf(class2,"Ghoul");
        else if (class == CLASS_THIEF) xprintf(class2,"Thief");
        else if (class == CLASS_PRIEST) xprintf(class2,"Priest");
        else if (class == CLASS_HOBBIT) xprintf(class2,"Hobbit");
        else if (class == CLASS_JEDI) xprintf(class2,"Jedi");
        else if (class == CLASS_SHAPESHIFTER) xprintf(class2,"Shapeshifter");
        else if (class == CLASS_SHADOW) xprintf(class2,"Shadow");
        else if (class == CLASS_GIANT) xprintf(class2,"Giant");
        else if (class == CLASS_FAE) xprintf(class2,"Fae");
        else if (class == CLASS_DRONE) xprintf(class2,"Drone");
        else if (class == CLASS_DROID) xprintf(class2,"Droid");
        else if (class == CLASS_SAIYAN) xprintf(class2,"Saiyan");
        else if (class == CLASS_DARKKNIGHT) xprintf(class2,"Dark Knight");
        else if (class == CLASS_PIXIE) xprintf(class2,"Pixie");
        else if (class == CLASS_SCOUT) xprintf(class2,"Scout");
        else if (class == CLASS_DRUID) xprintf(class2,"Druid");
        else  xprintf(class2,"None");
        return strdup(class2);
}


/*
 * This is the converse of the previous, this will provide the class number when
 * given a string.  There are better ways to do this, but would require a bit more
 * work.
*/
int getClassByName(char * name){
        int classNum = 0;
                if(!str_cmp(name,"demon"))
                        classNum = CLASS_DEMON;
                else if(!str_cmp(name, "battlemage"))
                        classNum = CLASS_MAGE;
                else if(!str_cmp(name, "werewolf"))
                        classNum = CLASS_WEREWOLF;
                else if(!str_cmp(name, "vampire"))
                        classNum = CLASS_VAMPIRE;
                else if(!str_cmp(name, "samurai"))
                        classNum = CLASS_SAMURAI;
                else if(!str_cmp(name, "drow"))
                        classNum = CLASS_DROW;
                else if(!str_cmp(name, "monk"))
                        classNum = CLASS_MONK;
                else if(!str_cmp(name, "ninja"))
                        classNum = CLASS_NINJA;
                else if(!str_cmp(name, "lich"))
                        classNum = CLASS_LICH;
                else if(!str_cmp(name, "tanarri"))
                        classNum = CLASS_TANARRI;
                else if(!str_cmp(name, "angel"))
                        classNum = CLASS_ANGEL;
                else if(!str_cmp(name, "undeadknight"))
                        classNum = CLASS_UNDEAD_KNIGHT;
                else if(!str_cmp(name, "cyborg"))
                        classNum = CLASS_CYBORG;
                else if(!str_cmp(name, "draconian"))
                        classNum = CLASS_DRACONIAN;
                else if(!str_cmp(name, "skyblade"))
                        classNum = CLASS_SKYBLADE;
                else if(!str_cmp(name, "ghoul"))
                        classNum = CLASS_GHOUL;
                else if(!str_cmp(name, "thief"))
                        classNum = CLASS_THIEF;
                else if(!str_cmp(name, "priest"))
                        classNum = CLASS_PRIEST;
                else if(!str_cmp(name, "hobbit"))
                        classNum = CLASS_HOBBIT;
                else if(!str_cmp(name, "jedi"))
                        classNum = CLASS_JEDI;
                else if(!str_cmp(name, "shapeshifter"))
                        classNum = CLASS_SHAPESHIFTER;
                else if(!str_cmp(name, "shadow"))
                        classNum = CLASS_SHADOW;
                else if(!str_cmp(name, "giant"))
                        classNum = CLASS_GIANT;
                else if(!str_cmp(name, "fae"))
                        classNum = CLASS_FAE;
                else if(!str_cmp(name, "drone"))
                        classNum = CLASS_DRONE;
                else if(!str_cmp(name, "droid"))
                        classNum = CLASS_DROID;
                else if(!str_cmp(name, "saiyan"))
                        classNum = CLASS_SAIYAN;
                else if(!str_cmp(name, "darkknight"))
                        classNum = CLASS_DARKKNIGHT;
                else if(!str_cmp(name, "scout"))
                        classNum = CLASS_SCOUT;
                else if(!str_cmp(name, "druid"))
                        classNum = CLASS_DRUID;
                else
                        classNum = 0;

        return classNum;
}