[7265] Move feral bonus get to struct ItemPrototype

Signed-off-by: DiSlord <dislord@nomail.com>
This commit is contained in:
DiSlord 2009-02-11 02:03:13 +03:00
parent 4792d20b4e
commit bb7d68347f
3 changed files with 29 additions and 10 deletions

View file

@ -628,6 +628,29 @@ struct ItemPrototype
}
uint32 GetMaxStackSize() const { return Stackable > 0 ? uint32(Stackable) : uint32(0x7FFFFFFF-1); }
float getDPS() const
{
if (Delay == 0)
return 0;
float temp = 0;
for (int i=0;i<5;++i)
temp+=Damage[i].DamageMin + Damage[i].DamageMax;
return temp*500/Delay;
}
int32 getFeralBonus() const
{
// 0x02A5F3 - is mask for Melee weapon from ItemSubClassMask.dbc
if (Class == ITEM_CLASS_WEAPON && (1<<SubClass)&0x02A5F3)
{
int32 bonus = int32(getDPS()*14.0f) - 767;
if (bonus < 0)
return 0;
return bonus;
}
return 0;
}
};
struct ItemLocale

View file

@ -6806,16 +6806,12 @@ void Player::_ApplyItemBonuses(ItemPrototype const *proto, uint8 slot, bool appl
SetBaseWeaponDamage(attType, MAXDAMAGE, damage);
}
if (proto->Class == ITEM_CLASS_WEAPON && proto->Delay)
// Druids get feral AP bonus from weapon dps
if(getClass() == CLASS_DRUID)
{
// Druids get feral AP bonus from weapon dps
if(getClass() == CLASS_DRUID && (slot==EQUIPMENT_SLOT_MAINHAND || slot==EQUIPMENT_SLOT_OFFHAND))
{
float dps = (proto->Damage[0].DamageMin + proto->Damage[0].DamageMax)/(2*proto->Delay/1000.0f);
int32 feral_bonus = int32(dps*14.0f) - 767;
if (feral_bonus > 0)
ApplyFeralAPBonus(feral_bonus, apply);
}
int32 feral_bonus = proto->getFeralBonus();
if (feral_bonus > 0)
ApplyFeralAPBonus(feral_bonus, apply);
}
if(!IsUseEquipedWeapon(slot==EQUIPMENT_SLOT_MAINHAND))

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__
#define __REVISION_NR_H__
#define REVISION_NR "7264"
#define REVISION_NR "7265"
#endif // __REVISION_NR_H__