CLASS_INFO_WARRIOR4 = "- Uses rage as a resource.";
CLASS_INFO_NECROMANCER0 = "- Role: Damage";CLASS_INFO_NECROMANCER1 = "- Light Armor (Cloth)";CLASS_INFO_NECROMANCER2 = "- Can call forth skeletons of different combat abilities.";CLASS_INFO_NECROMANCER3 = "- Can afflict curses to weaken opponents.";CLASS_INFO_NECROMANCER4 = "- Uses mana as a resource.";
CLASS_INFO_WARRIOR0 = "- Role: Tank, Damage";CLASS_INFO_WARRIOR1 = "- Heavy Armor (Mail / Plate and Shield)";CLASS_INFO_WARRIOR2 = "- Deals damage with melee weapons.";CLASS_INFO_WARRIOR3 = "- Has 3 fighting stances with different benefits.";CLASS_INFO_WARRIOR4 = "- Uses rage as a resource.";CLASS_INFO_NECROMANCER0 = "- Role: Damage";CLASS_INFO_NECROMANCER1 = "- Light Armor (Cloth)";CLASS_INFO_NECROMANCER2 = "- Can call forth skeletons of different combat abilites.";CLASS_INFO_NECROMANCER3 = "- Can afflict curses to weaken opponents.";CLASS_INFO_NECROMANCER4 = "- Uses mana as a resource.";
tanking warriors desire Stamina as well.";
CLASS_NECROMANCER = "Necromancers are powerful spell casters thought upon by many to be of great evil. These thoughts come from the belief that summoning the dead to fight under controllers will, is a heinously unnatural disrespect towards the dead.";CLASS_NECROMANCER_FEMALE = "Necromancers are powerful spell casters thought upon by many to be of great evil. These thoughts come from the belief that summoning the dead to fight under controllers will, is a heinously unnatural disrespect towards the dead.";
CLASS_WARRIOR = "Warriors are plate-wearing fighters who strive for perfection in armed combat. As warriors deal or take damage, they generate rage, which is used to power their special attacks.|n|nWarriors can choose to focus on a two-handed weapon, dual-wielding or using a sword and shield. Warriors have several abilities that let them move quickly around the battlefield. Their primary stat is Strength, though tanking warriors desire Stamina as well.";CLASS_WARRIOR_FEMALE = "Warriors are plate-wearing fighters who strive for perfection in armed combat. As warriors deal or take damage, they generate rage, which is used to power their special attacks.|n|nWarriors can choose to focus on a two-handed weapon, dual-wielding or using a sword and shield. Warriors have several abilities that let them move quickly around the battlefield. Their primary stat is Strength, though tanking warriors desire Stamina as well.";CLASS_NECROMANCER = "Necromancers are powerful spell casters thought upon by many to be of great evil. These thoughts come from the belief that summoning the dead to fight under controllers will, is a heinously unnatural disrespect towards the dead.";CLASS_NECROMANCER_FEMALE = "Necromancers are powerful spell casters thought upon by many to be of great evil. These thoughts come from the belief that summoning the dead to fight under controllers will, is a heinously unnatural disrespect towards the dead.";
MAX_CLASSES_PER_RACE = 10;
MAX_CLASSES_PER_RACE = 11;
["DEATHKNIGHT"] = {0.25, 0.49609375, 0.5, 0.75},
["NECROMANCER"] = {0.49609375, 0.7421875, 0.5, 0.75},
<CheckButton name="CharacterCreateClassButton10" inherits="CharacterCreateClassButtonTemplate" id="10"> <Anchors> <Anchor point="TOP" relativeTo="CharacterCreateClassButton5" relativePoint="BOTTOM" x="0" y="-6"/> </Anchors></CheckButton>
<CheckButton name="CharacterCreateClassButton11" inherits="CharacterCreateClassButtonTemplate" id="11"> <Anchors> <Anchor point="LEFT" relativeTo="CharacterCreateClassButton5" relativePoint="RIGHT" x="6" y="0"/> </Anchors></CheckButton>
<Anchor point="TOP" x="-90" y="-463"/>
<Anchor point="TOP" x="-98" y="-463"/>
Obviously8*100 = 800But this starts at 0 not 100, so800-100 = 700We have to include the line that stats it's all floating, so700+1 = 701And finally, I have no idea why but, we need to add another 1. xD701+1=702
ID*32, so for me8*32=256Plus the float file256+1=257And that's the answer
257+32=289
#ifndef _NECROMANCER_H#define _NECROMANCER_Hclass Necromancer : public Player{ public: Necromancer(uint32 guid) : Player(guid) {} bool IsNecromancer() { return true; }};#endif
#include "StdAfx.h"
MovementHandler.cpp
MovementHandler.cppNecromancer.cppNPCHandler.cpp
NameTables.h
NameTables.hNecromancer.hNPCHandler.h
Mage
MAGE,NECROMANCER,SHAMAN,
DRUID = 11,
WARLOCK = 9,DRUID = 11,NECROMANCER = 12,MAX_PLAYER_CLASSES
druid - restoration - 282
druid - balance - 283druid - feral combat - 281druid - restoration - 282necromancer - curses - 450necromancer - poison and bones - 451necromancer - summoning - 452*/
static const uint32 TalentTreesPerClass[DRUID + 1][3] =
static const uint32 TalentTreesPerClass[DRUID + 2][3] =
{ 283, 281, 282 }, // DRUID
{ 283, 281, 282 }, // DRUID { 450, 451, 452 }, // NECROMANCER};
virtual bool IsDruid() { return false; }
virtual bool IsDruid() { return false; } virtual bool IsNecromancer() { return false; }
#include "Mage.h"
#include "Mage.h"#include "Hunter.h"#include "Shaman.h"#include "Necromancer.h"
case DRUID: plr = new Druid(playerGuid); break;
case DRUID: plr = new Druid(playerGuid); break;case NECROMANCER: plr = new Necromancer(playerGuid); break;
ctrl+f static const char* classes[12] = {"None", "Warrior", "Paladin", "Hunter", "Rogue", "Priest", "Death Knight", "Shaman", "Mage", "Warlock", "None", "Druid"};
static const char* classes[13] = {"None", "Warrior", "Paladin", "Hunter", "Rogue", "Priest", "Death Knight", "Shaman", "Mage", "Warlock", "None", "Druid", "Necromancer"};
ctrl+f 81 You must have Wrath of the Lich King Expansion to access this content.
81 You must have Wrath of the Lich King Expansion to access this content.82 Deathknight83 Necromancer*/
case ::DEATHKNIGHT: itemname += string(Plr->GetSession()->LocalizedWorldSrv(Gossip::DEATHKNIGHT)); break;
case ::DEATHKNIGHT: itemname += string(Plr->GetSession()->LocalizedWorldSrv(Gossip::DEATHKNIGHT)); break;case ::NECROMANCER: itemname += string(Plr->GetSession()->LocalizedWorldSrv(Gossip::NECROMANCER)); break;
ctrl+f case PRIEST: // allowing priest, warlock, mage to equip ammo will mess up wand shoot. stop it.
case PRIEST: // allowing priest, warlock, mage, necromancer to equip ammo will mess up wand shoot. stop it. case WARLOCK: case MAGE: case NECROMANCER:
{ "Druid", 0 },
{ "Druid", 0 }, { "Necromancer", 0
case DEATHKNIGHT: // Based on 55-56 more testing will be done. if(Level < 60)TotalHealthGain += 92;
case DEATHKNIGHT: // Based on 55-56 more testing will be done. if(Level < 60)TotalHealthGain += 92; /*else if(Level <60) TotalHealthGain+=??; else if(Level <70) TotalHealthGain+=??;*/ else TotalHealthGain += 92; break; case NECROMANCER: if(Level < 23)TotalHealthGain += 15;// else if(Level >60) TotalHealthGain+=Level+40; else if(Level > 60) TotalHealthGain += Level + 190; else TotalHealthGain += Level - 8; if(Level < 28)TotalManaGain += Level + 23;// else if(Level>60)TotalManaGain+=Level+26; else if(Level > 60)TotalManaGain += Level + 115; else TotalManaGain += 51; break; }
case DRUID: result = new Druid(guid); break;
case DRUID: result = new Druid(guid); break; case NECROMANCER: result = new Necromancer(guid); break;
for(uint32 Class = WARRIOR; Class <= DRUID; ++Class)
for(uint32 Class = WARRIOR; Class <= NECROMANCER; ++Class)
ctrl+f #define TRAINER_TYPE_MAX 16
#define TRAINER_TYPE_MAX 17
ctrl+f 1.7f // Druid
1.7f, // Druid 1.0f // Necromancer
if((getClass() == MAGE) || (getClass() == PRIEST) || (getClass() == WARLOCK))
if((getClass() == MAGE) || (getClass() == PRIEST) || (getClass() == WARLOCK) || (getClass() == NECROMANCER))
default: //mage,priest,warlock
default: //mage,priest,warlock,necromancer
81 You must have Wrath of the Lich King Expansion to access this content.
case STAT_SPIRIT: { gain = CalculateStat(level, 0.000006, 0.002031, 0.278360, -0.340077); }
case DEATHKNIGHT: { switch(Stat) { case STAT_STRENGTH: { gain = CalculateStat(level, 0.000039, 0.006902, 1.080040, -1.051701); } break; case STAT_AGILITY: { gain = CalculateStat(level, 0.000022, 0.004600, 0.655333, -0.600356); } break; case STAT_STAMINA: { gain = CalculateStat(level, 0.000059, 0.004044, 1.040000, -1.488504); } break; case STAT_INTELLECT: { gain = CalculateStat(level, 0.000002, 0.001003, 0.100890, -0.076055); } break; case STAT_SPIRIT: { gain = CalculateStat(level, 0.000006, 0.002031, 0.278360, -0.340077); } break; } } break; case NECROMANCER: { switch(Stat) { case STAT_STRENGTH: { gain = CalculateStat(level, 0.000002, 0.001003, 0.100890, -0.076055); } break; case STAT_AGILITY: { gain = CalculateStat(level, 0.000008, 0.001001, 0.163190, -0.064280); } break; case STAT_STAMINA: { gain = CalculateStat(level, 0.000006, 0.002031, 0.278360, -0.340077); } break; case STAT_INTELLECT: { gain = CalculateStat(level, 0.000040, 0.007416, 1.125108, -1.003045); } break; case STAT_SPIRIT: { gain = CalculateStat(level, 0.000039, 0.006981, 1.090090, -1.006070); } break; } } break;
if(plr->getClass() == DRUID) { plr->ClearCooldownsOnLine(573, guid); plr->ClearCooldownsOnLine(574, guid); plr->ClearCooldownsOnLine(134, guid); BlueSystemMessage(m_session, "Cleared all Druid cooldowns."); return true; } break;
if(plr->getClass() == DRUID) { plr->ClearCooldownsOnLine(573, guid); plr->ClearCooldownsOnLine(574, guid); plr->ClearCooldownsOnLine(134, guid); BlueSystemMessage(m_session, "Cleared all Druid cooldowns."); return true; } if(plr->getClass() == NECROMANCER) { plr->ClearCooldownsOnLine(6, guid); plr->ClearCooldownsOnLine(8, guid); plr->ClearCooldownsOnLine(237, guid); BlueSystemMessage(m_session, "Cleared all Necromancer cooldowns."); return true; }
static uint32 spellarray[DRUID + 1][512] =
static uint32 spellarray[DRUID + 2][512] =
{ 0 }, // N/A
{ 0 }, // N/A { 0 }, // Necromancer
static const char* CLASS[] =
"warlock", "invalid 10", "druid"
"warlock", "invalid 10", "druid", "necromancer"
case 458: // Realm First! Level 80 Rogue
case 458: // Realm First! Level 80 Rogue case 480: // Realm First! Level 80 Necromancer
(achievement->ID == 458 && GetPlayer()->getClass() != ROGUE) ||
(achievement->ID == 458 && GetPlayer()->getClass() != ROGUE) || (achievement->ID == 480 && GetPlayer()->getClass() != NECROMANCER) ||
INSERT INTO `playercreateinfo` VALUES (66, 1, 1, 12, 0, 12, -8946.42, -131.35, 83.63, 49, 20, 20, 20, 20, 20, 60, 0, 1000, 0, 0, 20, 3, 4, 81, '2');INSERT INTO `playercreateinfo` VALUES (67, 5, 5, 12, 0, 85, 1676.62, 1677.2, 121.67, 57, 20, 20, 20, 20, 20, 60, 0, 1000, 0, 0, 20, 3, 4, 2, '1024');
/console PlayerStatLeftDropDown Melee/console PlayerStatRightDropDown Spell/reload
MAX_RACES = 10;MAX_CLASSES_PER_RACE = 11;
Genesis: thank you for this guide. I am now closer to creating a class than I ever was before.However; I have been faced with an annoying error:Any help will be deeply appreciated.
<CheckButton name="CharacterCreateClassButton10" inherits="CharacterCreateClassButtonTemplate" id="10"> <Anchors> <Anchor point="TOP" relativeTo="CharacterCreateClassButton5" relativePoint="BOTTOM" x="0" y="-6"/> </Anchors> </CheckButton> <CheckButton name="CharacterCreateClassButton11" inherits="CharacterCreateClassButtonTemplate" id="11"> <Anchors> <Anchor point="LEFT" relativeTo="CharacterCreateClassButton5" relativePoint="RIGHT" x="6" y="0"/> </Anchors> </CheckButton>
I have to admit its a really nice Tut for Custom Classes !so Rep for you :-DBut as simple as it is i can't seem to get my Class Icon shown at the Character Create Screen....I followed every single line you wrote down.all i have left to do is the Core part but that should't be a part of this problem.Code: [Select]<CheckButton name="CharacterCreateClassButton10" inherits="CharacterCreateClassButtonTemplate" id="10"> <Anchors> <Anchor point="TOP" relativeTo="CharacterCreateClassButton5" relativePoint="BOTTOM" x="0" y="-6"/> </Anchors> </CheckButton> <CheckButton name="CharacterCreateClassButton11" inherits="CharacterCreateClassButtonTemplate" id="11"> <Anchors> <Anchor point="LEFT" relativeTo="CharacterCreateClassButton5" relativePoint="RIGHT" x="6" y="0"/> </Anchors> </CheckButton>I've changed X=6 to X=0 on Button nr 2 - 10 and tried it for button 11 aswell but without any result.Any tips would be great ! Thnx !
i'm sorry for being not clear , i meant the Button itself.I Checked the DBC's and they were all Saved properly Same for the Lua and XML , Checked the Paths and they were also fine.Tried Your BLP and my own but still no result :-(This could be the only part i did wrong i Guess..#CharBaseInfo.DBC#1 Races1-10131416#2 Classes12
ERROR #132 (0x85100084) Fatal ExceptionProgram: C:GamesWorld of Warcraft 3.3.5a (no install)World of Warcraft 3.3.5a (no install)Wow.exeException: 0xC0000005 (ACCESS_VIOLATION) at 001B:004E204F