mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Core/Spells: Updated gathering profession skills
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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*/)
|
||||
|
||||
Reference in New Issue
Block a user