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