diff --git a/src/game/DBCStructure.h b/src/game/DBCStructure.h index e281472a0..c78db7c99 100644 --- a/src/game/DBCStructure.h +++ b/src/game/DBCStructure.h @@ -1289,6 +1289,9 @@ struct SpellEntry uint32 runeCostID; // 229 m_runeCostID //uint32 spellMissileID; // 230 m_spellMissileID not used + // helpers + int32 CalculateSimpleValue(uint8 eff) const { return EffectBasePoints[eff]+int32(EffectBaseDice[eff]); } + private: // prevent creating custom entries (copy data from original in fact) SpellEntry(SpellEntry const&); // DON'T must have implementation diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index 45fa66be7..05a5c7b99 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -291,7 +291,7 @@ void Spell::EffectEnvirinmentalDMG(uint32 i) // Note: this hack with damage replace required until GO casting not implemented // environment damage spells already have around enemies targeting but this not help in case not existed GO casting support // currently each enemy selected explicitly and self cast damage, we prevent apply self casted spell bonuses/etc - damage = m_spellInfo->EffectBasePoints[i]+m_spellInfo->EffectBaseDice[i]; + damage = m_spellInfo->CalculateSimpleValue(i); m_caster->CalcAbsorbResist(m_caster,GetSpellSchoolMask(m_spellInfo), SPELL_DIRECT_DAMAGE, damage, &absorb, &resist); @@ -4829,8 +4829,8 @@ void Spell::EffectScriptEffect(uint32 effIndex) if(!unitTarget || unitTarget->GetTypeId() != TYPEID_PLAYER || effIndex!=0) return; - uint32 spellID = m_spellInfo->EffectBasePoints[0] + 1; - uint32 questID = m_spellInfo->EffectBasePoints[1] + 1; + uint32 spellID = m_spellInfo->CalculateSimpleValue(0); + uint32 questID = m_spellInfo->CalculateSimpleValue(1); if( ((Player*)unitTarget)->GetQuestStatus(questID) == QUEST_STATUS_COMPLETE && !((Player*)unitTarget)->GetQuestRewardStatus (questID) ) unitTarget->CastSpell(unitTarget, spellID, true); diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp index 7ef35a593..7fd3d1a8d 100644 --- a/src/game/SpellMgr.cpp +++ b/src/game/SpellMgr.cpp @@ -122,7 +122,8 @@ int32 CompareAuraRanks(uint32 spellId_1, uint32 effIndex_1, uint32 spellId_2, ui if (spellId_1 == spellId_2) return 0; int32 diff = spellInfo_1->EffectBasePoints[effIndex_1] - spellInfo_2->EffectBasePoints[effIndex_2]; - if (spellInfo_1->EffectBasePoints[effIndex_1]+1 < 0 && spellInfo_2->EffectBasePoints[effIndex_2]+1 < 0) return -diff; + if (spellInfo_1->CalculateSimpleValue(effIndex_1) < 0 && spellInfo_2->CalculateSimpleValue(effIndex_2) < 0) + return -diff; else return diff; } @@ -339,7 +340,7 @@ bool IsPositiveEffect(uint32 spellId, uint32 effIndex) case SPELL_AURA_MOD_DAMAGE_DONE: // dependent from bas point sign (negative -> negative) case SPELL_AURA_MOD_HEALING_DONE: { - if(spellproto->EffectBasePoints[effIndex]+int32(spellproto->EffectBaseDice[effIndex]) < 0) + if(spellproto->CalculateSimpleValue(effIndex) < 0) return false; break; } @@ -437,7 +438,7 @@ bool IsPositiveEffect(uint32 spellId, uint32 effIndex) switch(spellproto->EffectMiscValue[effIndex]) { case SPELLMOD_COST: // dependent from bas point sign (negative -> positive) - if(spellproto->EffectBasePoints[effIndex]+int32(spellproto->EffectBaseDice[effIndex]) > 0) + if(spellproto->CalculateSimpleValue(effIndex) > 0) return false; break; default: @@ -445,11 +446,11 @@ bool IsPositiveEffect(uint32 spellId, uint32 effIndex) } } break; case SPELL_AURA_MOD_HEALING_PCT: - if(spellproto->EffectBasePoints[effIndex]+int32(spellproto->EffectBaseDice[effIndex]) < 0) + if(spellproto->CalculateSimpleValue(effIndex) < 0) return false; break; case SPELL_AURA_MOD_SKILL: - if(spellproto->EffectBasePoints[effIndex]+int32(spellproto->EffectBaseDice[effIndex]) < 0) + if(spellproto->CalculateSimpleValue(effIndex) < 0) return false; break; case SPELL_AURA_FORCE_REACTION: @@ -1774,10 +1775,10 @@ void SpellMgr::LoadSpellLearnSkills() SpellLearnSkillNode dbc_node; dbc_node.skill = entry->EffectMiscValue[i]; if ( dbc_node.skill != SKILL_RIDING ) - dbc_node.value = 1; + dbc_node.value = 1; else - dbc_node.value = (entry->EffectBasePoints[i]+1)*75; - dbc_node.maxvalue = (entry->EffectBasePoints[i]+1)*75; + dbc_node.value = entry->CalculateSimpleValue(i)*75; + dbc_node.maxvalue = entry->CalculateSimpleValue(i)*75; mSpellLearnSkills[spell] = dbc_node; ++dbc_count; @@ -2095,7 +2096,7 @@ void SpellMgr::LoadSpellPetAuras() continue; } - PetAura pa(pet, aura, spellInfo->EffectImplicitTargetA[i] == TARGET_PET, spellInfo->EffectBasePoints[i] + spellInfo->EffectBaseDice[i]); + PetAura pa(pet, aura, spellInfo->EffectImplicitTargetA[i] == TARGET_PET, spellInfo->CalculateSimpleValue(i)); mSpellPetAuraMap[spell] = pa; } diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 739f05c8b..24d9ca6fa 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -6367,7 +6367,7 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, Aura* triggeredB } // percent stored in effect 1 (class scripts) base points int32 cost = originalSpell->manaCost + originalSpell->ManaCostPercentage * GetCreateMana() / 100; - basepoints0 = cost*(auraSpellInfo->EffectBasePoints[1]+1)/100; + basepoints0 = cost*auraSpellInfo->CalculateSimpleValue(1)/100; trigger_spell_id = 20272; target = this; } diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index f4fdd3594..c7621b63f 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "7582" + #define REVISION_NR "7583" #endif // __REVISION_NR_H__