Core/Player: Fix gaining fishing skill of wielding fishing pole in offhand
Closes #3717
This commit is contained in:
@@ -6227,11 +6227,11 @@ bool Player::UpdateSkillPro(uint16 SkillId, int32 Chance, uint32 step)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::UpdateWeaponSkill (WeaponAttackType attType)
|
void Player::UpdateWeaponSkill(WeaponAttackType attType)
|
||||||
{
|
{
|
||||||
// no skill gain in pvp
|
// no skill gain in pvp
|
||||||
Unit* pVictim = getVictim();
|
Unit* victim = getVictim();
|
||||||
if (pVictim && pVictim->GetTypeId() == TYPEID_PLAYER)
|
if (victim && victim->GetTypeId() == TYPEID_PLAYER)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (IsInFeralForm())
|
if (IsInFeralForm())
|
||||||
@@ -6240,42 +6240,25 @@ void Player::UpdateWeaponSkill (WeaponAttackType attType)
|
|||||||
if (GetShapeshiftForm() == FORM_TREE)
|
if (GetShapeshiftForm() == FORM_TREE)
|
||||||
return; // use weapon but not skill up
|
return; // use weapon but not skill up
|
||||||
|
|
||||||
if (pVictim && pVictim->GetTypeId() == TYPEID_UNIT && (pVictim->ToCreature()->GetCreatureInfo()->flags_extra & CREATURE_FLAG_EXTRA_NO_SKILLGAIN))
|
if (victim && victim->GetTypeId() == TYPEID_UNIT && (victim->ToCreature()->GetCreatureInfo()->flags_extra & CREATURE_FLAG_EXTRA_NO_SKILLGAIN))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
uint32 weapon_skill_gain = sWorld->getIntConfig(CONFIG_SKILL_GAIN_WEAPON);
|
uint32 weapon_skill_gain = sWorld->getIntConfig(CONFIG_SKILL_GAIN_WEAPON);
|
||||||
|
|
||||||
switch (attType)
|
Item* tmpitem = GetWeaponForAttack(attType, true);
|
||||||
{
|
if (!tmpitem && attType == BASE_ATTACK)
|
||||||
case BASE_ATTACK:
|
UpdateSkill(SKILL_UNARMED, weapon_skill_gain);
|
||||||
{
|
else if (tmpitem->GetTemplate()->SubClass != ITEM_SUBCLASS_WEAPON_FISHING_POLE)
|
||||||
Item* tmpitem = GetWeaponForAttack(attType, true);
|
UpdateSkill(tmpitem->GetSkill(), weapon_skill_gain);
|
||||||
|
|
||||||
if (!tmpitem)
|
|
||||||
UpdateSkill(SKILL_UNARMED, weapon_skill_gain);
|
|
||||||
else if (tmpitem->GetTemplate()->SubClass != ITEM_SUBCLASS_WEAPON_FISHING_POLE)
|
|
||||||
UpdateSkill(tmpitem->GetSkill(), weapon_skill_gain);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case OFF_ATTACK:
|
|
||||||
case RANGED_ATTACK:
|
|
||||||
{
|
|
||||||
Item* tmpitem = GetWeaponForAttack(attType, true);
|
|
||||||
if (tmpitem)
|
|
||||||
UpdateSkill(tmpitem->GetSkill(), weapon_skill_gain);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
UpdateAllCritPercentages();
|
UpdateAllCritPercentages();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::UpdateCombatSkills(Unit* pVictim, WeaponAttackType attType, bool defence)
|
void Player::UpdateCombatSkills(Unit* victim, WeaponAttackType attType, bool defence)
|
||||||
{
|
{
|
||||||
uint8 plevel = getLevel(); // if defense than pVictim == attacker
|
uint8 plevel = getLevel(); // if defense than victim == attacker
|
||||||
uint8 greylevel = Trinity::XP::GetGrayLevel(plevel);
|
uint8 greylevel = Trinity::XP::GetGrayLevel(plevel);
|
||||||
uint8 moblevel = pVictim->getLevelForTarget(this);
|
uint8 moblevel = victim->getLevelForTarget(this);
|
||||||
if (moblevel < greylevel)
|
if (moblevel < greylevel)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user