mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-13 06:21:28 +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:
parent
76ec6e4da2
commit
c70ea4a621
@ -2,6 +2,7 @@ EQEMu Changelog (Started on Sept 24, 2003 15:50)
|
||||
-------------------------------------------------------
|
||||
== 12/11/2013 ==
|
||||
demonstar55: Fixed issue with crippling blow from berserker frenzy not actually doing anything
|
||||
demonstar55: Fix haste caps
|
||||
|
||||
== 12/04/2013 ==
|
||||
demonstar55: Fixed SpellType_Charm case in AICastSpell
|
||||
|
||||
@ -1340,45 +1340,46 @@ int16 Client::CalcCHA() {
|
||||
}
|
||||
|
||||
int Client::CalcHaste() {
|
||||
int h = spellbonuses.haste + spellbonuses.hastetype2 + itembonuses.haste;
|
||||
int h = spellbonuses.haste + spellbonuses.hastetype2;
|
||||
int cap = 0;
|
||||
int overhaste = 0;
|
||||
int level = GetLevel();
|
||||
/*
|
||||
if(disc_inuse == discBlindingSpeed) {
|
||||
if(!disc_elapse.Check(false)) {
|
||||
h += 20; //this ammount is completely unknown
|
||||
} else {
|
||||
disc_inuse = discNone;
|
||||
}
|
||||
} */
|
||||
|
||||
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;
|
||||
|
||||
cap = mod_client_haste_cap(cap);
|
||||
|
||||
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.
|
||||
|
||||
h = mod_client_haste(h);
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
Haste = h;
|
||||
|
||||
41
zone/mob.cpp
41
zone/mob.cpp
@ -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);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user