mirror of
https://github.com/EQEmu/Server.git
synced 2026-05-17 03:08:26 +00:00
Fix haste caps
Before these were mostly guess work, now based on what clients report since they do their own calculations so are most likely correct.
This commit is contained in:
+25
-16
@@ -2875,33 +2875,42 @@ uint32 Mob::GetZoneID() const {
|
||||
}
|
||||
|
||||
int Mob::GetHaste() {
|
||||
int h = spellbonuses.haste + spellbonuses.hastetype2 + itembonuses.haste;
|
||||
int h = spellbonuses.haste + spellbonuses.hastetype2;
|
||||
int cap = 0;
|
||||
int overhaste = 0;
|
||||
int level = GetLevel();
|
||||
|
||||
if(level < 30) { // Rogean: Are these caps correct? Will use for now.
|
||||
cap = 50;
|
||||
} else if(level < 50) {
|
||||
cap = 74;
|
||||
} else if(level < 55) {
|
||||
cap = 84;
|
||||
} else if(level < 60) {
|
||||
cap = 94;
|
||||
} else {
|
||||
// 26+ no cap, 1-25 10
|
||||
if (level > 25) // 26+
|
||||
h += itembonuses.haste;
|
||||
else // 1-25
|
||||
h += itembonuses.haste > 10 ? 10 : itembonuses.haste;
|
||||
|
||||
// 60+ 100, 51-59 85, 1-50 level+25
|
||||
if (level > 59) // 60+
|
||||
cap = RuleI(Character, HasteCap);
|
||||
}
|
||||
else if (level > 50) // 51-59
|
||||
cap = 85;
|
||||
else // 1-50
|
||||
cap = level + 25;
|
||||
|
||||
if(h > cap) h = cap;
|
||||
if(h > cap)
|
||||
h = cap;
|
||||
|
||||
h += spellbonuses.hastetype3;
|
||||
// 51+ 25 (despite there being higher spells...), 1-50 10
|
||||
if (level > 50) // 51+
|
||||
overhaste = spellbonuses.hastetype3 > 25 ? 25 : spellbonuses.hastetype3;
|
||||
else // 1-50
|
||||
overhaste = spellbonuses.hastetype3 > 10 ? 10 : spellbonuses.hastetype3;
|
||||
|
||||
h += overhaste;
|
||||
h += ExtraHaste; //GM granted haste.
|
||||
|
||||
if (spellbonuses.inhibitmelee){
|
||||
if (spellbonuses.inhibitmelee) {
|
||||
if (h >= 0)
|
||||
h -= spellbonuses.inhibitmelee;
|
||||
|
||||
else
|
||||
h -=((100+h)*spellbonuses.inhibitmelee/100);
|
||||
h -= ((100 + h) * spellbonuses.inhibitmelee / 100);
|
||||
}
|
||||
|
||||
return(h);
|
||||
|
||||
Reference in New Issue
Block a user