aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2018-12-07 19:09:10 +0100
committerShauren <shauren.trinity@gmail.com>2018-12-07 19:09:10 +0100
commit8e1d5d51433253dfb66f5a4355824d64e9a347a0 (patch)
tree558b6e51cc5d4b4e5e6080d081ff8bbefccad2e1 /src
parent83bc1cbe647cf312bcffa937ff2224cf214af7ef (diff)
Core/Spells: Updated gathering profession skills
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Player/Player.cpp24
-rw-r--r--src/server/game/Miscellaneous/SharedDefines.h48
-rw-r--r--src/server/game/Spells/SpellEffects.cpp37
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*/)