mirror of
https://github.com/mangosfour/server.git
synced 2025-12-31 13:37:07 +00:00
Use spell_bonus_data table for store custom damage/healing bonus coefficients
Big thanks ApoC for help create table. Fixed bonuses for stacked periodic Warning need test all coefficients for correct bonus amount. TODO: use this table for absorb bonus calculation use this table for melee spells AP bonuses use chain multipler in final damage/heal amount Signed-off-by: DiSlord <dislord@nomail.com>
This commit is contained in:
parent
6d9a099a19
commit
4ecfbcc2f5
13 changed files with 711 additions and 402 deletions
|
|
@ -580,7 +580,15 @@ struct SpellProcEventEntry
|
|||
uint32 cooldown; // hidden cooldown used for some spell proc events, applied to _triggered_spell_
|
||||
};
|
||||
|
||||
struct SpellBonusEntry
|
||||
{
|
||||
float direct_damage;
|
||||
float dot_damage;
|
||||
float ap_bonus;
|
||||
};
|
||||
|
||||
typedef UNORDERED_MAP<uint32, SpellProcEventEntry> SpellProcEventMap;
|
||||
typedef UNORDERED_MAP<uint32, SpellBonusEntry> SpellBonusMap;
|
||||
|
||||
#define ELIXIR_BATTLE_MASK 0x1
|
||||
#define ELIXIR_GUARDIAN_MASK 0x2
|
||||
|
|
@ -786,6 +794,23 @@ class SpellMgr
|
|||
|
||||
static bool IsSpellProcEventCanTriggeredBy( SpellProcEventEntry const * spellProcEvent, uint32 EventProcFlag, SpellEntry const * procSpell, uint32 procFlags, uint32 procExtra, bool active);
|
||||
|
||||
// Spell bonus data
|
||||
SpellBonusEntry const* GetSpellBonusData(uint32 spellId) const
|
||||
{
|
||||
// Lookup data
|
||||
SpellBonusMap::const_iterator itr = mSpellBonusMap.find(spellId);
|
||||
if( itr != mSpellBonusMap.end( ) )
|
||||
return &itr->second;
|
||||
// Not found, try lookup for 1 spell rank if exist
|
||||
if (uint32 rank_1 = GetFirstSpellInChain(spellId))
|
||||
{
|
||||
SpellBonusMap::const_iterator itr = mSpellBonusMap.find(rank_1);
|
||||
if( itr != mSpellBonusMap.end( ) )
|
||||
return &itr->second;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// Spell target coordinates
|
||||
SpellTargetPosition const* GetSpellTargetPosition(uint32 spell_id) const
|
||||
{
|
||||
|
|
@ -954,6 +979,7 @@ class SpellMgr
|
|||
void LoadSpellAffects();
|
||||
void LoadSpellElixirs();
|
||||
void LoadSpellProcEvents();
|
||||
void LoadSpellBonusess();
|
||||
void LoadSpellTargetPositions();
|
||||
void LoadSpellThreats();
|
||||
void LoadSkillLineAbilityMap();
|
||||
|
|
@ -970,6 +996,7 @@ class SpellMgr
|
|||
SpellAffectMap mSpellAffectMap;
|
||||
SpellElixirMap mSpellElixirs;
|
||||
SpellProcEventMap mSpellProcEventMap;
|
||||
SpellBonusMap mSpellBonusMap;
|
||||
SkillLineAbilityMap mSkillLineAbilityMap;
|
||||
SpellPetAuraMap mSpellPetAuraMap;
|
||||
PetLevelupSpellMap mPetLevelupSpellMap;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue