Core/Spells: Updated gathering profession skills

This commit is contained in:
Shauren
2018-12-07 19:09:10 +01:00
parent 83bc1cbe64
commit 8e1d5d5143
3 changed files with 99 additions and 10 deletions

View File

@@ -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

View File

@@ -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;

View File

@@ -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*/)