aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Globals/ObjectMgr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Globals/ObjectMgr.cpp')
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp99
1 files changed, 62 insertions, 37 deletions
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index 24c2c52387a..1bfbd85e96b 100644
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -177,12 +177,12 @@ LanguageDesc lang_description[LANGUAGES_COUNT] =
{ LANG_KALIMAG, 817, SKILL_LANG_OLD_TONGUE },
{ LANG_GNOMISH, 7340, SKILL_LANG_GNOMISH },
{ LANG_TROLL, 7341, SKILL_LANG_TROLL },
- { LANG_GUTTERSPEAK, 17737, SKILL_LANG_GUTTERSPEAK },
+ { LANG_GUTTERSPEAK, 17737, SKILL_LANG_FORSAKEN },
{ LANG_DRAENEI, 29932, SKILL_LANG_DRAENEI },
{ LANG_ZOMBIE, 0, 0 },
{ LANG_GNOMISH_BINARY, 0, 0 },
{ LANG_GOBLIN_BINARY, 0, 0 },
- { LANG_WORGEN, 69270, SKILL_LANG_WORGEN },
+ { LANG_WORGEN, 69270, SKILL_LANG_GILNEAN },
{ LANG_GOBLIN, 69269, SKILL_LANG_GOBLIN },
{ LANG_PANDAREN_NEUTRAL, 108127, SKILL_LANG_PANDAREN_NEUTRAL },
{ LANG_PANDAREN_ALLIANCE, 108130, SKILL_LANG_PANDAREN_ALLIANCE },
@@ -2323,26 +2323,26 @@ uint32 FillMaxDurability(uint32 itemClass, uint32 itemSubClass, uint32 inventory
static float const qualityMultipliers[MAX_ITEM_QUALITY] =
{
- 1.0f, 1.0f, 1.0f, 1.17f, 1.37f, 1.68f, 0.0f, 0.0f
+ 0.92f, 0.92f, 0.92f, 1.11f, 1.32f, 1.61f, 0.0f, 0.0f
};
static float const armorMultipliers[MAX_INVTYPE] =
{
0.00f, // INVTYPE_NON_EQUIP
- 0.59f, // INVTYPE_HEAD
+ 0.60f, // INVTYPE_HEAD
0.00f, // INVTYPE_NECK
- 0.59f, // INVTYPE_SHOULDERS
+ 0.60f, // INVTYPE_SHOULDERS
0.00f, // INVTYPE_BODY
1.00f, // INVTYPE_CHEST
- 0.35f, // INVTYPE_WAIST
- 0.75f, // INVTYPE_LEGS
- 0.49f, // INVTYPE_FEET
- 0.35f, // INVTYPE_WRISTS
- 0.35f, // INVTYPE_HANDS
+ 0.33f, // INVTYPE_WAIST
+ 0.72f, // INVTYPE_LEGS
+ 0.48f, // INVTYPE_FEET
+ 0.33f, // INVTYPE_WRISTS
+ 0.33f, // INVTYPE_HANDS
0.00f, // INVTYPE_FINGER
0.00f, // INVTYPE_TRINKET
0.00f, // INVTYPE_WEAPON
- 1.00f, // INVTYPE_SHIELD
+ 0.72f, // INVTYPE_SHIELD
0.00f, // INVTYPE_RANGED
0.00f, // INVTYPE_CLOAK
0.00f, // INVTYPE_2HWEAPON
@@ -2361,27 +2361,27 @@ uint32 FillMaxDurability(uint32 itemClass, uint32 itemSubClass, uint32 inventory
static float const weaponMultipliers[MAX_ITEM_SUBCLASS_WEAPON] =
{
- 0.89f, // ITEM_SUBCLASS_WEAPON_AXE
- 1.03f, // ITEM_SUBCLASS_WEAPON_AXE2
- 0.77f, // ITEM_SUBCLASS_WEAPON_BOW
- 0.77f, // ITEM_SUBCLASS_WEAPON_GUN
- 0.89f, // ITEM_SUBCLASS_WEAPON_MACE
- 1.03f, // ITEM_SUBCLASS_WEAPON_MACE2
- 1.03f, // ITEM_SUBCLASS_WEAPON_POLEARM
- 0.89f, // ITEM_SUBCLASS_WEAPON_SWORD
- 1.03f, // ITEM_SUBCLASS_WEAPON_SWORD2
- 0.00f, // ITEM_SUBCLASS_WEAPON_Obsolete
- 1.03f, // ITEM_SUBCLASS_WEAPON_STAFF
+ 0.91f, // ITEM_SUBCLASS_WEAPON_AXE
+ 1.00f, // ITEM_SUBCLASS_WEAPON_AXE2
+ 1.00f, // ITEM_SUBCLASS_WEAPON_BOW
+ 1.00f, // ITEM_SUBCLASS_WEAPON_GUN
+ 0.91f, // ITEM_SUBCLASS_WEAPON_MACE
+ 1.00f, // ITEM_SUBCLASS_WEAPON_MACE2
+ 1.00f, // ITEM_SUBCLASS_WEAPON_POLEARM
+ 0.91f, // ITEM_SUBCLASS_WEAPON_SWORD
+ 1.00f, // ITEM_SUBCLASS_WEAPON_SWORD2
+ 1.00f, // ITEM_SUBCLASS_WEAPON_WARGLAIVES
+ 1.00f, // ITEM_SUBCLASS_WEAPON_STAFF
0.00f, // ITEM_SUBCLASS_WEAPON_EXOTIC
0.00f, // ITEM_SUBCLASS_WEAPON_EXOTIC2
- 0.64f, // ITEM_SUBCLASS_WEAPON_FIST_WEAPON
+ 0.66f, // ITEM_SUBCLASS_WEAPON_FIST_WEAPON
0.00f, // ITEM_SUBCLASS_WEAPON_MISCELLANEOUS
- 0.64f, // ITEM_SUBCLASS_WEAPON_DAGGER
- 0.64f, // ITEM_SUBCLASS_WEAPON_THROWN
+ 0.66f, // ITEM_SUBCLASS_WEAPON_DAGGER
+ 0.00f, // ITEM_SUBCLASS_WEAPON_THROWN
0.00f, // ITEM_SUBCLASS_WEAPON_SPEAR
- 0.77f, // ITEM_SUBCLASS_WEAPON_CROSSBOW
- 0.64f, // ITEM_SUBCLASS_WEAPON_WAND
- 0.64f, // ITEM_SUBCLASS_WEAPON_FISHING_POLE
+ 1.00f, // ITEM_SUBCLASS_WEAPON_CROSSBOW
+ 0.66f, // ITEM_SUBCLASS_WEAPON_WAND
+ 0.66f, // ITEM_SUBCLASS_WEAPON_FISHING_POLE
};
float levelPenalty = 1.0f;
@@ -2393,10 +2393,10 @@ uint32 FillMaxDurability(uint32 itemClass, uint32 itemSubClass, uint32 inventory
if (inventoryType > INVTYPE_ROBE)
return 0;
- return 5 * uint32(23.0f * qualityMultipliers[quality] * armorMultipliers[inventoryType] * levelPenalty + 0.5f);
+ return 5 * uint32(round(25.0f * qualityMultipliers[quality] * armorMultipliers[inventoryType] * levelPenalty));
}
- return 5 * uint32(17.0f * qualityMultipliers[quality] * weaponMultipliers[itemSubClass] * levelPenalty + 0.5f);
+ return 5 * uint32(round(18.0f * qualityMultipliers[quality] * weaponMultipliers[itemSubClass] * levelPenalty));
};
void FillDisenchantFields(uint32* disenchantID, uint32* requiredDisenchantSkill, ItemTemplate const& itemTemplate)
@@ -2482,6 +2482,9 @@ struct ItemSpecStats
case ITEM_SUBCLASS_WEAPON_SWORD2:
AddStat(ITEM_SPEC_STAT_TWO_HANDED_SWORD);
break;
+ case ITEM_SUBCLASS_WEAPON_WARGLAIVES:
+ AddStat(ITEM_SPEC_STAT_WARGLAIVES);
+ break;
case ITEM_SUBCLASS_WEAPON_STAFF:
AddStat(ITEM_SPEC_STAT_STAFF);
break;
@@ -2536,6 +2539,34 @@ struct ItemSpecStats
break;
}
}
+ else if (item->Class == ITEM_CLASS_GEM)
+ {
+ if (GemPropertiesEntry const* gem = sGemPropertiesStore.LookupEntry(sparse->GemProperties))
+ {
+ if (gem->Type & SOCKET_COLOR_RELIC_IRON)
+ AddStat(ITEM_SPEC_STAT_RELIC_IRON);
+ if (gem->Type & SOCKET_COLOR_RELIC_BLOOD)
+ AddStat(ITEM_SPEC_STAT_RELIC_BLOOD);
+ if (gem->Type & SOCKET_COLOR_RELIC_SHADOW)
+ AddStat(ITEM_SPEC_STAT_RELIC_SHADOW);
+ if (gem->Type & SOCKET_COLOR_RELIC_FEL)
+ AddStat(ITEM_SPEC_STAT_RELIC_FEL);
+ if (gem->Type & SOCKET_COLOR_RELIC_ARCANE)
+ AddStat(ITEM_SPEC_STAT_RELIC_ARCANE);
+ if (gem->Type & SOCKET_COLOR_RELIC_FROST)
+ AddStat(ITEM_SPEC_STAT_RELIC_FROST);
+ if (gem->Type & SOCKET_COLOR_RELIC_FIRE)
+ AddStat(ITEM_SPEC_STAT_RELIC_FIRE);
+ if (gem->Type & SOCKET_COLOR_RELIC_WATER)
+ AddStat(ITEM_SPEC_STAT_RELIC_WATER);
+ if (gem->Type & SOCKET_COLOR_RELIC_LIFE)
+ AddStat(ITEM_SPEC_STAT_RELIC_LIFE);
+ if (gem->Type & SOCKET_COLOR_RELIC_WIND)
+ AddStat(ITEM_SPEC_STAT_RELIC_WIND);
+ if (gem->Type & SOCKET_COLOR_RELIC_HOLY)
+ AddStat(ITEM_SPEC_STAT_RELIC_HOLY);
+ }
+ }
else
ItemType = 0;
@@ -2569,9 +2600,6 @@ struct ItemSpecStats
case ITEM_MOD_INTELLECT:
AddStat(ITEM_SPEC_STAT_INTELLECT);
break;
- case ITEM_MOD_SPIRIT:
- AddStat(ITEM_SPEC_STAT_SPIRIT);
- break;
case ITEM_MOD_DODGE_RATING:
AddStat(ITEM_SPEC_STAT_DODGE);
break;
@@ -2584,9 +2612,6 @@ struct ItemSpecStats
case ITEM_MOD_CRIT_RATING:
AddStat(ITEM_SPEC_STAT_CRIT);
break;
- case ITEM_MOD_HASTE_MELEE_RATING:
- case ITEM_MOD_HASTE_RANGED_RATING:
- case ITEM_MOD_HASTE_SPELL_RATING:
case ITEM_MOD_HASTE_RATING:
AddStat(ITEM_SPEC_STAT_HASTE);
break;
@@ -7881,7 +7906,7 @@ SkillRangeType GetSkillRangeType(SkillRaceClassInfoEntry const* rcEntry)
if (sObjectMgr->GetSkillTier(rcEntry->SkillTierID))
return SKILL_RANGE_RANK;
- if (rcEntry->SkillID == SKILL_RUNEFORGING || rcEntry->SkillID == SKILL_RUNEFORGING_2)
+ if (rcEntry->SkillID == SKILL_RUNEFORGING)
return SKILL_RANGE_MONO;
switch (skill->CategoryID)