mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-12 17:51:28 +00:00
Fixed overflow on AC and ATK values that can go out of range.
This commit is contained in:
parent
29079a7ec2
commit
8efc652c10
@ -2,6 +2,7 @@ EQEMu Changelog (Started on Sept 24, 2003 15:50)
|
|||||||
-------------------------------------------------------
|
-------------------------------------------------------
|
||||||
== 11/03/2014 ==
|
== 11/03/2014 ==
|
||||||
Secrets: Fixed an overflow in melee lifetap calculations (int16 vs int32)
|
Secrets: Fixed an overflow in melee lifetap calculations (int16 vs int32)
|
||||||
|
Secrets: Fixed overflow on AC and ATK values that can go out of range.
|
||||||
|
|
||||||
== 11/02/2014 ==
|
== 11/02/2014 ==
|
||||||
Akkadius: Added out of range checking for Spell Save/Loads
|
Akkadius: Added out of range checking for Spell Save/Loads
|
||||||
|
|||||||
@ -665,7 +665,7 @@ void Mob::MeleeMitigation(Mob *attacker, int32 &damage, int32 minhit, ExtraAttac
|
|||||||
////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////
|
||||||
// Scorpious2k: Include AC in the calculation
|
// Scorpious2k: Include AC in the calculation
|
||||||
// use serverop variables to set values
|
// use serverop variables to set values
|
||||||
int myac = GetAC();
|
int32 myac = GetAC();
|
||||||
if(opts) {
|
if(opts) {
|
||||||
myac *= (1.0f - opts->armor_pen_percent);
|
myac *= (1.0f - opts->armor_pen_percent);
|
||||||
myac -= opts->armor_pen_flat;
|
myac -= opts->armor_pen_flat;
|
||||||
@ -696,7 +696,7 @@ void Mob::MeleeMitigation(Mob *attacker, int32 &damage, int32 minhit, ExtraAttac
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (acreduction>0) {
|
if (acreduction>0) {
|
||||||
damage -= (int) (GetAC() * acreduction/100.0f);
|
damage -= (int32) (GetAC() * acreduction/100.0f);
|
||||||
}
|
}
|
||||||
if (acrandom>0) {
|
if (acrandom>0) {
|
||||||
damage -= (myac * MakeRandomInt(0, acrandom) / 10000);
|
damage -= (myac * MakeRandomInt(0, acrandom) / 10000);
|
||||||
|
|||||||
@ -403,9 +403,9 @@ public:
|
|||||||
|
|
||||||
virtual void CalcBonuses();
|
virtual void CalcBonuses();
|
||||||
//these are all precalculated now
|
//these are all precalculated now
|
||||||
inline virtual int16 GetAC() const { return AC; }
|
inline virtual int32 GetAC() const { return AC; }
|
||||||
inline virtual int16 GetATK() const { return ATK + itembonuses.ATK + spellbonuses.ATK + ((GetSTR() + GetSkill(SkillOffense)) * 9 / 10); }
|
inline virtual int32 GetATK() const { return ATK + itembonuses.ATK + spellbonuses.ATK + ((GetSTR() + GetSkill(SkillOffense)) * 9 / 10); }
|
||||||
inline virtual int16 GetATKBonus() const { return itembonuses.ATK + spellbonuses.ATK; }
|
inline virtual int32 GetATKBonus() const { return itembonuses.ATK + spellbonuses.ATK; }
|
||||||
inline virtual int GetHaste() const { return Haste; }
|
inline virtual int GetHaste() const { return Haste; }
|
||||||
int GetRawACNoShield(int &shield_ac) const;
|
int GetRawACNoShield(int &shield_ac) const;
|
||||||
|
|
||||||
|
|||||||
@ -340,9 +340,9 @@ public:
|
|||||||
inline Mob* GetTarget() const { return target; }
|
inline Mob* GetTarget() const { return target; }
|
||||||
virtual void SetTarget(Mob* mob);
|
virtual void SetTarget(Mob* mob);
|
||||||
virtual inline float GetHPRatio() const { return max_hp == 0 ? 0 : ((float)cur_hp/max_hp*100); }
|
virtual inline float GetHPRatio() const { return max_hp == 0 ? 0 : ((float)cur_hp/max_hp*100); }
|
||||||
inline virtual int16 GetAC() const { return AC + itembonuses.AC + spellbonuses.AC; }
|
inline virtual int32 GetAC() const { return AC + itembonuses.AC + spellbonuses.AC; }
|
||||||
inline virtual int16 GetATK() const { return ATK + itembonuses.ATK + spellbonuses.ATK; }
|
inline virtual int32 GetATK() const { return ATK + itembonuses.ATK + spellbonuses.ATK; }
|
||||||
inline virtual int16 GetATKBonus() const { return itembonuses.ATK + spellbonuses.ATK; }
|
inline virtual int32 GetATKBonus() const { return itembonuses.ATK + spellbonuses.ATK; }
|
||||||
inline virtual int16 GetSTR() const { return STR + itembonuses.STR + spellbonuses.STR; }
|
inline virtual int16 GetSTR() const { return STR + itembonuses.STR + spellbonuses.STR; }
|
||||||
inline virtual int16 GetSTA() const { return STA + itembonuses.STA + spellbonuses.STA; }
|
inline virtual int16 GetSTA() const { return STA + itembonuses.STA + spellbonuses.STA; }
|
||||||
inline virtual int16 GetDEX() const { return DEX + itembonuses.DEX + spellbonuses.DEX; }
|
inline virtual int16 GetDEX() const { return DEX + itembonuses.DEX + spellbonuses.DEX; }
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user