diff options
Diffstat (limited to 'src/server/game/Spells/SpellEffects.cpp')
| -rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 37 |
1 files changed, 33 insertions, 4 deletions
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 4a1061b6425..34743342da6 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -4183,12 +4183,41 @@ void Spell::EffectSkinning(SpellEffIndex /*effIndex*/) creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_SKINNABLE); creature->SetFlag(OBJECT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE); - int32 reqValue = targetLevel < 10 ? 0 : targetLevel < 20 ? (targetLevel-10)*10 : targetLevel*5; + if (skill == SKILL_SKINNING) + { + int32 reqValue; + if (targetLevel <= 10) + reqValue = 1; + else if (targetLevel < 20) + reqValue = (targetLevel - 10) * 10; + else if (targetLevel <= 73) + reqValue = targetLevel * 5; + else if (targetLevel < 80) + reqValue = targetLevel * 10 - 365; + else if (targetLevel <= 84) + reqValue = targetLevel * 5 + 35; + else if (targetLevel <= 87) + reqValue = targetLevel * 15 - 805; + else if (targetLevel <= 92) + reqValue = (targetLevel - 62) * 20; + else if (targetLevel <= 104) + reqValue = targetLevel * 5 + 175; + else if (targetLevel <= 107) + reqValue = targetLevel * 15 - 905; + else if (targetLevel <= 112) + reqValue = (targetLevel - 72) * 20; + else if (targetLevel <= 122) + reqValue = (targetLevel - 32) * 10; + else + reqValue = 900; - int32 skillValue = m_caster->ToPlayer()->GetPureSkillValue(skill); + // TODO: Specialize skillid for each expansion + // new db field? + // tied to one of existing expansion fields in creature_template? - // Double chances for elites - m_caster->ToPlayer()->UpdateGatherSkill(skill, skillValue, reqValue, creature->isElite() ? 2 : 1); + // Double chances for elites + m_caster->ToPlayer()->UpdateGatherSkill(skill, damage, reqValue, creature->isElite() ? 2 : 1); + } } void Spell::EffectCharge(SpellEffIndex /*effIndex*/) |
