[Skills] Make Tracking Skill Configurable (#1784)

Added 1 rule per class that defines tracking distance multiplier for that class
Kept the defaults of 12 for ranger, 10 for druid, and 7 for bard

Created 1 method for determining class tracking distance multiplier
Created 1 method for determining if a class can track, based on multiplier

Updated tracking logic to use these methods to determine whether a tracking
packet should and can be sent or not.
This commit is contained in:
mmcgarvey
2021-12-23 14:57:53 -05:00
committed by GitHub
parent 8c78a19c95
commit 4fbb98a5f7
5 changed files with 70 additions and 10 deletions
+43
View File
@@ -10869,3 +10869,46 @@ uint16 Client::LearnDisciplines(uint8 min_level, uint8 max_level)
return learned_disciplines;
}
uint16 Client::GetClassTrackingDistanceMultiplier(uint16 class_) {
switch (class_) {
case WARRIOR:
return RuleI(Character, WarriorTrackingDistanceMultiplier);
case CLERIC:
return RuleI(Character, ClericTrackingDistanceMultiplier);
case PALADIN:
return RuleI(Character, PaladinTrackingDistanceMultiplier);
case RANGER:
return RuleI(Character, RangerTrackingDistanceMultiplier);
case SHADOWKNIGHT:
return RuleI(Character, ShadowKnightTrackingDistanceMultiplier);
case DRUID:
return RuleI(Character, DruidTrackingDistanceMultiplier);
case MONK:
return RuleI(Character, MonkTrackingDistanceMultiplier);
case BARD:
return RuleI(Character, BardTrackingDistanceMultiplier);
case ROGUE:
return RuleI(Character, RogueTrackingDistanceMultiplier);
case SHAMAN:
return RuleI(Character, ShamanTrackingDistanceMultiplier);
case NECROMANCER:
return RuleI(Character, NecromancerTrackingDistanceMultiplier);
case WIZARD:
return RuleI(Character, WizardTrackingDistanceMultiplier);
case MAGICIAN:
return RuleI(Character, MagicianTrackingDistanceMultiplier);
case ENCHANTER:
return RuleI(Character, EnchanterTrackingDistanceMultiplier);
case BEASTLORD:
return RuleI(Character, BeastlordTrackingDistanceMultiplier);
case BERSERKER:
return RuleI(Character, BerserkerTrackingDistanceMultiplier);
default:
return 0;
}
}
bool Client::CanThisClassTrack() {
return (GetClassTrackingDistanceMultiplier(GetClass()) > 0) ? true : false;
}