Advertisement
Guest User

NecroPatch

a guest
Apr 27th, 2013
233
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 9.14 KB | None | 0 0
  1. From 46a862f5a756fe081c89f62fcf64f69f6fd12118 Mon Sep 17 00:00:00 2001
  2. From: Molrune <Matthew_ferrill@yahoo.com>
  3. Date: Fri, 26 Apr 2013 18:46:45 -0400
  4. Subject: [PATCH] Added New Class -> Necromancer
  5.  
  6. -> Needs Talents -> (Match Talents for Frost in mage, Fire in Mage, and Demonology in Warlock)
  7. -> Needs Spells
  8. -> Needs Playercreateinfo_Spell (Match Spells for Frost in mage, Fire in Mage, and Demonology in Warlock)
  9. -> Needs Playercreateinfo_Item
  10. ---
  11.  src/server/game/Entities/Creature/Creature.cpp |  3 ++-
  12.  src/server/game/Entities/Item/ItemPrototype.h  |  5 +++--
  13.  src/server/game/Entities/Player/Player.cpp     |  8 +++++---
  14.  src/server/game/Entities/Unit/StatSystem.cpp   | 15 +++++++++++----
  15.  src/server/game/Globals/ObjectMgr.cpp          |  7 +++++++
  16.  src/server/game/Miscellaneous/SharedDefines.h  | 15 ++++++++++-----
  17.  6 files changed, 38 insertions(+), 15 deletions(-)
  18.  
  19. diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp
  20. index 3dc91f6..1dcd86f 100644
  21. --- a/src/server/game/Entities/Creature/Creature.cpp
  22. +++ b/src/server/game/Entities/Creature/Creature.cpp
  23. @@ -908,7 +908,8 @@ bool Creature::isCanTrainingOf(Player* player, bool msg) const
  24.                      switch (GetCreatureTemplate()->trainer_class)
  25.                      {
  26.                          case CLASS_DRUID:  player->PlayerTalkClass->SendGossipMenu(4913, GetGUID()); break;
  27. -                        case CLASS_HUNTER: player->PlayerTalkClass->SendGossipMenu(10090, GetGUID()); break;
  28. +                        case CLASS_NECROMANCER:player->PlayerTalkClass->SendGossipMenu(324913, GetGUID()); break; // Necromancer Trainer
  29. +                       case CLASS_HUNTER: player->PlayerTalkClass->SendGossipMenu(10090, GetGUID()); break;
  30.                          case CLASS_MAGE:   player->PlayerTalkClass->SendGossipMenu(328, GetGUID()); break;
  31.                          case CLASS_PALADIN:player->PlayerTalkClass->SendGossipMenu(1635, GetGUID()); break;
  32.                          case CLASS_PRIEST: player->PlayerTalkClass->SendGossipMenu(4436, GetGUID()); break;
  33. diff --git a/src/server/game/Entities/Item/ItemPrototype.h b/src/server/game/Entities/Item/ItemPrototype.h
  34. index bbd9ed8..ae53be4 100644
  35. --- a/src/server/game/Entities/Item/ItemPrototype.h
  36. +++ b/src/server/game/Entities/Item/ItemPrototype.h
  37. @@ -501,10 +501,11 @@ enum ItemSubclassGlyph
  38.      ITEM_SUBCLASS_GLYPH_SHAMAN                  = 7,
  39.      ITEM_SUBCLASS_GLYPH_MAGE                    = 8,
  40.      ITEM_SUBCLASS_GLYPH_WARLOCK                 = 9,
  41. -    ITEM_SUBCLASS_GLYPH_DRUID                   = 11
  42. +    ITEM_SUBCLASS_GLYPH_DRUID                   = 11,
  43. +   ITEM_SUBCLASS_GLYPH_NECROMANCER             = 12
  44.  };
  45.  
  46. -#define MAX_ITEM_SUBCLASS_GLYPH                   12
  47. +#define MAX_ITEM_SUBCLASS_GLYPH                   13
  48.  
  49.  const uint32 MaxItemSubclassValues[MAX_ITEM_CLASS] =
  50.  {
  51. diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
  52. index f595532..d728f54 100644
  53. --- a/src/server/game/Entities/Player/Player.cpp
  54. +++ b/src/server/game/Entities/Player/Player.cpp
  55. @@ -6766,7 +6766,8 @@ void Player::GetDodgeFromAgility(float &diminishing, float &nondiminishing)
  56.           0.036587f, // Mage
  57.           0.024211f, // Warlock
  58.           0.0f,      // ??
  59. -         0.056097f  // Druid
  60. +         0.056097f,  // Druid
  61. +        0.036587f // Necromancer
  62.      };
  63.      // Crit/agility to dodge/agility coefficient multipliers; 3.2.0 increased required agility by 15%
  64.      const float crit_to_dodge[MAX_CLASSES] =
  65. @@ -6781,7 +6782,8 @@ void Player::GetDodgeFromAgility(float &diminishing, float &nondiminishing)
  66.           1.00f/1.15f,    // Mage
  67.           0.97f/1.15f,    // Warlock (?)
  68.           0.0f,           // ??
  69. -         2.00f/1.15f     // Druid
  70. +         2.00f/1.15f,     // Druid
  71. +        1.00f/1.15f    // Necromancer
  72.      };
  73.  
  74.      uint8 level = getLevel();
  75. @@ -13130,7 +13132,7 @@ InventoryResult Player::CanRollForItemInLFG(ItemTemplate const* proto, WorldObje
  76.              if (proto->SubClass != ITEM_SUBCLASS_ARMOR_LEATHER)
  77.                  return EQUIP_ERR_CANT_DO_RIGHT_NOW;
  78.  
  79. -        if (_class == CLASS_MAGE || _class == CLASS_PRIEST || _class == CLASS_WARLOCK)
  80. +        if (_class == CLASS_MAGE || _class == CLASS_PRIEST || _class == CLASS_WARLOCK || _class == CLASS_NECROMANCER)
  81.              if (proto->SubClass != ITEM_SUBCLASS_ARMOR_CLOTH)
  82.                  return EQUIP_ERR_CANT_DO_RIGHT_NOW;
  83.      }
  84. diff --git a/src/server/game/Entities/Unit/StatSystem.cpp b/src/server/game/Entities/Unit/StatSystem.cpp
  85. index 74a5fcd..7e9fc7c 100644
  86. --- a/src/server/game/Entities/Unit/StatSystem.cpp
  87. +++ b/src/server/game/Entities/Unit/StatSystem.cpp
  88. @@ -404,6 +404,9 @@ void Player::UpdateAttackPowerAndDamage(bool ranged)
  89.              case CLASS_WARLOCK:
  90.                  val2 = GetStat(STAT_STRENGTH) - 10.0f;
  91.                  break;
  92. +           case CLASS_NECROMANCER:
  93. +                val2 = GetStat(STAT_STRENGTH) - 10.0f;
  94. +                break;
  95.          }
  96.      }
  97.  
  98. @@ -638,7 +641,8 @@ const float m_diminishing_k[MAX_CLASSES] =
  99.      0.9830f,  // Mage
  100.      0.9830f,  // Warlock
  101.      0.0f,     // ??
  102. -    0.9720f   // Druid
  103. +    0.9720f,   // Druid
  104. +   0.9830f  // Necromancer
  105.  };
  106.  
  107.  float Player::GetMissPercentageFromDefence() const
  108. @@ -655,7 +659,8 @@ float Player::GetMissPercentageFromDefence() const
  109.          16.00f,     // Mage    //?
  110.          16.00f,     // Warlock //?
  111.          0.0f,       // ??
  112. -        16.00f      // Druid   //?
  113. +        16.00f,      // Druid   //?
  114. +       16.00f     // Necromancer//?
  115.      };
  116.  
  117.      float diminishing = 0.0f, nondiminishing = 0.0f;
  118. @@ -682,7 +687,8 @@ void Player::UpdateParryPercentage()
  119.          0.0f,           // Mage
  120.          0.0f,           // Warlock
  121.          0.0f,           // ??
  122. -        0.0f            // Druid
  123. +        0.0f,           // Druid
  124. +       0.0f            // Necromancer
  125.      };
  126.  
  127.      // No parry
  128. @@ -719,7 +725,8 @@ void Player::UpdateDodgePercentage()
  129.          150.375940f,    // Mage
  130.          150.375940f,    // Warlock
  131.          0.0f,           // ??
  132. -        116.890707f     // Druid
  133. +        116.890707f,    // Druid
  134. +       150.375940f     // Necromancer
  135.      };
  136.  
  137.      float diminishing = 0.0f, nondiminishing = 0.0f;
  138. diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
  139. index cf5cda1..6b0c6d4 100644
  140. --- a/src/server/game/Globals/ObjectMgr.cpp
  141. +++ b/src/server/game/Globals/ObjectMgr.cpp
  142. @@ -3685,6 +3685,13 @@ void ObjectMgr::BuildPlayerLevelInfo(uint8 race, uint8 _class, uint8 level, Play
  143.                  info->stats[STAT_AGILITY]   += (lvl > 38 ? 2: (lvl > 8 && (lvl%2) ? 1: 0));
  144.                  info->stats[STAT_INTELLECT] += (lvl > 38 ? 3: (lvl > 4 ? 1: 0));
  145.                  info->stats[STAT_SPIRIT]    += (lvl > 38 ? 3: (lvl > 5 ? 1: 0));
  146. +           case CLASS_NECROMANCER:
  147. +                info->stats[STAT_STRENGTH]  += (lvl > 9 && !(lvl%2) ? 1: 0);
  148. +                info->stats[STAT_STAMINA]   += (lvl > 5  ? 1: 0);
  149. +                info->stats[STAT_AGILITY]   += (lvl > 9 && !(lvl%2) ? 1: 0);
  150. +                info->stats[STAT_INTELLECT] += (lvl > 24 ? 2: (lvl > 1 ? 1: 0));
  151. +                info->stats[STAT_SPIRIT]    += (lvl > 33 ? 2: (lvl > 2 ? 1: 0));
  152. +                break;
  153.          }
  154.      }
  155.  }
  156. diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h
  157. index 971e0d3..42c1707 100644
  158. --- a/src/server/game/Miscellaneous/SharedDefines.h
  159. +++ b/src/server/game/Miscellaneous/SharedDefines.h
  160. @@ -102,17 +102,18 @@ enum Classes
  161.      CLASS_MAGE          = 8,
  162.      CLASS_WARLOCK       = 9,
  163.      //Unknown          = 10,
  164. -   CLASS_DRUID         = 11
  165. +   CLASS_DRUID         = 11,
  166. +   CLASS_NECROMANCER   = 12
  167.  };
  168.  
  169.  // max+1 for player class
  170. -#define MAX_CLASSES       12
  171. +#define MAX_CLASSES       13
  172.  
  173.  #define CLASSMASK_ALL_PLAYABLE \
  174.      ((1<<(CLASS_WARRIOR-1))|(1<<(CLASS_PALADIN-1))|(1<<(CLASS_HUNTER-1))| \
  175.      (1<<(CLASS_ROGUE-1))   |(1<<(CLASS_PRIEST-1)) |(1<<(CLASS_SHAMAN-1))| \
  176.      (1<<(CLASS_MAGE-1))    |(1<<(CLASS_WARLOCK-1))|(1<<(CLASS_DRUID-1)) | \
  177. -    (1<<(CLASS_DEATH_KNIGHT-1)))
  178. +    (1<<(CLASS_NECROMANCER-1))|(1<<(CLASS_DEATH_KNIGHT-1)))
  179.  
  180.  // valid classes for creature_template.unit_class
  181.  enum UnitClass
  182. @@ -2696,7 +2697,8 @@ enum QuestSort
  183.      QUEST_SORT_JEWELCRAFTING       = 373,
  184.      QUEST_SORT_NOBLEGARDEN         = 374,
  185.      QUEST_SORT_PILGRIMS_BOUNTY     = 375,
  186. -    QUEST_SORT_LOVE_IS_IN_THE_AIR  = 376
  187. +    QUEST_SORT_LOVE_IS_IN_THE_AIR  = 376,
  188. +   QUEST_SORT_NECROMANCER         = 400
  189.  };
  190.  
  191.  inline uint8 ClassByQuestSort(int32 QuestSort)
  192. @@ -2713,6 +2715,8 @@ inline uint8 ClassByQuestSort(int32 QuestSort)
  193.          case QUEST_SORT_PRIEST:         return CLASS_PRIEST;
  194.          case QUEST_SORT_DRUID:          return CLASS_DRUID;
  195.          case QUEST_SORT_DEATH_KNIGHT:   return CLASS_DEATH_KNIGHT;
  196. +       case QUEST_SORT_NECROMANCER:    return CLASS_NECROMANCER;
  197. +
  198.      }
  199.      return 0;
  200.  }
  201. @@ -3363,7 +3367,8 @@ enum SpellFamilyNames
  202.      // 14 - unused
  203.      SPELLFAMILY_DEATHKNIGHT = 15,
  204.      // 16 - unused
  205. -    SPELLFAMILY_PET         = 17
  206. +    SPELLFAMILY_PET         = 17,
  207. +   SPELLFAMILY_NECROMANCER = 18
  208.  };
  209.  
  210.  enum TradeStatus
  211. --
  212. 1.8.0.msysgit.0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement