aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsrc/server/game/Entities/Item/Item.cpp40
-rwxr-xr-xsrc/server/game/Entities/Item/Item.h1
-rw-r--r--src/server/game/Entities/Player/Player.cpp116
-rwxr-xr-xsrc/server/game/Entities/Player/Player.h8
-rwxr-xr-xsrc/server/game/Entities/Unit/StatSystem.cpp25
-rwxr-xr-xsrc/server/game/Entities/Unit/Unit.cpp91
-rwxr-xr-xsrc/server/game/Entities/Unit/Unit.h4
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp8
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.cpp5
-rw-r--r--src/server/game/World/World.cpp5
-rwxr-xr-xsrc/server/game/World/World.h3
-rw-r--r--src/server/scripts/Spells/spell_paladin.cpp8
-rw-r--r--src/server/worldserver/worldserver.conf.dist15
13 files changed, 29 insertions, 300 deletions
diff --git a/src/server/game/Entities/Item/Item.cpp b/src/server/game/Entities/Item/Item.cpp
index faa91c2672a..08489bcacba 100755
--- a/src/server/game/Entities/Item/Item.cpp
+++ b/src/server/game/Entities/Item/Item.cpp
@@ -547,46 +547,6 @@ uint32 Item::GetSkill()
}
}
-uint32 Item::GetSpell()
-{
- ItemTemplate const* proto = GetTemplate();
-
- switch (proto->Class)
- {
- case ITEM_CLASS_WEAPON:
- switch (proto->SubClass)
- {
- case ITEM_SUBCLASS_WEAPON_AXE: return 196;
- case ITEM_SUBCLASS_WEAPON_AXE2: return 197;
- case ITEM_SUBCLASS_WEAPON_BOW: return 264;
- case ITEM_SUBCLASS_WEAPON_GUN: return 266;
- case ITEM_SUBCLASS_WEAPON_MACE: return 198;
- case ITEM_SUBCLASS_WEAPON_MACE2: return 199;
- case ITEM_SUBCLASS_WEAPON_POLEARM: return 200;
- case ITEM_SUBCLASS_WEAPON_SWORD: return 201;
- case ITEM_SUBCLASS_WEAPON_SWORD2: return 202;
- case ITEM_SUBCLASS_WEAPON_STAFF: return 227;
- case ITEM_SUBCLASS_WEAPON_DAGGER: return 1180;
- case ITEM_SUBCLASS_WEAPON_THROWN: return 2567;
- case ITEM_SUBCLASS_WEAPON_SPEAR: return 3386;
- case ITEM_SUBCLASS_WEAPON_CROSSBOW:return 5011;
- case ITEM_SUBCLASS_WEAPON_WAND: return 5009;
- default: return 0;
- }
- case ITEM_CLASS_ARMOR:
- switch (proto->SubClass)
- {
- case ITEM_SUBCLASS_ARMOR_CLOTH: return 9078;
- case ITEM_SUBCLASS_ARMOR_LEATHER: return 9077;
- case ITEM_SUBCLASS_ARMOR_MAIL: return 8737;
- case ITEM_SUBCLASS_ARMOR_PLATE: return 750;
- case ITEM_SUBCLASS_ARMOR_SHIELD: return 9116;
- default: return 0;
- }
- }
- return 0;
-}
-
int32 Item::GenerateItemRandomPropertyId(uint32 item_id)
{
ItemTemplate const* itemProto = sObjectMgr->GetItemTemplate(item_id);
diff --git a/src/server/game/Entities/Item/Item.h b/src/server/game/Entities/Item/Item.h
index b5ee171e6b1..3927676af47 100755
--- a/src/server/game/Entities/Item/Item.h
+++ b/src/server/game/Entities/Item/Item.h
@@ -279,7 +279,6 @@ class Item : public Object
bool IsEquipped() const;
uint32 GetSkill();
- uint32 GetSpell();
// RandomPropertyId (signed but stored as unsigned)
int32 GetItemRandomPropertyId() const { return GetInt32Value(ITEM_FIELD_RANDOM_PROPERTIES_ID); }
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 302791f4888..a27a1b4c64a 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -5699,17 +5699,6 @@ void Player::LeaveLFGChannel()
}
}
-void Player::UpdateDefense()
-{
- uint32 defense_skill_gain = sWorld->getIntConfig(CONFIG_SKILL_GAIN_DEFENSE);
-
- if (UpdateSkill(SKILL_DEFENSE, defense_skill_gain))
- {
- // update dependent from defense skill part
- UpdateDefenseBonusesMod();
- }
-}
-
void Player::HandleBaseModValue(BaseModGroup modGroup, BaseModType modType, float amount, bool apply)
{
if (modGroup >= BASEMOD_END || modType >= MOD_END)
@@ -5961,9 +5950,8 @@ void Player::UpdateRating(CombatRating cr)
switch (cr)
{
- case CR_WEAPON_SKILL: // Implemented in Unit::RollMeleeOutcomeAgainst
+ case CR_WEAPON_SKILL:
case CR_DEFENSE_SKILL:
- UpdateDefenseBonusesMod();
break;
case CR_DODGE:
UpdateDodgePercentage();
@@ -6239,70 +6227,6 @@ bool Player::UpdateSkillPro(uint16 SkillId, int32 Chance, uint32 step)
return false;
}
-void Player::UpdateWeaponSkill(WeaponAttackType attType)
-{
- // no skill gain in pvp
- Unit* victim = getVictim();
- if (victim && victim->GetTypeId() == TYPEID_PLAYER)
- return;
-
- if (IsInFeralForm())
- return; // always maximized SKILL_FERAL_COMBAT in fact
-
- if (GetShapeshiftForm() == FORM_TREE)
- return; // use weapon but not skill up
-
- if (victim && victim->GetTypeId() == TYPEID_UNIT && (victim->ToCreature()->GetCreatureTemplate()->flags_extra & CREATURE_FLAG_EXTRA_NO_SKILLGAIN))
- return;
-
- uint32 weapon_skill_gain = sWorld->getIntConfig(CONFIG_SKILL_GAIN_WEAPON);
-
- Item* tmpitem = GetWeaponForAttack(attType, true);
- if (!tmpitem && attType == BASE_ATTACK)
- UpdateSkill(SKILL_UNARMED, weapon_skill_gain);
- else if (tmpitem && tmpitem->GetTemplate()->SubClass != ITEM_SUBCLASS_WEAPON_FISHING_POLE)
- UpdateSkill(tmpitem->GetSkill(), weapon_skill_gain);
-
- UpdateAllCritPercentages();
-}
-
-void Player::UpdateCombatSkills(Unit* victim, WeaponAttackType attType, bool defence)
-{
- uint8 plevel = getLevel(); // if defense than victim == attacker
- uint8 greylevel = Trinity::XP::GetGrayLevel(plevel);
- uint8 moblevel = victim->getLevelForTarget(this);
- if (moblevel < greylevel)
- return;
-
- if (moblevel > plevel + 5)
- moblevel = plevel + 5;
-
- uint8 lvldif = moblevel - greylevel;
- if (lvldif < 3)
- lvldif = 3;
-
- uint32 skilldif = 5 * plevel - (defence ? GetBaseDefenseSkillValue() : GetBaseWeaponSkillValue(attType));
- if (skilldif <= 0)
- return;
-
- float chance = float(3 * lvldif * skilldif) / plevel;
- if (!defence)
- if (getClass() == CLASS_WARRIOR || getClass() == CLASS_ROGUE)
- chance += chance * 0.02f * GetStat(STAT_INTELLECT);
-
- chance = chance < 1.0f ? 1.0f : chance; //minimum chance to increase skill is 1%
-
- if (roll_chance_f(chance))
- {
- if (defence)
- UpdateDefense();
- else
- UpdateWeaponSkill(attType);
- }
- else
- return;
-}
-
void Player::ModifySkillBonus(uint32 skillid, int32 val, bool talent)
{
SkillStatusMap::const_iterator itr = mSkillStatus.find(skillid);
@@ -6319,11 +6243,8 @@ void Player::ModifySkillBonus(uint32 skillid, int32 val, bool talent)
void Player::UpdateSkillsForLevel()
{
- uint16 maxconfskill = sWorld->GetConfigMaxSkillValue();
uint32 maxSkill = GetMaxSkillValueForLevel();
- bool alwaysMaxSkill = sWorld->getBoolConfig(CONFIG_ALWAYS_MAX_SKILL_FOR_LEVEL);
-
for (SkillStatusMap::iterator itr = mSkillStatus.begin(); itr != mSkillStatus.end(); ++itr)
{
if (itr->second.uState == SKILL_DELETED)
@@ -6346,22 +6267,10 @@ void Player::UpdateSkillsForLevel()
/// update only level dependent max skill values
if (max != 1)
{
- /// maximize skill always
- if (alwaysMaxSkill)
- {
- SetUInt16Value(PLAYER_SKILL_RANK_0 + field, offset, maxSkill);
- SetUInt16Value(PLAYER_SKILL_MAX_RANK_0 + field, offset, maxSkill);
- if (itr->second.uState != SKILL_NEW)
- itr->second.uState = SKILL_CHANGED;
- }
-
- else if (max != maxconfskill) /// update max skill value if current max skill not maximized
- {
- SetUInt16Value(PLAYER_SKILL_RANK_0 + field, offset, val);
- SetUInt16Value(PLAYER_SKILL_MAX_RANK_0 + field, offset, maxSkill);
- if (itr->second.uState != SKILL_NEW)
- itr->second.uState = SKILL_CHANGED;
- }
+ SetUInt16Value(PLAYER_SKILL_RANK_0 + field, offset, maxSkill);
+ SetUInt16Value(PLAYER_SKILL_MAX_RANK_0 + field, offset, maxSkill);
+ if (itr->second.uState != SKILL_NEW)
+ itr->second.uState = SKILL_CHANGED;
}
}
}
@@ -6389,8 +6298,6 @@ void Player::UpdateSkillsToMaxSkillsForLevel()
if (itr->second.uState != SKILL_NEW)
itr->second.uState = SKILL_CHANGED;
}
- if (pskill == SKILL_DEFENSE)
- UpdateDefenseBonusesMod();
}
}
@@ -23388,19 +23295,6 @@ bool Player::IsAtRecruitAFriendDistance(WorldObject const* pOther) const
return pOther->GetDistance(player) <= sWorld->getFloatConfig(CONFIG_MAX_RECRUIT_A_FRIEND_DISTANCE);
}
-uint32 Player::GetBaseWeaponSkillValue (WeaponAttackType attType) const
-{
- Item* item = GetWeaponForAttack(attType, true);
-
- // unarmed only with base attack
- if (attType != BASE_ATTACK && !item)
- return 0;
-
- // weapon skill or (unarmed for base attack and for fist weapons)
- uint32 skill = (item && item->GetSkill() != SKILL_FIST_WEAPONS) ? item->GetSkill() : uint32(SKILL_UNARMED);
- return GetBaseSkillValue(skill);
-}
-
void Player::ResurectUsingRequestData()
{
/// Teleport before resurrecting by player, otherwise the player might get attacked from creatures near his corpse
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index 89c82736335..ad17ee7844b 100755
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -2054,9 +2054,6 @@ class Player : public Unit, public GridObject<Player>
bool UpdateGatherSkill(uint32 SkillId, uint32 SkillValue, uint32 RedLevel, uint32 Multiplicator = 1);
bool UpdateFishingSkill();
- uint32 GetBaseDefenseSkillValue() const { return GetBaseSkillValue(SKILL_DEFENSE); }
- uint32 GetBaseWeaponSkillValue(WeaponAttackType attType) const;
-
uint32 GetSpellByProto(ItemTemplate* proto);
float GetHealthBonusFromStamina();
@@ -2078,7 +2075,6 @@ class Player : public Unit, public GridObject<Player>
void CalculateMinMaxDamage(WeaponAttackType attType, bool normalized, bool addTotalPct, float& min_damage, float& max_damage);
- void UpdateDefenseBonusesMod();
inline void RecalculateRating(CombatRating cr) { ApplyRatingMod(cr, 0, true);}
float GetMeleeCritFromAgility();
void GetDodgeFromAgility(float &diminishing, float &nondiminishing);
@@ -2183,10 +2179,6 @@ class Player : public Unit, public GridObject<Player>
void UpdateLocalChannels(uint32 newZone);
void LeaveLFGChannel();
- void UpdateDefense();
- void UpdateWeaponSkill (WeaponAttackType attType);
- void UpdateCombatSkills(Unit* victim, WeaponAttackType attType, bool defence);
-
void SetSkill(uint16 id, uint16 step, uint16 currVal, uint16 maxVal);
uint16 GetMaxSkillValue(uint32 skill) const; // max + perm. bonus + temp bonus
uint16 GetPureMaxSkillValue(uint32 skill) const; // max
diff --git a/src/server/game/Entities/Unit/StatSystem.cpp b/src/server/game/Entities/Unit/StatSystem.cpp
index 12d214e49ab..c0f7f5c8939 100755
--- a/src/server/game/Entities/Unit/StatSystem.cpp
+++ b/src/server/game/Entities/Unit/StatSystem.cpp
@@ -75,16 +75,16 @@ bool Player::UpdateStats(Stats stat)
UpdateAllCritPercentages();
UpdateDodgePercentage();
break;
- case STAT_STAMINA: UpdateMaxHealth(); break;
+ case STAT_STAMINA:
+ UpdateMaxHealth();
+ break;
case STAT_INTELLECT:
UpdateMaxPower(POWER_MANA);
UpdateAllSpellCritChances();
UpdateArmor(); //SPELL_AURA_MOD_RESISTANCE_OF_INTELLECT_PERCENT, only armor currently
break;
-
case STAT_SPIRIT:
break;
-
default:
break;
}
@@ -155,7 +155,9 @@ bool Player::UpdateAllStats()
UpdateAllRatings();
UpdateAllCritPercentages();
UpdateAllSpellCritChances();
- UpdateDefenseBonusesMod();
+ UpdateBlockPercentage();
+ UpdateParryPercentage();
+ UpdateDodgePercentage();
UpdateSpellDamageAndHealingBonus();
UpdateManaRegen();
UpdateExpertise(BASE_ATTACK);
@@ -430,13 +432,6 @@ void Player::UpdateDamagePhysical(WeaponAttackType attType)
}
}
-void Player::UpdateDefenseBonusesMod()
-{
- UpdateBlockPercentage();
- UpdateParryPercentage();
- UpdateDodgePercentage();
-}
-
void Player::UpdateBlockPercentage()
{
// No block
@@ -482,7 +477,7 @@ void Player::UpdateCritPercentage(WeaponAttackType attType)
float value = GetTotalPercentageModValue(modGroup) + GetRatingBonusValue(cr);
// Modify crit from weapon skill and maximized defense skill of same level victim difference
- value += (int32(GetWeaponSkillValue(attType)) - int32(GetMaxSkillValueForLevel())) * 0.04f;
+ value += (int32(GetMaxSkillValueForLevel()) - int32(GetMaxSkillValueForLevel())) * 0.04f;
value = value < 0.0f ? 0.0f : value;
SetStatFloatValue(index, value);
}
@@ -540,9 +535,6 @@ void Player::UpdateParryPercentage()
float nondiminishing = 5.0f;
// Parry from rating
float diminishing = GetRatingBonusValue(CR_PARRY);
- // Modify value from defense skill (only bonus from defense rating diminishes)
- nondiminishing += (GetSkillValue(SKILL_DEFENSE) - GetMaxSkillValueForLevel()) * 0.04f;
- diminishing += (int32(GetRatingBonusValue(CR_DEFENSE_SKILL))) * 0.04f;
// Parry from SPELL_AURA_MOD_PARRY_PERCENT aura
nondiminishing += GetTotalAuraModifier(SPELL_AURA_MOD_PARRY_PERCENT);
// apply diminishing formula to diminishing parry chance
@@ -571,9 +563,6 @@ void Player::UpdateDodgePercentage()
float diminishing = 0.0f, nondiminishing = 0.0f;
GetDodgeFromAgility(diminishing, nondiminishing);
- // Modify value from defense skill (only bonus from defense rating diminishes)
- nondiminishing += (GetSkillValue(SKILL_DEFENSE) - GetMaxSkillValueForLevel()) * 0.04f;
- diminishing += (int32(GetRatingBonusValue(CR_DEFENSE_SKILL))) * 0.04f;
// Dodge from SPELL_AURA_MOD_DODGE_PERCENT aura
nondiminishing += GetTotalAuraModifier(SPELL_AURA_MOD_DODGE_PERCENT);
// Dodge from rating
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 33a0cd9c857..99d43a2e33d 100755
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -1311,8 +1311,8 @@ void Unit::DealMeleeDamage(CalcDamageInfo* damageInfo, bool durabilityLoss)
if (victim->getLevel() < 30)
Probability = 0.65f * victim->getLevel() + 0.5f;
- uint32 VictimDefense=victim->GetDefenseSkillValue();
- uint32 AttackerMeleeSkill=GetUnitMeleeSkill();
+ uint32 VictimDefense = victim->GetMaxSkillValueForLevel(this);
+ uint32 AttackerMeleeSkill = GetMaxSkillValueForLevel();
Probability *= AttackerMeleeSkill/(float)VictimDefense;
@@ -1860,11 +1860,8 @@ MeleeHitOutcome Unit::RollMeleeOutcomeAgainst (const Unit* victim, WeaponAttackT
int32 attackerMaxSkillValueForLevel = GetMaxSkillValueForLevel(victim);
int32 victimMaxSkillValueForLevel = victim->GetMaxSkillValueForLevel(this);
- int32 attackerWeaponSkill = GetWeaponSkillValue(attType, victim);
- int32 victimDefenseSkill = victim->GetDefenseSkillValue(this);
-
// bonus from skills is 0.04%
- int32 skillBonus = 4 * (attackerWeaponSkill - victimMaxSkillValueForLevel);
+ int32 skillBonus = 4 * (attackerMaxSkillValueForLevel - victimMaxSkillValueForLevel);
int32 sum = 0, tmp = 0;
int32 roll = urand (0, 10000);
@@ -1973,11 +1970,9 @@ MeleeHitOutcome Unit::RollMeleeOutcomeAgainst (const Unit* victim, WeaponAttackT
getLevel() < victim->getLevelForTarget(this))
{
// cap possible value (with bonuses > max skill)
- int32 skill = attackerWeaponSkill;
- int32 maxskill = attackerMaxSkillValueForLevel;
- skill = (skill > maxskill) ? maxskill : skill;
+ int32 skill = attackerMaxSkillValueForLevel;
- tmp = (10 + (victimDefenseSkill - skill)) * 100;
+ tmp = (10 + (victimMaxSkillValueForLevel - skill)) * 100;
tmp = tmp > 4000 ? 4000 : tmp;
if (roll < (sum += tmp))
{
@@ -1993,10 +1988,7 @@ MeleeHitOutcome Unit::RollMeleeOutcomeAgainst (const Unit* victim, WeaponAttackT
!(GetTypeId() == TYPEID_UNIT && ToCreature()->GetCreatureTemplate()->flags_extra & CREATURE_FLAG_EXTRA_NO_CRUSH))
{
// when their weapon skill is 15 or more above victim's defense skill
- tmp = victimDefenseSkill;
- int32 tmpmax = victimMaxSkillValueForLevel;
- // having defense above your maximum (from items, talents etc.) has no effect
- tmp = tmp > tmpmax ? tmpmax : tmp;
+ tmp = victimMaxSkillValueForLevel;
// tmp = mob's level * 5 - player's current defense skill
tmp = attackerMaxSkillValueForLevel - tmp;
if (tmp >= 15)
@@ -2441,21 +2433,6 @@ SpellMissInfo Unit::SpellHitResult(Unit* victim, SpellInfo const* spell, bool Ca
return SPELL_MISS_NONE;
}
-uint32 Unit::GetDefenseSkillValue(Unit const* target) const
-{
- if (GetTypeId() == TYPEID_PLAYER)
- {
- // in PvP use full skill instead current skill value
- uint32 value = (target && target->GetTypeId() == TYPEID_PLAYER)
- ? ToPlayer()->GetMaxSkillValue(SKILL_DEFENSE)
- : ToPlayer()->GetSkillValue(SKILL_DEFENSE);
- value += uint32(ToPlayer()->GetRatingBonusValue(CR_DEFENSE_SKILL));
- return value;
- }
- else
- return GetUnitMeleeSkill(target);
-}
-
float Unit::GetUnitDodgeChance() const
{
if (IsNonMeleeSpellCasted(false) || HasUnitState(UNIT_STATE_CONTROLLED))
@@ -2597,54 +2574,11 @@ float Unit::GetUnitCriticalChance(WeaponAttackType attackType, const Unit* victi
else
ApplyResilience(victim, &crit, NULL, false, CR_CRIT_TAKEN_RANGED);
- // Apply crit chance from defence skill
- crit += (int32(GetMaxSkillValueForLevel(victim)) - int32(victim->GetDefenseSkillValue(this))) * 0.04f;
-
if (crit < 0.0f)
crit = 0.0f;
return crit;
}
-uint32 Unit::GetWeaponSkillValue (WeaponAttackType attType, Unit const* target) const
-{
- uint32 value = 0;
- if (Player const* player = ToPlayer())
- {
- Item* item = player->GetWeaponForAttack(attType, true);
-
- // feral or unarmed skill only for base attack
- if (attType != BASE_ATTACK && !item)
- return 0;
-
- if (IsInFeralForm())
- return GetMaxSkillValueForLevel(); // always maximized SKILL_FERAL_COMBAT in fact
-
- // weapon skill or (unarmed for base attack and fist weapons)
- uint32 skill;
- if (item && item->GetSkill() != SKILL_FIST_WEAPONS)
- skill = item->GetSkill();
- else
- skill = SKILL_UNARMED;
-
- // in PvP use full skill instead current skill value
- value = (target && target->IsControlledByPlayer())
- ? player->GetMaxSkillValue(skill)
- : player->GetSkillValue(skill);
- // Modify value from ratings
- value += uint32(player->GetRatingBonusValue(CR_WEAPON_SKILL));
- switch (attType)
- {
- case BASE_ATTACK: value += uint32(player->GetRatingBonusValue(CR_WEAPON_SKILL_MAINHAND)); break;
- case OFF_ATTACK: value += uint32(player->GetRatingBonusValue(CR_WEAPON_SKILL_OFFHAND)); break;
- case RANGED_ATTACK: value += uint32(player->GetRatingBonusValue(CR_WEAPON_SKILL_RANGED)); break;
- default: break;
- }
- }
- else
- value = GetUnitMeleeSkill(target);
- return value;
-}
-
void Unit::_DeleteRemovedAuras()
{
while (!m_removedAuras.empty())
@@ -13468,19 +13402,6 @@ void Unit::ProcDamageAndSpellFor(bool isVictim, Unit* target, uint32 procFlag, u
// For melee/ranged based attack need update skills and set some Aura states if victim present
if (procFlag & MELEE_BASED_TRIGGER_MASK && target)
{
- // Update skills here for players
- if (GetTypeId() == TYPEID_PLAYER)
- {
- // On melee based hit/miss/resist need update skill (for victim and attacker)
- if (procExtra & (PROC_EX_NORMAL_HIT|PROC_EX_MISS|PROC_EX_RESIST))
- {
- if (target->GetTypeId() != TYPEID_PLAYER && target->GetCreatureType() != CREATURE_TYPE_CRITTER)
- ToPlayer()->UpdateCombatSkills(target, attType, isVictim);
- }
- // Update defence if player is victim and parry/dodge/block
- else if (isVictim && procExtra & (PROC_EX_DODGE|PROC_EX_PARRY|PROC_EX_BLOCK))
- ToPlayer()->UpdateCombatSkills(target, attType, true);
- }
// If exist crit/parry/dodge/block need update aura state (for victim and attacker)
if (procExtra & (PROC_EX_CRITICAL_HIT|PROC_EX_PARRY|PROC_EX_DODGE|PROC_EX_BLOCK))
{
diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h
index 327886adfec..b57f148c3d6 100755
--- a/src/server/game/Entities/Unit/Unit.h
+++ b/src/server/game/Entities/Unit/Unit.h
@@ -546,7 +546,7 @@ enum WeaponAttackType
enum CombatRating
{
CR_WEAPON_SKILL = 0,
- CR_DEFENSE_SKILL = 1,
+ CR_DEFENSE_SKILL = 1, // Removed in 4.0.1
CR_DODGE = 2,
CR_PARRY = 3,
CR_BLOCK = 4,
@@ -1493,8 +1493,6 @@ class Unit : public WorldObject
virtual uint32 GetBlockPercent() { return 30; }
uint32 GetUnitMeleeSkill(Unit const* target = NULL) const { return (target ? getLevelForTarget(target) : getLevel()) * 5; }
- uint32 GetDefenseSkillValue(Unit const* target = NULL) const;
- uint32 GetWeaponSkillValue(WeaponAttackType attType, Unit const* target = NULL) const;
float GetWeaponProcChance() const;
float GetPPMProcChance(uint32 WeaponSpeed, float PPM, const SpellInfo* spellProto) const;
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index 6b6c95eda66..d26011a552a 100644
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -7568,12 +7568,10 @@ SkillRangeType GetSkillRangeType(SkillLineEntry const* pSkill, bool racial)
{
switch (pSkill->categoryId)
{
- case SKILL_CATEGORY_LANGUAGES: return SKILL_RANGE_LANGUAGE;
+ case SKILL_CATEGORY_LANGUAGES:
+ return SKILL_RANGE_LANGUAGE;
case SKILL_CATEGORY_WEAPON:
- if (pSkill->id != SKILL_FIST_WEAPONS)
- return SKILL_RANGE_LEVEL;
- else
- return SKILL_RANGE_MONO;
+ return SKILL_RANGE_LEVEL;
case SKILL_CATEGORY_ARMOR:
case SKILL_CATEGORY_CLASS:
if (pSkill->id != SKILL_LOCKPICKING)
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
index 04ad2eb99f3..cf58a51dad8 100644
--- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp
+++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
@@ -2711,9 +2711,10 @@ void AuraEffect::HandleAuraModSkill(AuraApplication const* aurApp, uint8 mode, b
uint32 prot = GetMiscValue();
int32 points = GetAmount();
- target->ModifySkillBonus(prot, (apply ? points : -points), GetAuraType() == SPELL_AURA_MOD_SKILL_TALENT);
if (prot == SKILL_DEFENSE)
- target->UpdateDefenseBonusesMod();
+ return;
+
+ target->ModifySkillBonus(prot, (apply ? points : -points), GetAuraType() == SPELL_AURA_MOD_SKILL_TALENT);
}
/****************************/
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
index 2779814d4ee..703b158d6a3 100644
--- a/src/server/game/World/World.cpp
+++ b/src/server/game/World/World.cpp
@@ -920,12 +920,8 @@ void World::LoadConfigSettings(bool reload)
m_int_configs[CONFIG_SKILL_GAIN_CRAFTING] = ConfigMgr::GetIntDefault("SkillGain.Crafting", 1);
- m_int_configs[CONFIG_SKILL_GAIN_DEFENSE] = ConfigMgr::GetIntDefault("SkillGain.Defense", 1);
-
m_int_configs[CONFIG_SKILL_GAIN_GATHERING] = ConfigMgr::GetIntDefault("SkillGain.Gathering", 1);
- m_int_configs[CONFIG_SKILL_GAIN_WEAPON] = ConfigMgr::GetIntDefault("SkillGain.Weapon", 1);
-
m_int_configs[CONFIG_MAX_OVERSPEED_PINGS] = ConfigMgr::GetIntDefault("MaxOverspeedPings", 2);
if (m_int_configs[CONFIG_MAX_OVERSPEED_PINGS] != 0 && m_int_configs[CONFIG_MAX_OVERSPEED_PINGS] < 2)
{
@@ -938,7 +934,6 @@ void World::LoadConfigSettings(bool reload)
m_int_configs[CONFIG_DISABLE_BREATHING] = ConfigMgr::GetIntDefault("DisableWaterBreath", SEC_CONSOLE);
- m_bool_configs[CONFIG_ALWAYS_MAX_SKILL_FOR_LEVEL] = ConfigMgr::GetBoolDefault("AlwaysMaxSkillForLevel", false);
if (reload)
{
diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h
index 53422108971..5a8c7cc879c 100755
--- a/src/server/game/World/World.h
+++ b/src/server/game/World/World.h
@@ -122,7 +122,6 @@ enum WorldBoolConfigs
CONFIG_SKILL_MILLING,
CONFIG_SAVE_RESPAWN_TIME_IMMEDIATELY,
CONFIG_WEATHER,
- CONFIG_ALWAYS_MAX_SKILL_FOR_LEVEL,
CONFIG_QUEST_IGNORE_RAID,
CONFIG_DETECT_POS_COLLISION,
CONFIG_RESTRICTED_LFG_CHANNEL,
@@ -256,9 +255,7 @@ enum WorldIntConfigs
CONFIG_SKILL_CHANCE_MINING_STEPS,
CONFIG_SKILL_CHANCE_SKINNING_STEPS,
CONFIG_SKILL_GAIN_CRAFTING,
- CONFIG_SKILL_GAIN_DEFENSE,
CONFIG_SKILL_GAIN_GATHERING,
- CONFIG_SKILL_GAIN_WEAPON,
CONFIG_MAX_OVERSPEED_PINGS,
CONFIG_EXPANSION,
CONFIG_CHATFLOOD_MESSAGE_COUNT,
diff --git a/src/server/scripts/Spells/spell_paladin.cpp b/src/server/scripts/Spells/spell_paladin.cpp
index 0bf2e5664a0..557cef24ee6 100644
--- a/src/server/scripts/Spells/spell_paladin.cpp
+++ b/src/server/scripts/Spells/spell_paladin.cpp
@@ -50,7 +50,7 @@ enum PaladinSpells
};
// 31850 - Ardent Defender
-class spell_pal_ardent_defender : public SpellScriptLoader
+/*class spell_pal_ardent_defender : public SpellScriptLoader
{
public:
spell_pal_ardent_defender() : SpellScriptLoader("spell_pal_ardent_defender") { }
@@ -73,7 +73,7 @@ class spell_pal_ardent_defender : public SpellScriptLoader
return GetUnitOwner()->GetTypeId() == TYPEID_PLAYER;
}
- void CalculateAmount(AuraEffect const* /*aurEff*/, int32 & amount, bool & /*canBeRecalculated*/)
+ void CalculateAmount(AuraEffect const* aurEff, int32 & amount, bool & canBeRecalculated)
{
// Set absorbtion amount to unlimited
amount = -1;
@@ -123,7 +123,7 @@ class spell_pal_ardent_defender : public SpellScriptLoader
{
return new spell_pal_ardent_defender_AuraScript();
}
-};
+};*/
class spell_pal_blessing_of_faith : public SpellScriptLoader
{
@@ -568,7 +568,7 @@ class spell_pal_exorcism_and_holy_wrath_damage : public SpellScriptLoader
void AddSC_paladin_spell_scripts()
{
- new spell_pal_ardent_defender();
+ //new spell_pal_ardent_defender();
new spell_pal_blessing_of_faith();
new spell_pal_blessing_of_sanctuary();
new spell_pal_guarded_by_the_light();
diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist
index f8ee2390842..ec6d60863dd 100644
--- a/src/server/worldserver/worldserver.conf.dist
+++ b/src/server/worldserver/worldserver.conf.dist
@@ -863,15 +863,6 @@ AllFlightPaths = 0
InstantFlightPaths = 0
#
-# AlwaysMaxSkillForLevel
-# Description: Players will automatically gain max skill level when logging in or leveling
-# up.
-# Default: 0 - (Disabled)
-# 1 - (Enabled)
-
-AlwaysMaxSkillForLevel = 0
-
-#
# ActivateWeather
# Description: Activate the weather system.
# Default: 1 - (Enabled)
@@ -1952,19 +1943,13 @@ Rate.InstanceResetTime = 1
#
# SkillGain.Crafting
-# SkillGain.Defense
# SkillGain.Gathering
-# SkillGain.Weapon
# Description: Crafting/defense/gathering/weapon skills gain rate.
# Default: 1 - (SkillGain.Crafting)
-# 1 - (SkillGain.Defense)
# 1 - (SkillGain.Gathering)
-# 1 - (SkillGain.Weapon)
SkillGain.Crafting = 1
-SkillGain.Defense = 1
SkillGain.Gathering = 1
-SkillGain.Weapon = 1
#
# SkillChance.Orange