diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 24 | ||||
-rw-r--r-- | src/server/game/Miscellaneous/SharedDefines.h | 48 | ||||
-rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 37 |
3 files changed, 99 insertions, 10 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index b3e8bd33097..ce02cdad3ce 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -5227,15 +5227,39 @@ bool Player::UpdateGatherSkill(uint32 SkillId, uint32 SkillValue, uint32 RedLeve switch (SkillId) { case SKILL_HERBALISM: + case SKILL_HERBALISM_2: + case SKILL_OUTLAND_HERBALISM: + case SKILL_NORTHREND_HERBALISM: + case SKILL_CATACLYSM_HERBALISM: + case SKILL_PANDARIA_HERBALISM: + case SKILL_DRAENOR_HERBALISM: + case SKILL_LEGION_HERBALISM: + case SKILL_KUL_TIRAN_HERBALISM: case SKILL_JEWELCRAFTING: case SKILL_INSCRIPTION: return UpdateSkillPro(SkillId, SkillGainChance(SkillValue, RedLevel+100, RedLevel+50, RedLevel+25)*Multiplicator, gathering_skill_gain); case SKILL_SKINNING: + case SKILL_SKINNING_2: + case SKILL_OUTLAND_SKINNING: + case SKILL_NORTHREND_SKINNING: + case SKILL_CATACLYSM_SKINNING: + case SKILL_PANDARIA_SKINNING: + case SKILL_DRAENOR_SKINNING: + case SKILL_LEGION_SKINNING: + case SKILL_KUL_TIRAN_SKINNING: if (sWorld->getIntConfig(CONFIG_SKILL_CHANCE_SKINNING_STEPS) == 0) return UpdateSkillPro(SkillId, SkillGainChance(SkillValue, RedLevel+100, RedLevel+50, RedLevel+25)*Multiplicator, gathering_skill_gain); else return UpdateSkillPro(SkillId, (SkillGainChance(SkillValue, RedLevel+100, RedLevel+50, RedLevel+25)*Multiplicator) >> (SkillValue/sWorld->getIntConfig(CONFIG_SKILL_CHANCE_SKINNING_STEPS)), gathering_skill_gain); case SKILL_MINING: + case SKILL_MINING_2: + case SKILL_OUTLAND_MINING: + case SKILL_NORTHREND_MINING: + case SKILL_CATACLYSM_MINING: + case SKILL_PANDARIA_MINING: + case SKILL_DRAENOR_MINING: + case SKILL_LEGION_MINING: + case SKILL_KUL_TIRAN_MINING: if (sWorld->getIntConfig(CONFIG_SKILL_CHANCE_MINING_STEPS) == 0) return UpdateSkillPro(SkillId, SkillGainChance(SkillValue, RedLevel+100, RedLevel+50, RedLevel+25)*Multiplicator, gathering_skill_gain); else diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index bb4277aba10..a3ff3403e86 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -3881,7 +3881,7 @@ enum LockKeyType // LockType.dbc (6.0.2.18988) enum LockType { - LOCKTYPE_PICKLOCK = 1, + LOCKTYPE_LOCKPICKING = 1, LOCKTYPE_HERBALISM = 2, LOCKTYPE_MINING = 3, LOCKTYPE_DISARM_TRAP = 4, @@ -3897,14 +3897,34 @@ enum LockType LOCKTYPE_OPEN_ATTACKING = 14, LOCKTYPE_GAHZRIDIAN = 15, LOCKTYPE_BLASTING = 16, - LOCKTYPE_SLOW_OPEN = 17, - LOCKTYPE_SLOW_CLOSE = 18, + LOCKTYPE_PVP_OPEN = 17, + LOCKTYPE_PVP_CLOSE = 18, LOCKTYPE_FISHING = 19, LOCKTYPE_INSCRIPTION = 20, LOCKTYPE_OPEN_FROM_VEHICLE = 21, - LOCKTYPE_ARCHAELOGY = 22, + LOCKTYPE_ARCHAEOLOGY = 22, LOCKTYPE_PVP_OPEN_FAST = 23, - LOCKTYPE_LUMBER_MILL = 28 + LOCKTYPE_LUMBER_MILL = 28, + LOCKTYPE_SKINNING = 29, + LOCKTYPE_ANCIENT_MANA = 30, + LOCKTYPE_WARBOARD = 31, + LOCKTYPE_CLASSIC_HERBALISM = 32, + LOCKTYPE_OUTLAND_HERBALISM = 33, + LOCKTYPE_NORTHREND_HERBALISM = 34, + LOCKTYPE_CATACLYSM_HERBALISM = 35, + LOCKTYPE_PANDARIA_HERBALISM = 36, + LOCKTYPE_DRAENOR_HERBALISM = 37, + LOCKTYPE_LEGION_HERBALISM = 38, + LOCKTYPE_KUL_TIRAN_HERBALISM = 39, + LOCKTYPE_CLASSIC_MINING = 40, + LOCKTYPE_OUTLAND_MINING = 41, + LOCKTYPE_NORTHREND_MINING = 42, + LOCKTYPE_CATACLYSM_MINING = 43, + LOCKTYPE_PANDARIA_MINING = 44, + LOCKTYPE_DRAENOR_MINING = 45, + LOCKTYPE_LEGION_MINING = 46, + LOCKTYPE_KUL_TIRAN_MINING = 47, + LOCKTYPE_SKINNING_2 = 48 }; // this is important type for npcs! @@ -4560,8 +4580,24 @@ inline SkillType SkillByLockType(LockType locktype) case LOCKTYPE_MINING: return SKILL_MINING; case LOCKTYPE_FISHING: return SKILL_FISHING; case LOCKTYPE_INSCRIPTION: return SKILL_INSCRIPTION; - case LOCKTYPE_ARCHAELOGY: return SKILL_ARCHAEOLOGY; + case LOCKTYPE_ARCHAEOLOGY: return SKILL_ARCHAEOLOGY; case LOCKTYPE_LUMBER_MILL: return SKILL_LOGGING; + case LOCKTYPE_CLASSIC_HERBALISM: return SKILL_HERBALISM_2; + case LOCKTYPE_OUTLAND_HERBALISM: return SKILL_OUTLAND_HERBALISM; + case LOCKTYPE_NORTHREND_HERBALISM: return SKILL_NORTHREND_HERBALISM; + case LOCKTYPE_CATACLYSM_HERBALISM: return SKILL_CATACLYSM_HERBALISM; + case LOCKTYPE_PANDARIA_HERBALISM: return SKILL_PANDARIA_HERBALISM; + case LOCKTYPE_DRAENOR_HERBALISM: return SKILL_DRAENOR_HERBALISM; + case LOCKTYPE_LEGION_HERBALISM: return SKILL_LEGION_HERBALISM; + case LOCKTYPE_KUL_TIRAN_HERBALISM: return SKILL_KUL_TIRAN_HERBALISM; + case LOCKTYPE_CLASSIC_MINING: return SKILL_MINING_2; + case LOCKTYPE_OUTLAND_MINING: return SKILL_OUTLAND_MINING; + case LOCKTYPE_NORTHREND_MINING: return SKILL_NORTHREND_MINING; + case LOCKTYPE_CATACLYSM_MINING: return SKILL_CATACLYSM_MINING; + case LOCKTYPE_PANDARIA_MINING: return SKILL_PANDARIA_MINING; + case LOCKTYPE_DRAENOR_MINING: return SKILL_DRAENOR_MINING; + case LOCKTYPE_LEGION_MINING: return SKILL_LEGION_MINING; + case LOCKTYPE_KUL_TIRAN_MINING: return SKILL_KUL_TIRAN_MINING; default: break; } return SKILL_NONE; 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*/) |